PROGRAMMA DELLE ATTIVITA’
DIDATTICHE SVOLTE
PRO 7-03 MODULO 34
Rev. 02 Data 24-05-10 Pagina 1 di 1
PROGRAMMA DELLE ATTIVITA’ SVOLTE NELL’ANNO SCOLASTICO 2018/19
MATERIA INFORMATICA
DOCENTE ANTONIO GIUSA
CLASSE IV E
ARGOMENTI SVOLTI
Software engineering: Algoritmi distribuiti e programmazione concorrente: résumé su OS, thread e processi; light weight process;
meccanismi di IPC dei sistemi UNIX-like, tracing; syscall ptrace; struttura tipica di un debugger; problemi classici dell’IPC: race
conditions; soluzioni per la mutual exclusion: lock, Peterson; problema producer-consumer (P-C): soluzione con sleep/wakeup; soluzioni di Dijkstra, Dekker e Peterson; semafori, mutex; istruzioni di tipo TSL; problemi di race condition con i semafori; message passing;
Testing del software: tecniche di testing (strutturale e funzionale); testing strutturale; flow testing; control flow testing; path coverage;
multiple condition coverage; branch coverage; statement coverage; criteri di scelta dei case test; esempi di applicazione del white box testing; complessità ciclomatica di un grafo (metrica di McCabe).
Programmazione concorrente con OpenMP: metodi di parallelizzazione e sull'uso di variabili shared e private; dipendenze dei dati;
clausole parallel e end parallel; parallelizzazione coarse-grained; direttive di controllo dei thread: barrier, master, single, critical, ordered;
clausole default, firstprivate e lastprivate; riduzioni e clausola reduction; funzioni num_threads(), omp_get_thread_num(), omp_get_num_threads(), omp_set_num_threads(nthreads), schedule(...) (e tipi di scheduling); compilazione condizionale variabili d'ambiente; buone pratiche per l'uso corretto della parallelizzazione.
Stack buffer overflow: struttura di stack e heap; indirizzo di rientro (ret), ebp ed esp; buffer overflow e iniezione di codice.
Architettura: Architetture CISC e RISC: definizione di performance; ottimizzazione della performance; architetture RISC, storia e peculiarità; ISA RISC; ISA del PDP-8; stack-based CPU; accumulator-based CPU; load/store based CPU; complessità degli ISA; ISA CISC; confronto tra CISC e RISC; architetture reali; ottimizzazione di una pipeline RISC; prodotto scalare in C e in assembly CISC e RISC.
Linguaggi di programmazione: C++: Puntatori e aritmetica dei puntatori; variabili globali e locali; scope; variabili statiche; classi storage;
passaggio di parametri per valore e per riferimento; esempi; oggetti e classi; definizione di una classe; istanza di una classe; uso dei metodi di una classe; specificatori di accesso; costruttori; ereditarietà; implementazione di un tipo stack; costruttori e distruttori; liste di inizializzazione; oggetti costanti; funzioni d'accesso; funzioni membro private; costruttore di copia; distruttori; static data members;
output formattato.
Metodi numerici: frattali; dimensione di autosimilarità; insieme di Cantor; numeri complessi e rappresentazione geometrica; operazioni in campo complesso e interpretazione geometrica; mappe iterative complesse; orbite divergenti e confinate; insiemi di Julia; insieme di Mandelbrot; algoritmo per la rappresentazione grafica dell'insieme di Mandelbrot; implementazione in Netlogo; implementazione in Java di una classe Complex (numero complesso); programma Java per l'insieme di Mandelbrot che usa la classe Complex; Wolfram Mathematica: variabili; operatori matematici elementari; costanti principali; approssimazioni; funzioni matematiche comuni; uso della shell e della output history; liste, vettori, operazioni sulle liste; funzioni Plot e Plot3D; funzione Manipulate; definizione di funzioni.
Calcolo di pi greco con il metodo Monte Carlo; programmi di esempio in C e Java; calcolo di pi greco con metodo MC (implementazioni in C e Java).
Sistemi: definizioni; proprietà; classificazione; stato interno; rappresentazioni; funzione di transizione; funzione di trasformazione;
sistemi di controllo a catena aperta e a catena chiusa; retroazione; sistemi invarianti e varianti; sistemi discreti e continui; sistemi statici e dinamici; sistemi deterministici e
stocastici; sistemi combinatori e sequenziali. Automi: definizione, automi a stati finiti, funzioni di transizione e trasformazione negli automi a stati finiti, automi riconoscitori, rappresentazione degli automi a stati finiti, diagramma degli stati; stati di memoria; tabelle di transizione; automi con e senza ripetizione; automi impropri o di Mealey; automi propri o di Moore; automi senza uscite; Macchina di Turing; definizione e caratteristiche; tesi di Church – Turing; macchine di Turing per la computazione della somma, del riconoscimento di stringhe palindrome, etc.
Approfondimenti: tecninche di deep faking ed impatto sociale; agenti intelligenti; evoluzione delle CPU Intel; stack smashing; metodi per il calcolo di pi greco; architettura di una ALU; storia dei web browser; AI e assistenti digitali; crittografia a chiave privata e pubblica, principali algoritmi; Enigma: storia, funzionamento, debolezze ed implementazione in Python; reti 5G; AI, ANN, AlphaStar e Pluribus;
testing strutturale del software; IPC; fuzzy sets e logica fuzzy; AI debole e giochi combinatori.
Gli argomenti del programma sono stati presentati sia in lingua italiana che in lingua inglese.
Carrara, 6 giugno 2020
Firma del docente