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.

Prerequisiti

Nessun prerequisito.

Risultati di apprendimento attesi

Conoscenza e comprensione: gli studenti acquisiranno conoscenze di base inerenti alle tecnologie digitali, alla logica booleana e alla programmazione; in particolare, gli studenti avranno chiari i concetti di reti di calcolatori, database, sicurezza informatica. Gli studenti acquisiranno anche una conoscenza di base del linguaggio di programmazione Python, delle strutture dei dati e delle principali istruzioni offerte dal linguaggio. Capacità di applicare conoscenza e comprensione: lo studente sarà in grado di effettuare un ragionamento computazionale per la risoluzione di problemi logici binari e per la realizzazione di programmi, tramite l'utilizzo del linguaggio Python. Autonomia di giudizio: lo studente avrà sviluppato una consapevolezza critica tale da consentire la formulazione di giudizi autonomi sulle tecnologie digitali, e sul loro impiego, oltre ad avere acquisito una familiarità con le operazioni logiche di base dell’algebra di Boole. Abilità comunicative: lo studente avrà maturato la capacità di comunicare adottando un vocabolario ed una terminologia tecnica inerente agli argomenti trattati. Capacità di apprendimento: lo studente sarà in grado di continuare ad approfondire autonomamente le tematiche legate all’impiego delle tecnologie digitali, una volta acquisita l'impostazione di base offerta dal corso.

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

Metodologie Didattiche

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.

Modalità di verifica dell'apprendimento

Di seguito le metodologie didattiche utilizzate durante il corso: - didattica frontale. - esercitazioni in aula.

Criteri per l’assegnazione dell’elaborato finale

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.

Il syllabus affronta temi collegati alla sostenibilità?

I temi del syllabus sono prliminari per potere individuare l'impatto delle decisioni automatizzate su diritti e libertà individuali.

Settimana 1

Teoria - Introduzione alla logica proposizionale. - Tabelle di verità. - Esempi

Settimana 2

Teoria - Sintesi logica. - Equivalenze e leggi di De Morgan -Inferenze logiche elementari

Settimana 3

Pratica Esercitazione di logica

Settimana 4

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

Teoria -Architettura di un calcolatore

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

Teoria - Reti di calcolatori e Internet. - Protocolli di comunicazione. Il Web.

Settimana 8

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

Teoria - Architetture dei database

Settimana 10

Pratica in linguaggio Python Esercizi in Python facenti uso di istruzioni iterative e condizionali. E.g. (ma non limitati a): - Costruire gli anagrammi di una parola. - Estrarre gli anagrammi di senso compiuto. - Definizione di Funzioni in Python. Esercizi in Python che richiedono la definizione di nuove funzioni.

Settimana 11

Teoria - Sicurezza delle informazioni e privacy. - Crittografia (simmetrica e asimmetrica). - Firma Digitale.

Settimana 12

Esercitazione conclusiva in cui si richiede agli studenti di risolvere esercizi che incorporano tutte le conoscenze acquisite.