LINGUAGGIO E LOGICA DELLE MACCHINE
LINGUAGGIO E LOGICA DELLE MACCHINE
Obiettivi formativi
Il corso fornisce le nozioni fondamentali per comprendere i principi di funzionamento delle moderne tecnologie digitali e permette agli studenti di sviluppare, tramite tecniche di programmazione, il pensiero computazionale, processo logico-creativo che permette di risolvere problemi complessi in maniera efficiente. Gli obiettivi del corso possono quindi suddividersi in due categorie legate ad aspetti teorici o aspetti pratici, come descritti di seguito.
- Aspetti teorici: comprendere il concetto di algoritmo e i principi della programmazione; comprendere la rappresentazione dell’informazione nel calcolatore elettronico, mettendo in relazione il sistema di numerazione binario con le caratteristiche fisiche dei circuiti digitali (che rendono molto conveniente la gestione di due soli valori); comprendere l’algebra Booleana in relazione alla rappresentazione delle espressioni booleane in termini di circuiti logici; comprendere la struttura ed i principi di funzionamento di un calcolatore elettronico in termini di architettura hardware e software; comprendere le principali caratteristiche delle moderne reti di calcolatori, i protocolli di comunicazione e l’architettura del web; comprendere il concetto di database e le potenzialità dei Big Data come strumento di supporto alle decisioni; comprendere i concetti chiave della sicurezza informatica; comprendere i rischi che derivano dall’uso di software malevolo e dall’esposizione di informazioni sensibili sia aziendali sia personali.
- Aspetti pratici: portare avanti attività di programmazione di livello base, utili a sviluppare un approccio creativo ed efficiente alla risoluzione di problemi; comprendere i diversi tipi e strutture di dati; comprendere i concetti di costanti e variabili; saper scrivere semplici programmi secondo una logica sequenziale; saper scrivere programmi che prevedono flussi alternativi tramite uso di istruzioni condizionali; saper utilizzare istruzioni iterative per ripetere l’esecuzione di porzioni di codice; saper utilizzare e definire nuove funzioni.
Risultati di apprendimento attesi
Conoscenza e comprensione:
il corso fornisce le nozioni fondamentali per comprendere i principi di funzionamento delle moderne tecnologie digitali e permette agli studenti di sviluppare, tramite tecniche di programmazione, il pensiero computazionale, processo logico-creativo che permette di risolvere problemi complessi in maniera efficiente. Nella parte pratica del corso gli studenti avranno modo di comprendere il funzionamento di un programma software e saranno in grado di scrivere un semplice programma usando Python.
Capacità di applicare conoscenza e comprensione:
Gli studenti saranno in grado di:
• riconoscere ed analizzare le componenti principali di un'infrastruttura software
• identificare minacce e rischi nell'utilizzo delle reti come Internet
• progettare e creare semplici programmi software
• scrivere programmi che usano cicli per ripetere l'esecuzione di blocchi di codice
Autonomia di giudizio:
gli studenti matureranno capacità di analizzare i sistemi digitali e il modo in cui vengono utilizzati all'interno di un'organizzaione. Ci si aspetta siano in grado di discutere e valutare gli elementi essenziali di un'infrastruttura tecnologia e nella sicurezza di un computer e delle reti; saranno in grado di comprendere le minacce nell'uso del computer e nella navigazione in Internet.
Abilità comunicative: lo studente avrà maturato la capacità di comprendere e utilizzare i principali termini e concetti di sistemi digitali. Gli studenti saranno in grado di comunicare le proprie idee, proposte, analisi e ragionamenti critici legati alle tematiche del mondo digitale in modo più efficace e appropriato.
Capacità di apprendimento: questo corso contribuisce a potenziare le capacità di comprensione degli studenti fornendo loro gli strumenti per capire come funzionano i sistemi digitali, come funzionano i linguaggi di pogrammazione, sviluppare le capacità di problem solving cimentandosi nella risoluzione di semplici problemi utilizzando il linguaggio di programmazione Python.
Contenuti Del Corso
Il programma è composto da una parte teorica (lezioni tradizionali) e da una parte pratica (esercitazioni in aula con linguaggio di programmazione Python). I contenuti di ciascuna parte sono descritti di seguito.
Parte teorica:
- Algoritmi.
- Sistema binario e algebra di Boole.
- Architetture hardware e software.
- Reti, Internet, protocolli di comunicazione e servizi web.
- Database/DBMS e Big Data
- Crittografia, sicurezza delle informazioni e privacy.
Parte pratica:
- Introduzione a Python.
- Tipi e strutture dati.
- Costanti e variabili.
- Strutture di controllo condizionali.
- Strutture di controllo iterative.
- Functions.
Testi Di Riferimento
Il materiale è reso disponibile sulla piattaforma di e-learning all’interno della quale gli studenti troveranno dispense e slide aggiornate e le indicazioni del testo di riferimento.
Metodologie Didattiche
Di seguito le metodologie didattiche utilizzate durante il corso:
- didattica frontale.
- esercitazioni in aula.
Modalità di verifica dell'apprendimento
La valutazione sarà basata su una prova scritta. Nei casi in cui il numero di studenti lo consenta, la prova potrà essere sostenuta in forma orale. Il 50% della valutazione verrà data parte di teoria, il 50% della valutazione verrà dato dalla parte pratica.
Criteri per l’assegnazione dell’elaborato finale
L’elaborato finale sarà assegnato a tutti gli studenti, previa specifica richiesta inoltrata al docente, che dimostrano un serio e motivato interesse ad approfondire le tematiche affrontate dal programma del corso.
Il syllabus affronta temi collegati alla sostenibilità?
no
Settimana 1
Sessione online
Teoria
- Introduzione al corso.
- Algoritmi.
Settimana 2
Sessione online
Pratica (usando il linguaggio Python)
- Introduzione al pensiero computazionale.
- Introduzione a Python (ed in generale ai linguaggi di programmazione).
- Concetti di costanti e variabili.
- Scrivere il primo programma (e.g., “Hello World!”).
Settimana 3
Sessione online
Teoria
- Sistema binario e algebra di Boole.
- Architetture hardware e software.
Settimana 4
Sessione online
Pratica in linguaggio Python
- Concetti di tipi di dato (interi, numeri in virgola mobile, stringhe di caratteri).
- Operatori aritmetici in Python.
- Operatori su stringhe di caratteri in Python.
Esercizi in Python, e.g. (ma non limitati a):
- Effettuare conversione tra tipi di dato.
- Impiegare Python come una calcolatrice.
Settimana 5
Sessione online
Teoria
- Reti di calcolatori e Internet.
- Protocolli di comunicazione. Il Web.
Settimana 6
Pratica in linguaggio Python
- Introduzione del tipo di logico o booleano in Python.
- Istruzioni condizionali (if, elif, else).
Esercizi in Python su espressioni booleane.
Esercizi in Python su istruzioni condizionali.
E.g., (ma non limitati a):
- Calcolo del massimo e del minimo di un insieme numerico
Settimana 7
Sessione online
Teoria
- Database/DBMS e Big Data.
Settimana 8
Sessione online
Pratica in linguaggio Python
- Istruzioni iterative (for, while).
- Aver compreso le tre componenti di base degli algoritmi: sequenza, selezione, iterazione.
Esercizi in Python facenti uso di ciclo for e ciclo while. E.g. (ma non limitati a):
- Algoritmi di ordinamento (sorting) di un insieme numerico e di pattern matching.
Settimana 9
Sessione online
Teoria
- Sicurezza delle informazioni e privacy.
- Crittografia (simmetrica e asimmetrica).
- Firma Digitale.
Settimana 10
Sessione online
Pratica in linguaggio Python
- Liste e dizionari in Python.
Esercizi in Python facenti uso di istruzioni iterative e liste. E.g. (ma non limitati a):
- Costruire gli anagrammi di una parola.
- Estrarre gli anagrammi di senso compiuto.
Settimana 11
Sessione online
Pratica in linguaggio Python
- Definizione di Funzioni in Python.
Esercizi in Python che richiedono la definizione di nuove funzioni.
Settimana 12
Sessione online
Esercitazione conclusiva in cui si richiede agli studenti di risolvere esercizi che incorporano tutte le conoscenze acquisite.