Ingegneria informatica a.a. 2023-2024

  • Il corso di studi in Ingegneria Informatica si pone l'obiettivo di formare laureati con conoscenze e competenze utilizzabili sia per svolgere professioni tecnico-applicative di natura informatica, sia come base su cui innestare gli approfondimenti previsti dalla laurea di 2° livello in ingegneria informatica.

    Più che presentare specifiche tecnologie informatiche, si intende privilegiare l'acquisizione di capacità di affrontare problemi ingegneristici-informatici con un approccio sistematico ed effettivo.

    A questo scopo, oltre ad una competenza di base nelle tematiche metodologiche-operative proprie della classe (delineate sopra), i laureati dovranno avere competenze specifiche sui seguenti temi: - fondamenti dell'informatica: automi, algoritmi e linguaggi di programmazione, teoria della computabilità e complessità computazionale; - strumenti operativi per l'informatica: istallazione, configurazione, gestione di macchine, impianti, reti di comunicazione, sistemi informatici e sistemi di automazione; - applicazioni informatiche: gestione, manutenzione e sviluppo di sistemi informatici per la gestione di altri sistemi (civili, economici, industriali, avionici, satellitari, energetici, medicali, di telecomunicazioni e trasporto, di ambiente e territorio, di automazione), sistemi informativi. Il percorso formativo è articolato in due curriculai: il primo è incentrato sulle discipline informatiche; il secondo affianca alle materie di informatica tematiche legate alla robotica e l'automazione. Il primo anno è dedicato alla formazione matematica, fisica e informatica di base.

    Il secondo anno approfondisce l'informatica di base, con la teoria degli algoritmi, lo studio delle architetture dei calcolatori i sistemi operativi, e allarga la formazione ingegneristica alle materie dell'area dell'informazione e della teoria dei controlli.

    Il terzo anno aggiunge elementi sistemistici di reti, l'ingegneria del software, tecnologie web e basi di dati oltre agli argomenti propri dell'area automazione.

    E' previsto, inoltre, un tirocinio formativo e una prova finale.

  • L'ammissione al corso di laurea in ingegneria informatica richiede innanzitutto il possesso di un diploma di scuola secondaria superiore o di altro titolo di studio conseguito all'estero riconosciuto equivalente.

    L' ammissione è subordinata al possesso di una adeguata preparazione per affrontare con efficacia il corso di laurea, riguardante competenze linguistiche, conoscenze culturali e specifiche conoscenze matematiche relative alle seguenti aree: aritmetica, algebra elementare, geometria analitica, equazioni e disequazioni di primo e secondo grado, funzioni trigonometriche, logaritmiche e esponenziali.

    Il possesso delle competenze e conoscenze iniziali viene verificato mediante un test obbligatorio da svolgersi prima dell'immatricolazione. Informazioni dettagliate sulle conoscenze richieste per l'accesso e le modalità di verifica della preparazione iniziale sono definite nel Regolamento Didattico del corso di studio, dove sono altresì indicati gli obblighi formativi aggiuntivi previsti nel caso in cui la verifica non sia positiva.

  • Il Corso di Studi in Ingegneria Informatica presso l'Università di Roma Tor Vergata è articolato in due livelli: Laurea in Ingegneria Informatica (triennale), e Laurea Magistrale in Ingegneria Informatica (biennale). Il percorso di studi in Ingegneria Informatica è organizzato come segue. L'ingresso nel percorso prevede il superamento del test di ingresso (e degli eventuali corsi pre-immatricolazione, in caso di mancato superamento del test), in comune con tutta la Facoltà di Ingegneria (maggiori informazioni su: http://ing.uniroma2.it/didattica/test-di-ammissione/). Il percorso formativo inizia con la frequenza del Corso di Laurea (triennale) in Ingegneria Informatica. Una volta conseguita la Laurea, il percorso può proseguire con l'iscrizione al Corso di Laurea Magistrale (biennale) in Ingegneria Informatica, e successivamente, dopo aver conseguito la Laurea Magistrale, con l'iscrizione al Dottorato di Ricerca (triennale) in 'Computer Science, Control and Geoinformation' (http://www.ce.uniroma2.it/dottorato/). L'ingresso nel mondo del lavoro può avvenire al termine di ognuna di queste tre tappe. Informazioni più dettagliate sulla organizzazione del Corso di Laurea in Ingegneria Informatica, insegnamenti offerti e docenti possono essere trovate sul sito Web all'indirizzo riportato sotto. Obiettivo globale di tutto il percorso è formare, con diversi gradi di specializzazione e approfondimento, professionisti competenti nella progettazione e sviluppo di metodologie e tecnologie dell'informatica, e nella loro applicazione alla soluzione di problemi in diversi campi applicativi, come l'economia, la scienza, l'ingegneria, la medicina, l'istruzione, l'intrattenimento, e altri ancora.

  • La prova finale può avere come oggetto: - presentazione dei risultati di uno specifico lavoro di natura progettuale/implementativa nell'ambito dell'informatica o automazione; - presentazione di una sintesi unitaria delle esperienza progettuali svolte personalmente nell'ambito di insegnamenti del corso di laurea, con evidenziazione delle metodologie e tecnologie apprese, e delle lezioni tratte da queste esperienze.

  • L'accesso al Corso di Laurea, unitamente agli altri Corsi di Laurea della Macroarea di Ingegneria dell'Ateneo, richiede il superamento di un test di ingresso su alcune materie di base riguardanti, nello specifico, la matematica, la fisica e la chimica oltre a 'Logica e Comprensione Verbale' (al link riportato sotto possono essere trovate informazioni relative all'ultimo test svolto per l'a.a.

    2021/22). Per partecipare al test i candidati devono preventivamente compilare online la domanda di partecipazione entro la scadenza fissata.

    La data di scadenza della presentazione di tale domanda, nonché la data in cui si svolgerà il test di ingresso sono tempestivamente comunicate sul sito della macroarea di Ingegneria www.ing.uniroma2.it, ove è possibile trovare anche ulteriori dettagli sulla procedura di immatricolazione. Il mancato superamento del test di ingresso dà luogo ad obblighi formativi.

    L'estinzione degli obblighi formativi, necessaria per l'accesso ai corsi del primo anno, avviene al momento del superamento dell'esame di profitto (test di recupero).

    Lo studente dovrà colmare le lacune emerse dal test di ingresso, seguendo specifici corsi di preparazione, nel caso fossero previsti, che si svolgeranno tipicamente prima dell'inizio delle lezioni.

    Il superamento dell'esame di profitto è condizione indispensabile per il proseguimento del percorso formativo. Per chi ha superato l'esame di maturità con votazione ≥ 90/100 e intende immatricolarsi al Corso di Laurea sono previsti i seguenti casi: • Esonero dal test d'ingresso; la compilazione standard della domanda di partecipazione al test di ingresso comunque DEVE essere compilata per esigenze amministrative sul sito web http://delphi.uniroma2.it/ entro la scadenza (orientativamente ultima settimana di Agosto); • Possibilità di partecipare comunque al test per autovalutazione o per ottenere la certificazione del superamento del test, obbligatoria in caso di cambio di ateneo, previo pagamento del contributo; • Immatricolazione preferenziale al corso di laurea di propria scelta a partire dalla seconda metà del mese di Luglio sul sito web http://delphi.uniroma2.it/. Sono altresì esonerati dal test di ingresso alcuni laureati (ingegneria V.O.

    – ingegneria triennale – ingegneria specialistica/magistrale – laurea in fisica – laurea in matematica) che potranno richiedere immatricolazione con abbreviazione di corso secondo le modalità successivamente descritte. Per i Trasferimenti da altri Atenei o per i Passaggi di Corso (da altro CdS di questo Ateneo) occorre fare riferimento alle norme sull'Organizzazione Didattica della Macroarea di Ingegneria, pubblicate nella relativa Guida dello Studente, e al sito della Segreteria Studenti di Ingegneria. Per le procedure di immatricolazione (compreso il test d'ingresso), di iscrizione, passaggio di corso e trasferimento da altro ateneo, le scadenze ed i relativi versamenti di tasse e contributi, occorre fare riferimento alla 'Guida all'iscrizione' consultabile sul sito web web.uniroma2.it.

    Tutte le informazioni saranno consultabili sul sito web ing.uniroma2.it. N.B: Le informazioni di tipo burocratico amministrativo devono essere richieste esclusivamente alla Segreteria Studenti di Ingegneria.

Ingegneria informatica a.a. 2023-2024

  • PROBABILITA' E STATISTICA Didattica Web

    Docente:

    Mario Rosolino Abundo

    Programma

    Introduzione. Spazi di probabilità, loro proprietà. Probabilità condizionali, eventi indipendenti. Probabilità uniformi, elementi di calcolo combinatorio. Modelli discreti. Variabili aleatorie (v.a.) discrete e loro leggi. Leggi congiunte e loro uso. Densità condizionali. V.a. indipendenti. Leggi binomiali, geometriche, di Poisson. Speranza matematica. Momenti di una v.a., varianza, disuguaglianza di Chebyshev, covarianza. Retta di regressione. Modelli continui. V.a. continue e densità. Leggi normali e leggi Gamma, loro applicazioni. Vettori aleatori continui. Somma, prodotto e quoziente di v.a. continue. Generatori aleatori. Simulazione. La legge dei grandi numeri e le sue applicazioni. Teorema limite centrale, approssimazione normale. Problemi di stima: intervalli di confidenza.

    Numero crediti

    6

    Obbligatorio

    Lingua

    ITA
  • LABORATORIO DI AUTOMATICA Didattica Web

    Docente:

    Mario Sassano

    Programma

    Rappresentazione grafica di sistemi di equazioni: diagrammi a blocchi e grafi di flusso, con relative regole di manipolazione e semplificazione. Modellazione di circuiti elettrici, meccanici, idraulici (e misti) mediante Bond Graph: scambio di potenza, concetti di porta e bond, componenti. Regole di conversione dal circuito al bond graph al diagramma a blocchi e alle equazioni differenziali. Semplici modelli di sistemi a tempo discreto e ibridi. Introduzione a Matlab/Simulink. Sviluppo e correzione di semplici programmi. Simulazione numerica di equazioni differenziali, alle differenze, e sistemi dinamici ibridi. Calcolo simbolico della risposta di semplici sistemi, e manipolazione delle relative equazioni. Introduzione alla piattaforma Arduino. Programmazione dalla IDE di Arduino e da Matlab/Simulink. Costruzione di semplici circuiti e meccanismi, e controllo di essi tramite Arduino. Visualizzazione dei dati in Matlab/Simulink.

    Numero crediti

    6

    Obbligatorio

    No

    Lingua

    ITA
  • LINGUA INGLESE (LIVELLO B2) Didattica Web

    Numero crediti

    3

    Obbligatorio

    No

    Lingua

    ITA
  • LINGUA FRANCESE (LIVELLO B2) Didattica Web

    Numero crediti

    3

    Obbligatorio

    No

    Lingua

    ITA
  • LINGUA TEDESCA (LIVELLO B2) Didattica Web

    Numero crediti

    3

    Obbligatorio

    No

    Lingua

    ITA
  • ALGEBRA E LOGICA Didattica Web

    Docente:

    Andrea Santi

    Programma

    INSIEMI, FUNZIONI, RELAZIONI Insiemi, sottoinsiemi e operazioni tra di essi. Corrispondenze tra insiemi; relazioni, funzioni, composizione. Iniettività, suriettività, biiettività, invertibilità di funzioni. Insieme delle parti di un insieme; funzione caratteristica di un sottoinsieme. Partizioni. Relazioni d’'ordine. Relazioni di equivalenza; classi, quozienti, legame con le partizioni. Insiemi con operazioni. Classi particolari: esempi e controesempi. NUMERI NATURALI Il sistema dei numeri naturali; il Principio di Induzione (in tre formulazioni). Dimostrazioni per induzione. Ordine e operazioni nei numeri naturali; divisione con resto. Numerazione (scrittura posizionale) in base arbitraria. NUMERI INTERI, NUMERI MODULARI Costruzione dei numeri interi (a partire dai naturali); valore assoluto, operazioni, ordinamento; divisibilità; M.C.D. e m.c.m. Divisione con resto tra numeri interi. Esistenza del M.C.D.: l’'algoritmo di Euclide; identità di Bézout. Fattorizzazione nell'anello dei numeri interi: il Teorema Fondamentale dell’'Aritmetica. Equazioni diofantee. Relazioni di congruenza tra numeri interi. Equazioni congruenziali; sistemi di equazioni congruenziali. Anelli di classi resto (=interi modulari). Aritmetica modulare; equazioni congruenziali. RETICOLI, ALGEBRE DI BOOLE, CALCOLO BOOLEANO Insiemi ordinati; relazione di copertura, diagramma di Hasse; elementi speciali in un (sotto)insieme ordinato. Reticoli; classi speciali di reticoli; v-fattorizzazione nei reticoli. Algebre di Boole, come reticoli e come anelli booleani unitari; il Teorema di Equivalenza (Stone). Algebre di Boole e insiemi delle parti: il Teorema di Rappresentazione (Stone) per il caso finito (e cenni per il caso infinito). Funzioni booleane; polinomi booleani; equivalenza tra polinomi booleani. Forma Normale Disgiuntiva di un polinomio booleano. Forme Minimali di un polinomio booleano. Implicanti primi; il Metodo del Consenso per il calcolo delle forme minimali di un polinomio booleano.

    Numero crediti

    6

    Obbligatorio

    No

    Lingua

    ITA
  • LINGUA SPAGNOLA (LIVELLO B2) Didattica Web

    Numero crediti

    3

    Obbligatorio

    No

    Lingua

    ITA
  • ANALISI MATEMATICA II Didattica Web

    Docente:

    Paolo Perfetti

    Programma

    Integrazione per funzioni di più variabili Integrali curvilinei di prima e seconda specie Nozioni di base di analisi complessa Integrali coi residui Trasformata di Laplace Equazioni differenziali lineari del primo e secondo ordine a coefficienti costanti Sistemi di equazioni differenziali lineari del primo e secondo ordine a coefficienti costanti

    Numero crediti

    6

    Obbligatorio

    Lingua

    ITA
  • CALCOLATORI ELETTRONICI Didattica Web

    Docente:

    Alessandro Pellegrini

    Programma

    Introduzione. Organizzazione ed architettura di un calcolatore. Struttura e funzionalitˆ. Livelli di astrazione. Tecnologia costruttiva. Breve rassegna storica. Rappresentazione dell'informazione. Rappresentazione degli interi. Aritmetica degli interi. Rappresentazione in virgola mobile (formato IEEE 754). Aritmetica in virgola mobile. Codifica dei caratteri. Codifica ASCI, BCD. Il linguaggio C. Fondamenti del C. Operatori ed espressioni. I/O dei dati. Preparazione ed esecuzione di un programma in linguaggio C. Istruzioni di controllo. Funzioni, Struttura dei Programmi. Array. Puntatori. Strutture. Gestione dinamica della Memoria. Il set delle istruzioni. Il caso del MIPS. Le istruzioni. Le operazioni svolte dall'hardware. Gli operandi dell'hardware. Rappresentazione delle istruzioni all'interno del calcolatore. Modi di indirizzamento. Istruzioni aritmetiche. Istruzioni di load/store. Istruzioni di salto. Istruzioni logiche. Pseudo-istruzioni. Direttive. Chiamate di sistema. Dalla compilazione all'esecuzione di un programma: assemblatore, linker e loader. Confronto tra architetture RISC e CISC. Circuiti Logici. Circuiti logici combinatori. Algebra di Boole. Progettazione di Reti combinatorie. Reti sequenziali sincrone ed asincrone. Progettazione di circuiti logici combinatori e sequenziali. Automi di Mealy e Moore. Il sistema calcolatore Unitˆ logico-aritmetica. La costruzione di una ALU. Memoria. I sistemi di memorizzazione e le tecnologie di memorizzazione. Memoria principale. Lettura e scrittura di una RAM. Gli elementi di memoria. Introduzione alle gerarchie di memoria ed alla memoria cache. Il processore: unitˆ di elaborazione dati e unitˆ di controllo. Introduzione. Progetto dell'unitˆ di elaborazione dati: unitˆ a ciclo singolo e multi-ciclo. L'unitˆ di controllo per l'ALU. Definizione dell'unitˆ di controllo. La microprogrammazione: il progetto dell'unitˆ di controllo. Studio del caso MIPS. Pipelining. Introduzione. L'unitˆ di elaborazione pipelined. Il controllo. Analisi delle criticitˆ. La Gerarchia di Memoria e le memorie Cache: Le prestazioni. La memoria virtuale. Macchine virtuali. Controllo della cache. Coerenza della cache. Input/Output. Tipi e caratteristiche dei dispositivi di I/O. Dischi. Bus sincroni ed asincroni. Il DMA Valutazione delle prestazioni. Introduzione alla valutazione delle prestazioni. La misura delle prestazioni. Relazioni tra le metriche. Benchmark.

    Numero crediti

    9

    Obbligatorio

    Lingua

    ITA
  • INGEGNERIA DEGLI ALGORITMI Didattica Web

    Docente:

    Salvatore Filippone

    Programma

    Modelli di calcolo; misura della complessità degli algoritmi ed esempi. Tipi di dato di base: liste, code, stack; Strutture dati ad albero: Alberi di ricerca, alberi binari, alberi bilanciati; Metodi di ordinamento e loro complessità; metodi di progettazione e analisi degli algoritmi Rappresentazione degli insiemi: tabelle di hashing, code con priorità; Grafi: loro rappresentazione, algoritmi di base (cammini minimi, alberi), componenti connesse, problemi di flusso e di matching. Misure di centralità.

    Numero crediti

    6

    Obbligatorio

    Lingua

    ITA
  • SISTEMI OPERATIVI Didattica Web

    Docente:

    Francesco Quaglia

    Programma

    Introduzione ai sistemi operativi Richiami sull'organizzazione di un sistema di calcolo Obiettivi dei sistemi operativi Sistemi batch uniprogrammati Sistemi batch multiprogrammati Sistemi time-sharing Architettura di massima dei sistemi UNIX/Windows Ambienti di esecuzione Aspetti basici sulla sicurezza del software Processi e thread Esecuzione e stati di processi Multiprogrammazione e Swapping Strutture di controllo di processi Immagine di un processo Liste di processi e scheduling Processi in sistemi UNIX/Windows Supporti per il multi-threading Threads in sistemi UNIX/Windows Scheduling della CPU Metriche di riferimento Algorithmi di scheduling classici Scheduling in sistemi UNIX/Windows Virtual File System ed I/O Concetti basici Metodi di accesso e di allocazione dei file Implementazione del virtual file system Gestione dei buffer di I/O Gesitone delle utenze e dei permessi di accesso Virtual file system ed I/O in sistemi UNIX/Windows Gestione della memoria Binding degli indirizzi Partizioni fisse e variabili Paginazione e segmentazione Memoria virtuale Memoria condivisa e file-mapping Gestione della memoria in sistemi UNIX/Windows Sincronizzazione Spinlocks, mutex e semafori Supporti in sistemi UNIX/Windows Eventi Meccanismi di segnalazione e gestione di eventi sincroni ed asincroni Supporti in sistemi UNIX/Windows Servizi di sistema per la programmazione di rete Stack di protocolli di comunicazione Sockets in sistemi UNIX/Windows

    Numero crediti

    9

    Obbligatorio

    Lingua

    ITA
  • FONDAMENTI DI TELECOMUNICAZIONI Didattica Web

    Docente:

    Stefano Domenico Salsano

    Programma

    I servizi di telecomunicazione. Funzioni delle reti di telecomunicazioni. Topologie di rete. Protocolli di comunicazione. Modelli dell'interazione tra attività e risorse. Parametri strutturali di un sistema di servizio. Processi di ingresso e di servizio. Evoluzione temporale di un sistema di servizio e sue caratteristiche prestazionali. Strumenti per il dimensionamento e la valutazione delle prestazioni. Processi di Markov, processo di Poisson, sistemi a coda di tipo M/M, reti di code, tecniche di simulazione. L’architettura a strati ed il modello OSI. I modi di trasferimento: schemi di multiplazione, principi di commutazione, architetture protocollari. Esempi di modi di trasferimento: modo a circuito; modo a pacchetto; nuovi modi di trasferimento. Caratteristiche principali dei protocolli di strato fisico, MAC, collegamento, rete e trasporto. Funzioni di rivelazione e recupero di errori, controllo di flusso, indirizzamento, instradamento, controllo del traffico, equalizzazione della qualità di servizio. La rete telefonica: cenni su architettura e modalità generali di funzionamento. Cenni su reti in area locale (Ethernet), reti in area geografica e su Internet. Segnali reali e segnali complessi, segnali in senso stretto e in senso lato, a tempo continuo, a tempo discreto, periodici, funzione generalizzata di Dirac. Segnali di energia e di potenza, funzione di intercorrelazione e di autocorrelazione, prodotto scalare, sequenza di intercorrelazione e di autocorrelazione temporale tra sequenze a potenza finita. Trasformazioni di segnali, trasformazioni fra segnali tempo continui, trasformazioni fra segnali tempo discreto. Trasformata di Fourier per segnali tempo continuo, serie di Fourier di segnali periodici tempo continuo, serie di Fourier di segnali tempo continuo a durata limitata. Rappresentazioni con segnali analitici, tramite la trasformata di Hilbert, tramite l’inviluppo complesso, tramite una base, tramite campioni, nello spazio dei segnali, campionamento, ortogonalizzazione di Gram-Schmidt. Trasformazioni fra segnali nei bipoli LTI, nei quadripoli LTI, LTI in cascata con adattamento. Quadripoli perfetti in banda base, quadripoli perfetti in banda traslata, alcuni tipi di quadripoli perfetti, sistema di trasmissione perfetto. Segnali analogici semplici, flussi numerici, elementi sui segnali numerici, elementi sulla conversione analogico-numerica.

    Numero crediti

    9

    Obbligatorio

    No

    Lingua

    ITA
  • BASI DI DATI Didattica Web

    Docente:

    Vittoria De Nitto Persone'

    Programma

    – Sistemi di basi di dati: proprietà fondamentali – Progettazione di basi di dati: Progettazione concettuale Modello Entity - Relationship Progettazione logica modello relazionale algebra relazionale Normalizzazione SQL Progettazione fisica organizzazione fisica e gestione delle interrogazioni gestione delle transazioni

    Numero crediti

    9

    Obbligatorio

    Lingua

    ITA
  • AUTOMI E LINGUAGGI Didattica Web

    Docente:

    Alberto Pettorossi

    Programma

    Preliminari matematici: relazioni, funzioni. Gerarchia di Chomsky. Linguaggi regolari, espressioni regolari, automi finiti deterministici e nondeterministici. Parsing dei linguaggi regolari. Linguaggi context-free e automi pushdown deterministici e nondeterministici. Parsing dei linguaggi context-free: parser di Cocke-Younger-Kasami, parser "chop-expand", parser LL(1), parser LR(0), parser LR(1) e parser LALR(1). Macchine di Turing e grammatiche e linguaggi di tipo 0. Grammatiche e linguaggi di tipo 1. Problemi decidabili, indecidabili e semidecidabili. Pattern matcher di Knuth-Morris-Pratt. Correttezza parziale dei programmi per mezzo delle triple di Hoare.

    Numero crediti

    6

    Obbligatorio

    Lingua

    ITA
  • CONTROLLI AUTOMATICI Didattica Web

    Docente:

    Antonio Tornambe'

    Programma

    http://didattica.uniroma2.it/docenti/curriculum/5216-Antonio-Tornambe

    Numero crediti

    6

    Obbligatorio

    Lingua

    ITA
  • INGEGNERIA DEL SOFTWARE E PROGETTAZIONE WEB Didattica Web

    Docente:

    Guglielmo De Angelis

    Programma

    Computational Science (CN). CN/Interactive Visualization - Use of APIs for developing user interfaces using standard input components such as menus, sliders, and buttons. Graphics and Visualization (GV). GV/Fundamental Concepts - Media applications including user interfaces - Use of standard APIs for the construction of UIs and display of standard media formats (see CN) Platform-Based Development (PBD). PBD/Web Platforms - Web programming languages (HTML5, Java Script, CSS) - Web platform constraints. Programming Languages (PL). PL/Object-Oriented Programming - Object-oriented design o Decomposition into objects carrying state and having behavior o Class-hierarchy design for modeling - Definition of classes: fields, methods, and constructors - Subclasses, inheritance, and method overriding - Dynamic dispatch: definition of method-call - Subtyping o Subtype polymorphism; implicit upcasts in typed languages o Notion of behavioral replacement: subtypes acting lik! e supertypes o Relationship between subtyping and inheritance - Object-oriented idioms for encapsulation o Privacy and visibility of class members o Interfaces revealing only method signatures o Abstract base classes - Using collection classes, iterators, and other common library components - PL/Event-Driven and Reactive Programming - Events and event handlers - Canonical uses such as GUIs, servers - Using a reactive framework o Defining event handlers/listeners - Externally-generated events and program-generated events - Separation of model, view, and controller. PL/Basic Type Systems - A type as a set of values together with a set of operations o From Primitive types (e.g., numbers, Booleans) to Compound types built from other types (e.g., records, unions, arrays, lists, functions, references) - Association of types to variables, arguments, results, and fields - Type safety and errors caused by using values inconsistently given their intended types - Goals and limitati! ons of static typing - Generic types (parametric polymorphism) - Complementary benefits of static and dynamic typing PL/Language Translation and Execution - Interpretation vs. compilation to native code vs. compilation to portable intermediate representation - Language translation pipeline: parsing, optional type-checking, translation, linking, execution o Execution as native code or within a virtual machine o Alternatives like dynamic loading and dynamic (or -just-in-time -) code generation - Run-time representation of core language constructs such as objects (method tables) - Run-time layout of memory: call-stack, heap, static data o Implementing loops, recursion, and tail calls - Memory management o Manual memory management: allocating, de-allocating, and reusing heap memory o Automated memory management: garbage collection as an automated technique using the notion of reachability.PL/Runtime Systems - Dynamic memory management approaches and techniques - Data layout for objects and activation records - Other common features of virtual mach! ines, such as class loading, threads, and security. PL/Advanced Programming Constructs - Control Abstractions: Exception Handling - Object-oriented abstractions: Multiple inheritance - Meta-classing. PL/Concurrency and Parallelism - Constructs for thread-shared variables and shared-memory synchronization - Models for passing messages between sequential processes - Thread states and state diagrams - Structures (ready list, i/o blocked list, condition blocked list, and so forth) - The role of locks, monitors, read-writers, and so forth. PL/Type Systems - Type checking - Static overloading. Software Development Fundamentals (SDF). SDF/Development Methods - Program comprehension - Program correctness o Types of errors (syntax, logic, run-time) o The concept of a specification o Defensive programming (exception handling) o Code reviews o Testing fundamentals - Structural and behavioral models of software designs - Design patterns - Software architecture concepts and standard ar! chitectures (e.g. client-server, n-layer, pipes-and-filters). SE/Software Construction - Coding practices: techniques, idioms/patterns, mechanisms for building quality programs o Using exception handling mechanisms. SE/Software Verification and Validation - Verification and validation concepts - Inspections, reviews, audits - Testing o Unit, integration, validation, and system testing o Black-box and white-box testing techniques o Regression testing and test automation - Defect tracking

    Numero crediti

    12

    Obbligatorio

    Lingua

    ITA
  • RICERCA OPERATIVA Didattica Web

    Docente:

    Gianpaolo Oriolo

    Programma

    1. Definizioni fondamentali di teoria dei grafi. Connessione, acicilicità , alberi, circuiti euleriani. Grafi bipartiti e problemi di colorazione. 2. L'uso delle condizioni di ottimalità per il problema dell'albero ricoprente e del cammino minimo. Il problema del massimo flusso e il problema del minimo taglio. Matching nei grafi bipartiti. 3. Richiami di calcolo combinatorio ed elementi di conteggio. Dimostrazioni per induzione e pigeon-hole principle. 4. Programmazione lineare. Metodo del simplesso. Dualità e condizioni di ottimalità . Analisi di sensitività . 5. Programmazione lineare intera. Branch and bound. 6. Applicazioni selezionate. Scheduling and planning di linee ferroviare. Route planning for aziende di distribuizione di food. 7. Tutorial per AMPL (A Mathematical Programming Language).

    Numero crediti

    6

    Obbligatorio

    Lingua

    ITA
  • TEORIA DEI SISTEMI Didattica Web

    Docente:

    Laura Menini

    Programma

    1) Proprietà strutturali: raggiungibilità, controllabilità, osservabilità, determinabilità. 2) Assegnazione degli autovalori mediante retroazione statica dallo stato (formula di Mitter, formula di Ackermann). 3) Progetto di osservatori dello stato e retroazione dinamica dall'uscita. 4) Elementi di teoria della realizzazione. 5) Parametrizzazione di Youla-Kucera dei controllori stabilizzanti (caso SISO).

    Numero crediti

    6

    Obbligatorio

    Lingua

    ITA
  • MOBILE PROGRAMMING Didattica Web

    Docente:

    Massimo Regoli

    Programma

    Introduzione alla programmazione Mobile Programmazione in ambienti real-time Ambiente di sviluppo AndroidStudio Kotlin come linguaggio di sviluppo in ambiente Android Coroutine in Kotlin per la gestione del calcolo concorrenziale Ciclo divita di una applicazione Servizi e attività in background Sensori e loro gestione Architettura MVVM (Model-View-ViewModel) Librerie Volley, Gson, Dagger/Hilt, Retrofit, MPAndroidChart, Room, ... Toolkit Andoid JetPack Compose per lo sviluppo di interfacce ViewModel per la gestione dell'architettura MVVM Cenni all'uso di database nella applicazioni Mobili Gestione e verifica della Privacy nelle applicazioni mobili

    Numero crediti

    6

    Obbligatorio

    No

    Lingua

    ITA
Corso
  • Titolo: Ingegneria Informatica
  • Anno Accademico: 2023/2024
  • Tipo: Corso di Laurea
  • Manifesto: 15cd10f5-5764-42e1-a41f-3830e1bf51da
  • ISCED: 7 73 732
Info