Questa funzione ti consente di visualizzare il tuo percorso formativo, se la tua immatricolazione è avvenuta in anni precedenti

Curricula per l'anno 2025 - Informatica (33503)

Curriculum unico

1º anno

InsegnamentoSemestreCFUSSDLingua
1015883 | FONDAMENTI DI PROGRAMMAZIONE9INF/01ITA

Obiettivi formativi

Obiettivi generali
Introduzione alla programmazione tramite il linguaggio Python.

Obiettivi specifici
Introduzione alla programmazione tramite il linguaggio Python.
Tipi di dati, variabili, assegnamenti, strutture di controllo, funzioni, classi, moduli e Input/Output.
Strutture dati: vettori, stringhe, liste, tuple e dizionari.
Progettazione e sviluppo di programmi tramite programmazione procedurale e orientata agli oggetti.
Algoritmi ricorsivi ed iterativi.
Librerie di Python per la grafica, per la gestione dei file, per l'elaborazione di testi/html e per l'accesso ad Internet.
Debugging e testing di programmi.

Conoscenza e comprensione
Comprendere e definire i requisiti di un problema.
Decidere come rappresentare le informazioni in input e quali strutture dati usare per le elaborazioni intermedie e per l'output.
Definire l'algoritmo di soluzione.
Codificare l'algoritmo sotto forma di programma Python.
Modularizzare il programma in piccole funzioni/metodi separate.
Verificare tramite tests che il programma segua i requisiti.

Applicazione di conoscenza e comprensione
Lo studente dovrà realizzare dei compiti di programmazione per casa, scansionati durante il corso, per mettere in pratica e dimostrare le conoscenze apprese.
Alla fine del corso la prova d'esame sarà basata su una prova in laboratorio in cui lo studente dovrà risolvere e programmare alcuni esercizi.

Autonomia di giudizio
Lo studente alla fine del corso deve essere in grado di scegliere autonomamente come risolvere un problema di programmazione (analisi, implementazione e test).

Abilità comunicative
Nella fase di analisi del problema e definizione dei requisiti è importante avere una buona capacità di comprensione del linguaggio.

Capacità di apprendimento successivo
Le basi dell'analisi di un problema per comprendere le specifiche e progettare sia le strutture dati necessarie che l'algoritmo più adatto è applicabile ad altri linguaggi di programmazione e potrà aiutare nei successivi corsi di programmazione.

10621297 | METODI MATEMATICI PER L'INFORMATICA6INF/01ITA

Obiettivi formativi

Obiettivi generali:
L'insegnamento è indirizzato all'acquisizione delle conoscenze logiche e insiemistiche di base per affrontare lo studio di altri argomenti in matematica ed informatica.

Obiettivi specifici:

Conoscenza e comprensione:
Alla fine del corso lo studente avrà piena comprensione degli strumenti logico-insiemistici proposti

Applicare conoscenza e comprensione:
Avrà acquisito la capacità di portare avanti un rigoroso, anche se elementare, ragionamento matematico, in particolare per quanto riguarda i principi logici fondamentali e l’uso dell’induzione in tutte le sue forme.

Capacità critiche e di giudizio:
Sarà quindi capace di affrontare criticamente gli argomenti proposti in altri insegnamenti sia teorici che applicati. A questo proposito vengono forniti molti esempi presi da altri insegnamenti.

Capacità di comunicare quanto si è appreso:
La partecipazione attiva in classe e l’uso dell’esame orale servono a stimolare lo studente nell’acquisire il linguaggio proprio della matematica e a trasmettere le conoscenze e le capacità acquisite in maniera appropriata.

Capacità di proseguire lo studio: Lo studente sarà in grado di approfondire nello studio personale i temi trattati usando quanto appreso come base.

AAF2511 | INGLESE LIVELLO B26ENG

Obiettivi formativi

OBIETTIVI GENERALI:
Il presente corso mira allo sviluppo della competenza comunicativa di livello B2 nella lingua inglese. Le studentesse e gli studenti saranno in grado di comprendere e produrre testi più complessi in modo autonomo e appropriato, relativi ad argomenti sia concreti che astratti, in una varietà di contesti. Il corso si propone inoltre di consolidare l’autonomia linguistica e promuovere una partecipazione attiva e consapevole nei processi comunicativi in lingua straniera.
OBIETTIVI SPECIFICI:
Il corso affronterà le principali strutture grammaticali, lessicali avanzate, necessarie per sviluppare le funzioni comunicative proprie del livello B2. Queste le principali funzioni comunicative che si intendono sviluppare:
• esprimere opinioni articolate, motivare scelte e sostenere argomentazioni;
• comprendere e partecipare a conversazioni complesse, anche in ambito non familiare;
• comprendere e riferire il contenuto di testi scritti e orali complessi.

CONOSCENZE E COMPRENSIONE:
Al termine del corso gli studenti avranno acquisito le principali conoscenze grammaticali, il lessico e le funzioni linguistiche, corrispondenti al livello intermedio-avanzato B2 del Quadro Comune Europeo di Riferimento per le Lingue (QCER).
APPLICARE CONOSCENZA E COMPRENSIONE:
Al termine del corso, gli studenti saranno in grado di comprendere testi orali e scritti complessi su argomenti sia concreti che astratti, comprese discussioni tecniche legate ai propri ambiti di interesse. Saranno inoltre capaci di produrre testi chiari, ben strutturati e di esprimersi con efficacia su un’ampia gamma di argomenti.
CAPACITÀ DI GIUDIZIO:
Gli studenti saranno in grado di riconoscere autonomamente possibili errori linguistici, valutando la correttezza e l’efficacia dei propri testi orali e scritti. Attraverso processi di meta cognizione e di riflessione sulla lingua, svilupperanno maggiore consapevolezza sulle proprie competenze linguistiche e sulle possibili aree di miglioramento.
CAPACITÀ DI COMUNICAZIONE:
Gli studenti saranno in grado di comunicare in modo più fluente e preciso in vari contesti, anche formali. Saranno in grado di interagire con interlocutori diversi, adattando linguaggio e registro. Sapranno esprimere idee complesse in modo chiaro e strutturato, sia oralmente che per iscritto su una più vasta gamma di argomenti.
CAPACITÀ DI APPRENDIMENTO:
Il corso aiuterà gli studenti a sviluppare strategie di apprendimento indipendente attraverso l’uso di varie risorse. Gli studenti impareranno a organizzare il proprio studio in modo efficace, stabilendo obiettivi linguistici personali e monitorando i propri progressi. Svilupperanno inoltre una maggiore capacità di riflettere sulle somiglianze e differenze tra la lingua inglese e la propria lingua madre.

10621549 | ANALISI MATEMATICA12MAT/05ITA

Obiettivi formativi

L'insegnamento si compone di due moduli: leggere gli obiettivi del singolo modulo.

ANALISI MATEMATICA I MODULO6MAT/05ITA

Obiettivi formativi

Obiettivi generali: acquisire una conoscenza delle tecniche elementari del Calcolo Differenziale e delle principali applicazioni a problemi di massimo-minimo e allo studio del grafico di funzioni.
Obiettivi specifici: Conoscenza e comprensione: al termine del corso lo studente  avrà acquisito le nozioni  e i risultati di base del Calcolo Differenziale con particolare attenzione ai concetti di funzione, limite di funzione e derivata.
Conoscenze e comprensione: al termine del corso lo studente  avrà acquisito le nozioni  e i risultati di base del Calcolo Differenziale con particolare attenzione ai concetti di funzione, limite di funzione e derivata.
Applicare conoscenza e comprensione: al termine del corso lo studente  sarà in grado di risolvere semplici problemi del Calcolo Differenziale, quali il calcolo esplicito di derivate, il calcolo del massimo e minimo locale e globale di funzioni di una variabile, e il disegno approssimativo del grafico di funzioni.
Capacità di giudizio: lo studente avrà le basi per utilizzare un grafico come strumento di analisi di una situazione concreta descrivibile matematicamente.
Capacità di comunicazione: lo studente sarà in grado di comprendere un testo scientifico di complessità non elevata e di riassumerne i concetti principali.
Capacità di apprendimento: le conoscenze acquisite permetteranno uno studio, individuale o impartito in un corso, relativo ad aspetti più avanzati del Calcolo Differenziale e al Calcolo Integrale.

10620599 | ALGORITMI 16INF/01ITA

Obiettivi formativi

Obiettivi generali:
Questo corso introduce i metodi di base per la progettazione e l’analisi degli algoritmi. Si studieranno vari algoritmi ben noti che risolvono problemi di base come l’ordinamento o la ricerca, insieme con i più semplici strumenti per analizzarli dal punto di vista dell’efficienza.
Obiettivi specifici
Il corso ha come obiettivo quello di far usare correttamente gli algoritmi di base e le strutture dati fondamentali.
In particolare, verranno affrontati i principali algoritmi per risolvere i problemi della ricerca e dell’ordinamento.
Saranno poi studiate le strutture dati più importanti: array disordinati e ordinati, liste puntate semplici e doppie, dizionari, alberi.
Infine, si daranno gli strumenti per il calcolo del costo computazionale degli algoritmi.
Conoscenze e comprensione:
Al termine del corso le studentesse e gli studenti conosceranno le metodologie di base per la progettazione e l'analisi di algoritmi iterativi e ricorsivi, le strutture dati elementari, i principali algoritmi di ordinamento e le implementazioni più elementari dei dizionari.
Applicare conoscenza e comprensione:
Al termine del corso le studentesse e gli studenti avranno acquisito familiarità con le principali strutture dati di base, in particolare quelle che implementano i dizionari. Sapranno spiegarne gli algoritmi e analizzarne la complessità, evidenziando come le prestazioni dipendano dalla struttura dati utilizzata. Saranno in grado di progettare nuove strutture dati e i relativi algoritmi, rielaborando quelli esistenti; sapranno spiegare i principali algoritmi di ordinamento, illustrando le strategie di progetto sottostanti e le relative analisi di complessità; saranno in grado di confrontare i comportamenti asintotici dei tempi di esecuzione degli algoritmi studiati; saranno in grado di progettare soluzioni ricorsive di problemi e di analizzare asintoticamente gli algoritmi risultanti.
Capacità di giudizio:
Le studentesse o gli studenti avranno le basi per analizzare la qualità di un algoritmo e delle relative strutture dati, sia dal punto di vista della effettiva risoluzione del problema che da quello della efficienza computazionale con la quale il problema viene risolto.
Capacità di comunicazione:
Le studentesse e gli studenti acquisiranno la capacità di esporre in modo chiaro ed organizzato le proprie conoscenze, capacità che verrà verificata sia mediante i quesiti presentati nelle prove scritte che durante la prova orale. Essi saranno in grado di esprimere un’idea algoritmica in modo rigoroso ad alto livello, in pseudocodice.
Capacità di apprendimento:
Le conoscenze acquisite permetteranno di affrontare lo studio, individuale o previsto nell’ambito di un corso di laurea magistrale, di tecniche algoritmiche e di strutture dati più avanzate.

1015884 | METODOLOGIE DI PROGRAMMAZIONE9INF/01ITA

Obiettivi formativi

Obiettivi generali:
Apprendimento dei concetti della programmazione orientata agli oggetti mediante il linguaggio di programmazione Java.

Obiettivi specifici:
I concetti fondamentali della programmazione orientata agli oggetti: classi e oggetti, incapsulamento, ereditarietà, polimorfismo, binding statico e dinamico, i design pattern. La programmazione funzionale. Gli strumenti e le metodologie di base della progettazione software tramite un linguaggio orientato agli oggetti. Il linguaggio Java.

Conoscenza e comprensione:
Conoscenza dei costrutti dei linguaggi di programmazione orientata agli oggetti, con particolare riferimento al linguaggio Java. Comprensione di un programma Java. Capacità di scrittura di un programma Java di piccole e medie dimensioni.

Applicare conoscenza e comprensione:
Essere in grado di applicare le metodologie di base per affrontare la progettazione di sistemi software di grandezza medio-piccola. Saper usare i principali strumenti di sviluppo per realizzare tali sistemi in Java.

Capacità critiche e di giudizio:
Capacità di identificare istruzioni, costrutti o pattern errati o inefficienti così come corretti o efficienti in Java.

Capacità comunicative:
Illustrazione del progetto sviluppato.

Capacità di apprendimento successivo:
Capacità di apprendere e applicare nuove tecniche di programmazione a partire da quelle apprese durante il corso.

10621298 | ALGEBRA LINEARE E GEOMETRIA6MAT/02ITA

Obiettivi formativi

Obiettivi generali: Apprendere rudimenti di Algebra Lineare e Geometria.
Obiettivi specifici: Spazi vettoriali, dimensione, applicazioni lineari, isomorfismi, matrici, operazioni elementari, riduzione a scala.
Spazi affini, applicazioni affini, coordinate affini. Determinante, Laplace, Binet, Cramer. Diagonalizzazione, autovalori, autospazi. Prodotto scalare euclideo.
Conoscenze e comprensione: Lo studente apprenderà i rudimenti di Algebra Lineare e Geometria.
Applicare conoscenza e comprensione: Lo studente imparerà ad applicare l'Algebra Lineare e la Geometria alla risoluzione di problemi.
Capacità di giudizio: Lo studente imparerà valutare quando l'Algebra Lineare e la Geometria sono rilevanti per la risoluzione di un problema.
Capacità di comunicazione: Lo studente imparerà a comunicare nel linguaggio dell'Algebra Lineare e della Geometria.
Capacità di apprendimento: Lo studente sarà in grado di comprendere risultati di Algebra Lineare e di Geometria.

10621549 | ANALISI MATEMATICA12MAT/05ITA

Obiettivi formativi

L'insegnamento si compone di due moduli: leggere gli obiettivi del singolo modulo.

ANALISI MATEMATICA II MODULO6MAT/05ITA

Obiettivi formativi

Obiettivi generali: Lo scopo del corso è fornire strumenti di analisi matematica di base come integrali, serie numeriche e di potenze ed equazioni differenziali.
Obiettivi specifici: Gli studenti saranno in grado di esaminare varie tecniche di integrazione e applicarle per calcolare integrali definiti e indefiniti utilizzando l'integrazione per sostituzione e la regola dell'integrazione per parti. Gli studenti saranno in grado di calcolare i limiti di successioni e discutere la convergenza di serie numeriche, serie di potenze e serie di Taylor di funzioni elementari.
Conoscenze e comprensione: L’obiettivo è che lo studente apprenda alcune tecniche di integrazione per calcolare integrali definiti ed indefiniti usando la formula di integrazione per parti e l’integrazione per sostituzione.
Lo studente sarà in grado di studiare la convergenza delle serie numeriche e approssimare, in alcuni casi, la loro somma e studierà le serie di potenze e gli sviluppi in serie di Taylor delle funzioni elementari. Infine imparerà a risolvere alcune equazioni differenziali ordinarie del primo ordine a variabili separabili e lineari del primo ordine ed equazioni differenziali del secondo ordine lineari con coefficienti costanti omogenee e non.
Applicare conoscenza e comprensione: Il corso prevede lezioni teoriche ed esercitazioni per apprendere lo svolgimento degli esercizi pratici.
A metà del corso è prevista una prova pratica per verificare l’apprendimento del programma svolto.
Capacità di giudizio: Saper affrontare autonomamente nuovi problemi, applicando gli strumenti matematici appresi a fenomeni o processi che si incontreranno nel corso di studi e nelle attività lavorative successive.
Capacità di comunicazione: Saper comunicare utilizzando propriamente il linguaggio matematico.
Capacità di apprendimento: Approfondire in modo autonomo alcuni argomenti introdotti durante il corso.

2º anno

InsegnamentoSemestreCFUSSDLingua
10620601 | ARCHITETTURA DEGLI ELABORATORI 16INF/01ITA

Obiettivi formativi

Obiettivi generali:
Metodologie di progettazione di circuiti combinatori e sequenziali.
Obiettivi specifici:
codifica binaria di vari tipi di dato, algebra booleana, analisi e sintesi di circuiti combinatori, flip-flop, analisi e sintesi di circuiti sequenziali, registri, interconnesione tra registri e altri moduli
Conoscenze e comprensione:
Conoscere e capire come l'elaboratore gestisce ed elabora l'informazione
Applicare conoscenza e comprensione:
Dimostrare di saper progettare semplici circuiti combinatori e sequenziali in grado di svolgere determinati compiti.
Capacità di giudizio:
saper scegliere il miglior approccio, tra i vari studiati, per risolvere un determinato compito
Capacità di comunicazione:
essere in grado di valutare e motivare le proprie scelte nella progettazione di un circuito
Capacità di apprendimento:
Capire le differenze e i vantaggi delle varie tecniche di progettazione.

1023608 | Basi di dati9INF/01ITA

Obiettivi formativi

Obiettivi generali:
Esporre gli studenti a solide metodologie di progettazione e realizzazione di basi di dati in terza forma normale, e delle relative applicazioni
Obiettivi specifici:
Esporre gli studenti a metodologie formali e scalabili per l'individuazione dei vincoli, l'analisi concettuale e la traduzione nel modello logico relazionale che portino alla progettazione e realizzazione di di basi di dati in forma normale e a tecnologie standard per la loro interrogazione e per inserire le interrogazioni in applicazioni software.
Conoscenze e comprensione:
Gli studenti acquisiranno conoscenze metodologiche fondamentali per la progettazione di basi di dati non banali (in particolare per le fasi di: a) raccolta dei requisiti; b) analisi concettuale dei dati e delle funzionalità; c) progettazione della base dati e delle funzionalità; d) verifica della normalità ed eventuale correzione delle anomalie) e per la loro realizzazione (utilizzo di DBMS e di linguaggi standard di definizione, interrogazione e manipolazione dei dati).
Applicare conoscenza e comprensione:
Gli studenti saranno in grado di applicare in modo efficace le conoscenze indicate al punto precedente in progetti reali di applicazioni per basi di dati non banali.
Capacità di giudizio:
Gli studenti saranno in grado di prendere autonomamente decisioni razionali in tutte le fasi del processo di progettazione di basi di dati e relative applicazioni, e di valutare la correttezza di uno schema di relazione rispetto alla terza forma normale.
Capacità di comunicazione:
Gli studenti saranno in grado di interagire in modo proficuo con i committenti (per quanto concerne la raccolta dei requisiti) e con altri analisi e progettisti (per quanto concerne le attività di analisi e progettazione di sistemi software non banali).
Capacità di apprendimento:
Gli studenti saranno in grado di ampliare le loro conoscenze in modo autonomo consultando, secondo necessità, manualistica tecnica nell'ambito della progettazione di applicazioni per basi di dati.

10620600 | ALGORITMI 26INF/01ITA

Obiettivi formativi

Obiettivi generali:
Questo corso introduce agli studenti i metodi per la progettazione e l’analisi degli algoritmi. Saranno illustrate anche strutture dati non elementari.
Obiettivi specifici:
Gli studenti studieranno varie tecniche algoritmiche di ampia applicazione come la tecnica greedy, il divide et impera, la programmazione dinamica e il backtracking. Le varie tecniche verranno illustrate tramite algoritmi classici come l' algoritmo di Dijkstra e l'algoritmo di Bellman Ford per la ricerca dei cammini minimi, l'algoritmo di Kruskal o l'algorimo di Prim per il problema dell'albero di copertura di costo minimo.
Conoscenze e comprensione: Al termine del corso gli studenti conosceranno le metodologie per la progettazione e l'analisi di algoritmi, le strutture dati non banali, i principali algoritmi.
Applicare conoscenze e comprensione: Al termine del corso gli studenti avranno acquisito familiarità con le principali strutture dati. Sapranno spiegare gli algoritmi e analizzarne la complessità, evidenziando come le prestazioni dipendano dalla struttura dati utilizzata. Messi di fronte ad un nuovo problema avranno a disposizione diverse tecniche algoritmiche a cui far riferimento alla ricerca di un algoritmo efficiente per risolverlo.
Capacità critiche e di giudizio:
Lo studente avrà gli strumenti per analizzare la qualità di un algoritmo e delle relative strutture dati, sia dal punto di vista della effettiva risoluzione del problema che da quello della efficienza computazionale con la quale il problema viene risolto.
Capacità comunicative:
Lo studente acquisirà la capacità di esporre in modo chiaro ed organizzato le proprie conoscenze, capacità che verrà verificata sia mediante i quesiti presentati nelle prove scritte che durante la prova orale. Lo studente sarà in grado di esprimere un’idea algoritmica in modo rigoroso ad alto livello, in pseudocodice.
Capacità di apprendimento:
Le conoscenze acquisite permetteranno allo studente di affrontare problemi combinatorici utilizzando tecniche algoritmiche e strutture dati più avanzate rispetto a quelle viste nel corso di introduzione agli algoritmi.

10620642 | SISTEMI OPERATIVI9INF/01ITA

Obiettivi formativi

"Obiettivi generali:
Il corso ha come obiettivi i concetti, la struttura, e i meccanismi dei sistemi operativi. Verranno trattate caratteristiche fondamentali, presenti fin dai sistemi più tradizionali, ma anche peculiarità dei sistemi moderni che nascono come conseguenza dell’evoluzione ricorrente della tecnologia."
"Obiettivi specifici:
Il corso coprirà le caratteristiche e concetti dei sistemi operativi moderni, con particolare riferimento ai sistemi Unix e Linux. Si inizierà con una descrizione dell’evoluzione dei sistemi operativi nel tempo, per continuare con concetti fondamentali come i processi, lo stallo, e relativi meccanismi di prevenzione, la concorrenza tra processi, la gestione della memoria, processore e I/O, i file system e la sicurezza."
"Conoscenze e comprensione:
Capire in modo profondo come i sistemi operativi danno supporto all’esecuzione dei programmi degli utenti e gestiscono le periferiche hardware di un calcolatore. Metodi e tecniche fondamentali per la rappresentazione dei processi in memoria e la gestione efficiente di multiprogrammazione - molteplici processi caricati/eseguiti contemporaneamente - in un sistema con risorse limitate."
"Applicare conoscenza e comprensione:
Progettare programmi a livello utente e di sistema in modo efficiente e sicuro."
"Capacità di giudizio:
Essere in grado di predire l’uso delle risorse richieste da un programma, di scoprire una possibile situazione di stallo in un sistema multiprogrammato, garantire la mutua esclusione tra processi e l’accesso protetto a zone di memoria o risorse sensibili."
"Capacità di comunicazione:
Saper comunicare in modo chiaro e preciso le caratteristiche dei sistemi operativi e i loro meccanismi di supporto software/hardware."
"Capacità di apprendimento:
Saper sfruttare la conoscenza acquisita nella progettazione di sistemi e di programmi utente nel modulo successivo del corso. Essere in grado di usare questa conoscenza nell’apprendimento di proprietà di sistemi più complessi come quelli distribuiti e cloud."

10620609 | ARCHITETTURA DEGLI ELABORATORI 26INF/01ITA

Obiettivi formativi

Obiettivi generali:
L’obiettivo dell'insegnamento di Architettura degli elaboratori è di far comprendere i principi che sono usati per progettare i calcolatori moderni. In particolare, il corso tratta la struttura interna del microprocessore e le idee che hanno permesso la straordinaria evoluzione della potenza di calcolo negli ultimi 30 anni. come pipelining, caching, branch prediction, e multi-processing.
Obiettivi specifici:
Il corso tratta i principi di base di organizzazione del microprocessore e le nozioni di pipelining, caching, branch prediction, virtualizzazione e multi-processing. Inoltre, il corso tratta la programmazione assembly.
Conoscenze e comprensione:
Lo studente acquisirà conoscenza sull’organizzazione del microprocessore RISC, come implementazione delle idee generali che fanno parte degli obiettivi del corso. Inoltre, lo studente acquisirà conoscenza su come si strutturano i programmi in assembly, incluse le strutture dati, i paradigmi standard di programmazione e la ricorsione.
Applicare conoscenza e comprensione:
Le conoscenze sono applicate all'architettura RISC, in modo tale da permettere di capire le implicazioni delle scelte di programmazione sulla performance dei programmi su hardware specifico. Questa risultato è ottenuto tramite esercizi di programmazione e di valutazione delle prestazioni.
Capacità di giudizio:
Lo studente sarà in grado di comprendere le problematiche relative alle prestazioni del software su hardware specifico e di valutarne autonomamente le caratteristiche.
Capacità di comunicazione:
Il corso non si propone espliciti obiettivi sulle capacità comunicative, eccetto di formare all'esposizione rigorosa degli argomenti tecnici.
Capacità di apprendimento:
Il corso pone le basi per la comprensione dei moduli dell'insegnamento di Sistemi operativi e di tutti i corsi di programmazione, inclusa la programmazione di sistemi paralleli.

10620602 | FONDAMENTI DI INTERNET9INF/01ITA

Obiettivi formativi

Obiettivi generali:
Imparare le basi delle reti di elaboratori moderne e Internet.

Obiettivi specifici:

Conoscenza e comprensione:
Conoscenza e comprensione dei protocolli dei livelli applicazione, trasporto, rete e collegamento della pila TCP/IP.

Applicazione di conoscenza e comprensione:
Capacità di comprendere qualsiasi protocollo coinvolto nella comunicazione TCP/IP
Capacità di comprendere strumenti e tecniche per risolvere problemi di rete
Capacità di usare servizi di rete come DNS e DHCP che permettono di far funzionare una rete

Autonomia di giudizio:
Individuare problemi di rete
Valutare la realizzazione di nuovi servizi

Abilità comunicative:
Capacità di descrivere le reti in termini strutturali secondo il modello a 5 livelli.

Capacità di apprendimento successivo:
Il corso fornisce le basi per poter apprendere nozioni di reti wireless e Internet of Things.

10620608 | PROGRAMMAZIONE AVANZATA9INF/01ITA

Obiettivi formativi

Obiettivi generali:
La creazione di sistemi software complessi che siano affidabili ed efficienti può richiedere al programmatore di sfruttare direttamente il supporto del sistema operativo per la manipolazione di risorse come i processi, la memoria, il file system ed i dispositivi di I/O, la sincronizzazione tra processi concorrenti e la comunicazione tra processi in
esecuzione su nodi remoti. Una programmazione esente da errori e la gestione corretta delle eccezioni in fase di esecuzione, porta a realizzare sistemi affidabili. Mentre la profilazione di un programma in fase di esecuzione, ovvero l’osservazione delle risorse da esso utilizzate (ad es. la memoria) e del tempo di esecuzione permette di capire quanto un programma sia efficiente e di scegliere le strutture dati e gli algoritmi più performanti per la realizzazione di un compito.
L'insegnamento di “Programmazione avanzata” si prefigge di fornire allo studente le conoscenze necessarie allo sviluppo di software affidabili ed efficienti.

Obiettivi specifici:
In particolare lo studente apprenderà come:
● creare programmi mediante i linguaggi compilati come ad esempio C, Rust e C++
● programmare sfruttando il supporto del sistema operativo mediante l’interfaccia da esso
fornita, ovvero le system call (e le funzioni di libreria)
● sviluppare programmi che siano in grado di creare processi (o threads), accedere alle
risorse di sistema (file system e I/O), comunicare con altri processi (socket, pipe),
sincronizzarsi con altri processi (signals, semafori, mutex) per accedere alle risorse
condivise (memoria, file system, I/O)
● creare programmi affidabili ed efficienti
● Identificare, prevenire e gestire errori in fase di esecuzione
● tracciare il comportamento di un programma in esecuzione

Conoscenza e comprensione:
Capire in modo approfondito come i sistemi operativi danno supporto all’esecuzione dei
programmi degli utenti e gestiscono le periferiche hardware di un computer.
Comprendere ed utilizzare metodi e tecniche fondamentali per la rappresentazione dei processi
in memoria e la gestione efficiente di multiprogrammazione.
Comprendere l’uso di linguaggi di programmazione come C, Rust, C++ e delle principali system
call di Linux.

Applicare conoscenza e comprensione:
Progettare programmi a livello utente e di sistema in modo efficiente e sicuro
Capacità critiche e di giudizio:
Essere in grado di predire l’uso delle risorse richieste da un programma, di scoprire una
possibile situazione di stallo in un sistema multiprogrammato, garantire la mutua esclusione tra
processi e l’accesso protetto a zone di memoria o risorse sensibili. Determinare quale
linguaggio di programmazione è più adatto, tra quelli studiati, per raggiungere determinati
obiettivi di affidabilità o efficienza.
Capacità comunicative:
Saper comunicare in modo chiaro e preciso
- i meccanismi di accesso all'API del sistema operativo
- come realizzare programmi affidabili e sicuri
- come identificare, prevenire e gestire errori in fase di esecuzione, e tracciare il comportamento
di un programma in esecuzione
Capacità di apprendimento:
Saper sfruttare la conoscenza acquisita
● nella progettazione di sistemi affidabili e sicuri.
● nell’apprendimento di proprietà di sistemi più complessi come quelli distribuiti e cloud.

1031978 | PROBABILITA' E STATISTICA9MAT/06ITA

Obiettivi formativi

Obiettivi generali:
Il corso ha l'obiettivo di fornire le conoscenze di base e le capacità di applicazione degli argomenti principali di probabilità e statistica.

Obiettivi specifici:
Acquisire le nozioni fondamentali della teoria della probabilità e delle principali distribuzioni di variabili aleatorie discrete e continue, comprendere i concetti di valore atteso, indipendenza, condizionamento e principi base dell'inferenza statistica, apprendere i concetti di convergenza per successioni e serie di funzioni reali e trigonometriche, con attenzione alla convergenza uniforme e alla convergenza in media quadratica, conoscere gli elementi essenziali della teoria delle funzioni di variabile complessa, inclusi olomorfia, punti singolari e residui, comprendere l'utilizzo delle trasformate di Laplace e di Fourier.

Conoscenza e comprensione:
Al termine del corso, studentesse e studenti avranno acquisito le nozioni e i risultati di base relativi alla teoria della probabilità su spazi finiti e numerabili, al concetto di vettore aleatorio discreto e al concetto di variabile aleatoria continua.
Conosceranno i fondamenti della teoria dell’approssimazione e le basi della statistica.

Applicare conoscenza e comprensione:
Al termine del corso, studentesse e studenti saranno in grado di risolvere semplici problemi di probabilità discreta, problemi inerenti vettori casuali discreti e numeri casuali rappresentati da variabili aleatorie continue. Saranno anche in grado di apprezzare il significato e le implicazioni dell’indipendenza e del condizionamento (nell’ambito di modelli discreti).
Saranno anche in grado di applicare la trasformata di Laplace e utilizzare la trasformata di Fourier su classi appropriate di funzioni.

Capacità critiche e di giudizio:
Studentesse e studenti svilupperanno la capacità di costruire modelli probabilistici in semplici contesti applicativi di interesse fisico, biologico e tecnologico, di utilizzare tavole e software di simulazione delle leggi discrete di più comune applicazione, e di comprendere l’utilizzazione di strumenti statistici elementari nell’inferenza, nel campionamento statistico e nella simulazione.

Capacità comunicative:
Le conoscenze acquisite permetteranno di esporre i contenuti appresi, rispondendo rigorosamente a quesiti teorici e pratici, sia nella prova scritta che nella prova orale.

Capacità di apprendimento:
Le competenze sviluppate favoriranno l'approfondimento autonomo o attraverso corsi specialistici di ulteriori aspetti della probabilità e della statistica.

3º anno

InsegnamentoSemestreCFUSSDLingua
1041727 | AUTOMI CALCOLABILITA' E COMPLESSITA'6INF/01ITA

Obiettivi formativi

Obiettivi generali:
Durante il corso saranno introdotti i più importanti risultati dell’Informatica teorica: a partire dai fondamentali risultati in teoria della calcolabilità degli anni trenta, passando per quelli in teoria degli automi degli anni cinquanta per arrivare al problema aperto P contenuto o uguale a NP, esplicitamente sollevato negli anni settanta.

Obiettivi specifici:
Gli studenti capiranno che ci sono diversi modelli di computazione e cosa ne determina il potere computazionale.
Gli studenti apprenderanno concetti astratti come classi di linguaggi, macchine universali, riducibilità e sapranno che alcuni problemi non possono essere risolti con un calcolatore e che altri sono computazionalmente difficili da risolvere o addirittura così difficili da poter essere considerati non risolvibili. Faremo vedere come alcuni di questi risultati sono utilizzati oggi.

Conoscenza e comprensione:
Al termine del corso gli studenti conosceranno i metodi e risultati di base della della teoria degli automi, della calcolabilità e della complessità e sapranno applicarli per individuare la complessità di problemi in diversi campi. In particolare sapranno:
dimostrare l’equivalenza tra le diverse caratterizzazioni dei linguaggi regolari
dimostrare l’equivalenza tra le diverse caratterizzazioni dei linguaggi context-free
spiegare il concetto di non determinismo
giustificare l'esistenza di problemi privi di soluzioni algoritmiche o intrattabili.

Applicazione di conoscenza e comprensione:
Gli studenti impareranno:
come costruire automi finiti (deterministici e non) da una specifica (formale o informale)
come costruire automi a pila (deterministici e non) da una specifica (formale o informale)
a usare la riducibilità tra problemi per dimostrarne la decidibilità o l'indecidibilità
a usare la riducibilità polinomiale per provare la NP-hardness di un problema

Autonomia di giudizio:
Capire il giusto livello di astrazione utile per risolvere un problema, scegliere il modello computazionale più conveniente in un determinato contesto alicativo

Abilità comunicative:
descrivere un linguaggio formale, a parole o attraverso uno degli strumenti offerti di descrizione finita, descrivere problemi indecidibili, intrattabili o trattabili, spiegare il significato e la rilevanza dele classi P ed NP nonché del problema “P=NP?"

Capacità di apprendimento:
Lo studente sarà in grado di imparare altri modelli computazionali, sia completamente diversi da quelli studiati durante il corso, sia variazioni di questi. Egli sarà capace di capire nuove prove di NP-completezza o più in generale prove di completezza per una qualunque classe di complessità

10620617 | INGEGNERIA DEL SOFTWARE9INF/01ITA

Obiettivi formativi

Obiettivi generali:
Il corso illustra i fondamenti delle metodologie e degli strumenti per la gestione dei processi software. Particolare attenzione viene dedicata alle metodologie di analisi e progettazione orientate agli oggetti, e alla loro gestione e documentazione mediante UML.

Obiettivi specifici:
Introduzione agli approcci all'ingegneria del software e al ciclo di vita del software, approfondimento sulle attività di specifica, analisi, progetto e test di sistemi software, tecniche per la gestione dei processi, con particolare riferimento alla gestione della qualità e dei rischi e all'analisi dei costi.

Conoscenze e comprensione:
Alla fine del corso lo studente avrà acquisito conoscenze relative ai principali modelli di ciclo di vita del software, alle metriche per il dimensionamento dello sforzo, alle tecniche di descrizione delle diverse componenti di un progetto software. Saranno state acquisite conoscenze relative all'uso del linguaggio UML. Infine, avranno anche acquisito familiarità con la letteratura scientifica nel campo.

Applicarei conoscenza e comprensione:
Alla fine del corso lo studente sarà in grado di lavorare in team alle attività di analisi, progettazione, documentazione e gestione di progetti software di medie dimensioni. Avranno imparato a produrre documentazione basata su UML, relativamente ai principali tipi di diagrammi: dei casi d'uso, delle classi, di interazione, di stato e di attività, anche attraverso l'utilizzo di ambienti software professionali orientati allo sviluppo sistematico di progetti software. Infine saranno in grado di produrre una valutazione dello sforzo basato su Punti Funzione e Punti Use Case.

Capacità di giudizio:
Gli studenti svilupperanno le capacità di analisi necessarie per valutare diverse alternative durante il processo di sviluppo software, con particolare riferimento alla valutazione delle scelte architetturali e dei rischi di progetto.

Capacità di comunicazione:
Gli studenti impareranno a documentare le loro scelte, anche attraverso l'uso di strumenti di generazione della documentazione, in particolare sfruttando notazioni diagrammatiche. Avranno anche acquisito la capacità di preparare presentazioni relative ad argomenti scientifici.

Capacità di apprendimento successivo:
La conoscenza degli aspetti di rigore formale alla base della disciplina dell'ingegneria del software permetterà agli studenti di acquisire rapidamente confidenza con tecniche, oltre a quelle considerate nel corso, basate su principi generali.

A SCELTA DELLO STUDENTE12ITA

Obiettivi formativi

A SCELTA DELLO STUDENTE

AAF1053 | TIROCINIO15ITA

Obiettivi formativi

Il tirocinio formativo è svolto sotto la guida di un responsabile e può essere esterno (svolto presso aziende o enti esterni) o interno (svolto nell'ambito del corso di laurea). In entrambi i casi il tirocinio ha una durata di circa tre mesi e prevede che allo studente sia proposto un problema del mondo reale, da risolvere attraverso l'elaborazione di un progetto sviluppato con un approccio professionale.

AAF1001 | prova finale3ITA

Obiettivi formativi

La prova finale consiste nella stesura, nella presentazione e nella discussione di una dissertazione scritta, elaborata autonomamente dallo studente, che documenti in modo organico e dettagliato il problema affrontato nell'ambito del tirocinio formativo e tutte le attività compiute per pervenire alla soluzione.

Gruppo opzionale
Intelligenza Artificiale e Machine Learning

Gruppi opzionali

Lo studente deve acquisire 12 CFU fra i seguenti esami
InsegnamentoAnnoSemestreCFUSSDLingua
97597 | FISICA6FIS/01ITA

Obiettivi formativi

Conoscenze acquisite
L'obiettivo principale del corso è di insegnare il metodo scientifico. Per ogni argomento trattato, sono presentate le osservazioni sperimentali (o numeriche) del fenomeno che si vuole capire. Viene quindi illustrato il processo di riduzionismo, con le relative approssimazioni, che porta ad un modello sufficientemente semplice da poter essere trattato matematicamente. Infine sono introdotte le leggi fisiche che permettono la spiegazione del fenomeno osservato, mettendo in luce l'ambito di validità di tale leggi e i loro limiti.

Competenze acquisite
Alla fine di questo corso lo studente dovrebbe aver appreso il metodo scientifico e dovrebbe essere in grado di applicarlo a qualsiasi problema di tipo scientifico che si trovi ad affrontare. In pratica dovrebbe aver sviluppato quella capacità di "problem solving" che è molto richiesta in qualsiasi disciplina tecnico-scientifica. Inoltre dovrebbe aver acquisito un bagaglio di leggi fisiche di base, che gli permettano di capire molti dei fenomeni naturali e dei dispositivi tecnologici che lo circondano.

1022263 | INTERAZIONE UOMO MACCHINA6INF/01ITA

Obiettivi formativi

Obiettivi generali:

Al termine del corso gli studenti conoscono le teorie, i modelli e le regole che guidano il progetto e lo sviluppo e la validazione di interfacce e sistemi interattivi usabili.
Gli studenti che superano l’esame sono in grado di progettare sistemi interattivi seguendo i criteri dell’interazione uomo-computer, analizzando il ruolo dell’utente, gli scenari e i compiti principali, e tenendo in considerazione i vincoli implementativi mediante cicli di progetto e sviluppo molto brevi.

Obiettivi specifici:

Conoscenza e comprensione:
Al termine del corso gli studenti conoscono le teorie, i modelli e le regole che guidano il progetto di interfacce e sistemi interattivi usabili.​ Conoscono inoltre i principi di progettazione agile centrata sull'utente.​

Applicare conoscenza e comprensione:
​Gli studenti applicano le conoscenze acquisite nella progettazione di un'interfaccia come lavoro di gruppo per l'esame.

Capacità critiche e di giudizio:
​Gli studenti, anche attraverso esercitazioni pratiche, acquisiscono competenze nella valutazione e validazione di interfacce uomo computer e ​sviluppano capacità di giudizio sull'usabilità di un'interfaccia e quindi sulle ricadute dell'uso dell'interfaccia in termini di efficacia, efficienza e soddisfazione.

Capacità comunicative:
​Gli studenti sostengono due presentazioni del loro lavoro di gruppo in occasione delle due revisioni previste con il docente. La prima revisione è svolta in aula e la presentazione è pertanto rivolta a tutti i colleghi al fine di esercitare le capacità comunicative.​

Capacità di apprendimento:
​La capacità di apprendimento​ è stimolata attraverso 1) attività di progettazione guidata e autonoma con supervisione; 2) l'esposizione a problemi realistici di progettazione stimolando la ricerca autonoma di soluzioni non standard; 3) la presentazione di casi reali e stimolandone la discussione critica.

10620672 | PROGRAMMING LANGUAGES6INF/01ENG

Obiettivi formativi

Obiettivi generali:
Il corso illustra i fondamenti dei linguaggi di programmazione. Particolare attenzione viene dedicata alla semantica statica e dinamica dei linguaggi (teoria dei tipi, semantica operazionale ed assiomatica) ed agli strumenti formali per la specifica e la verifica del software.

Obiettivi specifici:
Approfondimento sulle algebre induttive come fondamento di sintassi astratta, strutture dati e semplici logiche (equazionali) di programmi. Cenni sulla co-induzione come fondamento di analisi di processi concorrenti e strutture lazy. Confronto fra linguaggi lazy e eager, statici e dinamici, nel contesto di diversi paradigmi di programmazione: imperativo, funzionale, ad oggetti. Teoria dei tipi, con particolare attenzione al polimorfismo parametrico (alla ML) e di sottoclasse (alla Java).

Conoscenze e comprensione:
Alla fine del corso lo studente avrà acquisito conoscenze fondazionali relative ai linguaggi di programmazione e ai principali paradigmi di programmazione, e sarà in grado di inquadrare in una mappa concettuale coerente alcuni fra le principali aree di studio dell’informatica teorica, comprendendone le interconnessioni.

Applicazione di conoscenza e comprensione:
Alla fine del corso lo studente sarà in grado di orientarsi fra i diversi paradigmi della programmazione, con particolare attenzione alla programmazione funzionale. Avrà acquisito una conoscenza di base del linguaggio funzionale SML e della sua teoria dei tipi, nonchè dell’uso dei metodi formali.

Capacità di giudizio:
Gli studenti acquisiranno strumenti culturali per sviluppare software di qualità e per comprendere ed inquadrare le tendenze emergenti dei linguaggi moderni.

Capacità di comunicazione:
Gli studenti impareranno ad usare il linguaggio della matematica e della logica per descrivere, sviluppare ed analizzare il software, e ad integrare l’approccio formale con un’esposizione intuitiva delle idee.

Capacità di apprendimento:
L’uso di strumenti matematici nella teoria e nella pratica della programmazione sviluppa capacità logiche e consapevolezza della complessità della materia di studio.

10621254 | ORGANIZZAZIONE E GESTIONE PER LO START-UP AZIENDALE6SECS-P/10ITA

Obiettivi formativi

Obiettivi generali:

L’insegnamento di Organizzazione e Gestione per lo Start-Up Aziendale intende fornire agli studenti le conoscenze e i “fondamentali” per l’analisi e la comprensione delle principali problematiche organizzative che caratterizzano l’avvio e la gestione delle imprese nell’era digitale ed un ampio ventaglio di strumenti utili per la loro risoluzione.

In particolare, una volta affrontati i concetti di base relativi all’impresa e alle dinamiche aziendali, l’insegnamento approfondisce le principali tematiche relative allo start-up, quali la progettazione organizzativa, la pianificazione strategica, la valutazione della business idea e della relativa fattibilità economico-finanziaria.

Tali tematiche vengono affrontate nell’arco di un percorso didattico che si dispiega seguendo cronologicamente gli step funzionali alla redazione di un business plan. Più precisamente, l’insegnamento alterna momenti di lezione frontale ad attività di laboratorio, nelle quali gli studenti, divisi in gruppi, saranno guidati didatticamente nella realizzazione di un business plan relativo ad un’idea d’impresa digitale. Tale percorso consente agli studenti di esaminare in prima persona le caratteristiche del processo di start-up, e li aiuta a comprendere le variabili (e le leve) fondamentali dell’organizzazione, sulle quali la direzione aziendale può agire per il miglioramento delle performance ed il conseguimento di posizioni di vantaggio competitivo sui concorrenti.

Non sono previsti particolari prerequisiti, in termini di conoscenze pregresse di natura economico-aziendale, per la frequenza del corso ed il sostenimento delle prove d’esame.

Obiettivi specifici
Obiettivi: nella prima parte si descriveranno e si analizzeranno le caratteristiche, gli elementi di base e gli attori che la caratterizzano l’azienda, nonché le fasi del suo ciclo vitale. Si approfondiranno, inoltre, i rapporti esistenti tra l’organizzazione e la gestione dell’azienda, introducendo il concetto di “equilibrio” economico quale legge fondamentale alla base della capacità di sopravvivenza dell’azienda nel tempo.

Obiettivi: nella seconda parte inizierà il percorso didattico atto a fornire le conoscenze necessarie per procedere alla realizzazione del business plan. Si partirà dalla disamina delle opportunità di generazione di start-up nell’era digitale, evidenziandone le differenze con lo start-up di impese tradizionali. Si esamineranno i fondamenti della strategia, con il passaggio dalla business idea alla formalizzazione del modello di business, i contenuti di base della progettazione organizzativa, con particolare riguardo al rapporto tra organizzazione, ambiente e strategia, le tecniche di analisi della fattibilità di mercato e di quella economico-finanziaria, le considerazioni alla base della scelta della forma giuridica, nonché quelle per l’individuazione delle forme di finanziamento più appropriate.

Obiettivi: nella terza parte si approfondirà il ruolo e la struttura del business plan. Più precisamente, gli studenti, opportunamente divisi in gruppi, verranno didatticamente guidati attraverso il processo di redazione di un business plan. In questa parte, quindi, il business plan verrà considerato come l’obiettivo finale del corso che, oltre a rappresentare un project work valido ai fini della valutazione finale, verrà presentato nell’ambito di un vero e proprio contest alla fine del corso.

Tali obiettivi saranno perseguiti attraverso l’adozione di un appropriato mix di lezioni frontali, testimonianze provenienti dal mondo imprenditoriale e attività laboratoriali di gruppo.

Conoscenza e capacità di comprensione (knowledge and understanding).
Al termine dell’insegnamento gli studenti saranno in grado di riconoscere ed affrontare analiticamente le problematiche organizzative che caratterizzano la fase dello start-up, potendo contare su un ampio background teorico e un toolkit adeguato alla loro soluzione. Più precisamente, la comprensione dei legami tra variabili ambientali, strategiche ed organizzative consentirà loro di approcciare lo sviluppo dell’idea imprenditoriale ricercando la coerenza degli elementi strategico-organizzativi con il mercato di riferimento, nel rispetto delle condizioni di economicità dell’impresa. Inoltre, grazie all’acquisizione degli strumenti necessari alla progettazione di una start-up digitale e alla conoscenza maturata nel processo di redazione del business plan, alla fine del corso gli studenti saranno in grado di sviluppare un’idea imprenditoriale e di valutarne la fattibilità, nonché di formalizzarla all’interno di un business plan per procedere alla sua concreta realizzazione.

Tali conoscenze saranno acquisite alternando momenti di lezione frontale volti a fornire gli strumenti conoscitivi necessari alla comprensione dei vari argomenti, ad attività laboratoriali di gruppo, nelle quali gli studenti, divisi in gruppi, saranno guidati didatticamente dal docente nella realizzazione di un business plan. Saranno inoltre previste testimonianze provenienti dal mondo imprenditoriale in grado di rappresentare dei casi di studio pratici ed esemplificativi di quanto affrontato dal punto di vista teorico.

Capacità di applicare conoscenza e comprensione (applying knowledge and understanding).
Attraverso i lavori individuali e di gruppo gli studenti saranno messi in condizione non solo di comprendere l’origine, la natura e la tipologia delle varie problematiche organizzative, ma di elaborare soluzioni condivise utilizzando tecniche, modelli e strumenti di analisi trasferiti durante le lezioni frontali.

La presentazione, da parte degli studenti, dei risultati dei lavori di gruppo consentirà di sviluppare capacità di riflessione e di argomentazione, unitamente a capacità di scambio, condivisione ed esposizione dei risultati conseguiti.

Le testimonianze degli esperti di organizzazione provenienti da primarie organizzazioni imprenditoriali e la discussione dei relativi temi con gli studenti, infine, permetterà di corroborare – anche con un riscontro pratico – la capacità di applicazione delle tecniche e i risultati conseguiti dagli studenti stessi, e di apprendere dagli eventuali errori commessi.

Autonomia di giudizio (making judgements).
L’insegnamento di Organizzazione Aziendale, attraverso modalità miste di erogazione dei contenuti (lezioni frontali, lavori di gruppo, testimonianze aziendali), pur dedicando un adeguato spazio ai principali modelli teorici consolidati nella letteratura di riferimento, intende stimolare gli studenti a realizzare una propria visione dei fenomeni organizzativi durante tutto il percorso didattico, incentivando l’autonomia di giudizio e la soluzione creativa, pur orientata e guidata dal docente, delle conseguenti problematiche.

In particolare, il processo di redazione del business plan alla base dei lavori di gruppo è stato ideato proprio per incrementare capacità critiche, di riflessione e di elaborazione autonoma di giudizi, compresa quella volta ad evitare i pregiudizi che caratterizzano in quest’area le fasi dei processi decisionali orientati al problem-solving, anche in ordine alle ricadute etiche e sociali che contraddistinguono le scelte organizzative.

Abilità comunicative (communication skills).
Lo svolgimento delle attività laboratoriali di gruppo e la presentazione dei risultati raggiunti rappresenta un importante strumento, adottato nell’insegnamento di Organizzazione Aziendale, per lo sviluppo di capacità comunicative. In particolare, da un lato, le discussioni durante le attività di gruppo sono appositamente costruite per consentire agli studenti di imparare ad interagire e a comunicare, simulando attività di condivisione delle conoscenze e di costruzione del consenso tipiche di contesti lavorativi reali; dall’altro lato, la presentazione del business plan nell’ambito del contest finale è stata ideata proprio per permettere agli studenti di sperimentare in prima persona una reale presentazione della propria idea imprenditoriale di fronte a dei potenziali investitori.

Tali capacità rappresentano una componente “naturale” dell’insegnamento in oggetto, considerato che la tematica della comunicazione organizzativa costituisce argomento di specifica trattazione nell’ambito dello stesso.

Capacità di apprendimento successivo (learning skills).
Considerata l’elevata trasversalità e multidisciplinarietà dei temi trattati, i cui contenuti possono facilmente essere traslati anche in contesti organizzativi diversi dalle imprese (seppur caratterizzati da un orientamento al rispetto delle condizioni di economicità della gestione), l’insegnamento di Organizzazione Aziendale consente di acquisire una base teorica, concettuale ed applicativa utilizzabile per una molteplicità di percorsi educativi e pratici successivi a quello della laurea triennale.

Oltre, infatti, alla naturale prosecuzione verso un percorso di laurea magistrale, non solo di tipo manageriale o aziendalistico, gli studenti acquisiranno competenze ulteriormente sviluppabili, anche in autonomia, ed utilizzabili in aziende, società di consulenza e altre organizzazioni, nonché per la costituzione di start-up innovative e ad elevato contenuto tecnologico.

10620671 | MULTICORE PROGRAMMING6INF/01ENG

Obiettivi formativi

Obiettivi generali:
Il corso è finalizzato all'acquisizione della conoscenza di tecniche algoritmiche e di programmazione adatte alle moderne piattaforme di calcolo multicore ed embedded.

Obiettivi specifici:

Conoscenza e comprensione:
Al termine del corso gli studenti avranno una profonda comprensione dei principali problemi di programmazione posti dai sistemi embedded e multi-core, nonché delle tecniche di programmazione utili per scrivere codice efficiente e scalabile. Avranno una comprensione della programmazione a basso livello e della progettazione HW.

Capacità di applicare conoscenza e comprensione:
gli studenti saranno in grado di progettare, programmare e realizzare sistemi embedded ed avranno una comprensione dei sistemi operativi adottati in tali tipi di sistemi.

Capacità critiche e di giudizio:
gli studenti saranno in grado di affrontare le sfide che si presentano nella progettazione di sistemi embedded e multicore e nell'implementazione di programmi efficienti e scalabili per tali sistemi, anche tenendo conto delle caratteristiche architetturali delle diverse piattaforme di calcolo.

Capacità di comunicare quanto si è appreso:
gli studenti saranno in grado di comunicare in modo efficace, riassumendo le idee principali nella progettazione di software embedded e multicore in modo chiaro e presentando informazioni tecniche accurate.

Capacità di studio autonomo:
obiettivo del corso è di introdurre i principi di base nella progettazione di software embedded e multicore. Gli studenti saranno quindi in grado di estendere la loro conoscenza in modo indipendente, adattandola all’evoluzione delle tecnologie e delle piattaforme di calcolo.

1022267 | PROGRAMMAZIONE PER IL WEB6INF/01ITA

Obiettivi formativi

Obiettivi generali:
Lo scopo del corso è lo studio del linguaggio java lato server, per la realizzazione di applicazioni web. Il corso fornisce inoltre un’analisi critica di diverse soluzioni implementative di molte funzionalità applicative comuni nello sviluppo di applicazioni web.

Obiettivi specifici:
Programmazione lato server mediante Java Servlet e pagine JSP.

Conoscenza e comprensione:
Il corso permetterà la comprensione del supporto fornito dal linguaggio Java alla realizzazione di applicazioni web. In particolare lo studente studierà le motivazioni alla base di tutte le scelte implementative, in particolare facendo riferimento alle architetture client-server e ai protocolli di rete in uso.

Applicare conoscenza e comprensione:
Attraverso il corso lo studente imparerà a riconoscere tra le possibili soluzioni applicative ad un problema, quale offra i maggiori vantaggi in termini di prestazioni, sicurezza, portabilità e efficienza.

Capacità critiche e di giudizio:
Il corso metterà lo studente in condizione di saper scegliere, dato un problema, la migliore metodologia risolutiva, attraverso la profonda comprensione dei requisiti e dei vincoli imposti dall'architettura.

Capacità comunicative:
Lo studente sarà in grado di motivare le proprie scelte nella proposta di uno specifico approccio realizzativo di un’applicazione Web, e fornire una analisi comparativa dell’approccio scelto con altri approcci possibili.

Capacità di apprendimento:
Lo studente svilupperà capacità di studio autonome e di comprensione e valutazione critica di nuove metodologie, tecnologie e modelli di sviluppo di applicazioni Web.

10620643 | SICUREZZA INFORMATICA6INF/01ITA

Obiettivi formativi

Obiettivi generali:
Il corso di Sicurezza ha l’obiettivo di formare figure professionali capaci di affrontare con successo le sfide costituite dai problemi di sicurezza della società dell’informazione.

Obiettivi specifici:
Il corso prevede lo studio di vari modelli di controllo degli accessi, dell’analisi delle principali difficoltà e risoluzioni di problemi di crittografia e dei principali protocolli di sicurezza utilizzati in rete

Conoscenza e comprensione:
Al superamento dell’esame, lo studente avrà conoscenza e capacità di comprensione delle basi della sicurezza informatica e delle principali tecnologie per l'analisi e la soluzione di problemi di sicurezza.

Applicare conoscenza e comprensione:
Il corso mette in grado lo studente di applicare la propria conoscenza e capacità di comprensione per risolvere problemi di sicurezza informatica, con sufficiente autonomia per affrontare problemi complessi; e per la consultazione efficace di documentazione avanzata di tipo scientifico e tecnologico.

Autonomia di giudizio:
Il corso mira ad acquisire capacità d’interpretazione autonoma per proporre soluzioni a problemi di sicurezza congruenti con le tecnologie disponibili, e di aggiornamento continuo dell'evoluzione tecnologica, per formulare giudizi critici autonomi contribuendo all'avanzamento della sicurezza del sistema.

Abilità comunicative:
Lo studente acquisisce la capacità di presentare e di argomentare le proprie idee in merito ai problemi di sicurezza affrontati ed alle soluzioni proposte, sia con colleghi che con utenti

Capacità di apprendimento successivo:
Il corso prevede lo sviluppo di capacità di approfondimento nell’ambito della sicurezza informatica sia degli aspetti metodologici sia di quelli tecnologici, per adeguarsi al progredire delle tecniche e delle soluzioni ai problemi di sicurezza più comuni, e per proseguire anche in autonomia alla soluzione di nuovi problemi di sicurezza.

1041761 | LINGUAGGI E COMPILATORI6INF/01ITA

Obiettivi formativi

Obiettivi generali:
Lo studente imparera' come funziona un compilatore sia dal punto di vista teorico che pratico.

Obiettivi specifici:
Conoscenza e comprensione:
Allo studente saranno presentate le parti della Teoria dei Linguaggi Formali e degli Automi necessarie ad avere una base teorica sul funzionamento dei compilatori.

Applicare conoscenza e comprensione:
Lo studente imparerà come usare noti strumenti pratici per la costruzione di compilatori, come Lex a YACC.

Capacità critiche e di giudizio:
Una parte facoltativa dell'esame consisterà nel produrre un compilatore per un semplice linguaggio di programmazione ad alto livello.

Capacità comunicative:
Il corso non si propone espliciti obiettivi sulle capacità comunicative, eccetto di formare all'esposizione rigorosa degli argomenti formali.

Capacità di apprendimento:
I fondamenti teorici e gli strumenti pratici introdotti nel corso forniranno allo studente una base solida per studi più avanzati in questo campo.

10620674 | INTELLIGENT SYSTEM DESIGN METHODS6INF/01ENG

Obiettivi formativi

Obiettivi generali:
Il corso si propone di fornire agli studenti gli strumenti di base per la modellazione, analisi e progettazione di sistemi intelligenti.

Obiettivi specifici:
Il corso si propone di mettere gli studenti in grado di comprendere ed usare un'ampia gamma di tecniche di modellazione, progettazione, verifica e validazione per sistemi intelligenti.

Conoscenza e comprensione:
Introduzione ad ampio spettro dei principi fondamentali della modellazione, analisi e progettazione dei sistemi intelligenti modellati come sistemi dinamici sia tempo continuo che tempo discreto.

Applicazione di conoscenza e comprensione:
Saper applicare il portafoglio di tecniche e gli approcci illustrati per la modellazione, progettazione, verifica e validazione di sistemi intelligenti.

Autonomia di giudizio:
Gli studenti saranno in grado di prendere autonomamente decisioni razionali sulle tecniche da impiegare nella modellazione, progettazione, verifica e validazione di sistemi intelligenti.

Abilità comunicative:
Gli studenti saranno in grado di interagire in modo proficuo con esperti di dominio su un'ampia gamma di argomenti relativi alla modellazione, progettazione, verifica e validazione di sistemi intelligenti.

Capacità di apprendimento:
Gli studenti saranno in grado di ampliare le loro conoscenze in modo autonomo consultando, secondo necessità, la letteratura scientifica di rilievo.

10620673 | FUNCTIONAL PROGRAMMING6INF/01ENG

Obiettivi formativi

Obiettivi generali:
Apprendimento del paradigma di programmazione funzionale e di aspetti avanzati di programmazione imperativa.
Studio comparato di diversi paradigmi di programmazione (imperativo, funzionale e a oggetti) per sviluppare un senso critico nell'apprendimento e valutazione dei linguaggi di programmazione.

Obiettivi specifici:

Conoscenza e Comprensione:
Aspetti avanzati di programmazione C (in particolare uso di puntatori espliciti e (de)allocazione dinamica di memoria, valutazione della complessità concreta dei programmi). Aspetti base ed avanzati di programmazione funzionale in Haskell (in particolare tipi polimorfi, funzionali di ordine superiore, laziness).

Applicare Conoscenza e Comprensione:
Applicare la metodologie specifiche di diversi paradigmi di programmazione alla soluzione dei problemi.

Capacità Critiche e di Giudizio:
Lo studio comparato dei paradigmi di programmazione permette di valutare ad esempio quale sia il linguaggio più adatto per risolvere un certo problema o sviluppare un progetto software.
Le tecniche di ragionamento sui programmi possono guidare sia il testing che lo sviluppo dei programmi.
Inoltre, lo studente dovrebbe acquisire strumenti necessari per valutare criticamente altri linguaggi di programmazione.

Capacità Comunicative
Lo studente è stimolato, soprattutto nella presentazione da fare a fine corso, a esporre concisamente ma in modo preciso le idee necessarie allo sviluppo di una brillante soluzione a un problema computazionale ed anche l'analisi di un programma.

Capacità di Apprendimento:
Lo studio comparato di diversi paradigmi di programmazione stimola la capacità di apprendimento di altri linguaggi di programmazione, dando allo studente gli strumenti per distinguere gli aspetti caratterizzanti di un linguaggio di programmazione (logica del core language, come ad esempio passaggio di parametri, sistema dei tipi, semantica dei comandi) da quelli più strettamente tecnici (come imparare a usare librerie e strumenti di sviluppo, come IDE e debugger).

10595533 | OPTIMIZATION6INF/01ENG

Obiettivi formativi

Obiettivi generali:
Il corso introduce lo studente alla modellazione matematica di problemi di ottimizzazione, allo studio della programmazione lineare e intera e alle loro applicazioni in contesti reali.

Obiettivi specifici:
Apprendere:
1. Le principali tecniche di modellazione di problemi usando strumenti logico/matematici;
2. Le proprietà teoriche e sulle applicazioni pratiche dei principali problemi di ottimizzazione (in particolare su reti);
3. sulla programmazione lineare e sue applicazioni;
4. sull’uso di software di modellazione ed ottimizzazione.

Conoscenza e comprensione:
Sviluppare
1. Capacità di sintesi, di ragionamento logico e di problem solving, mediante tecniche quantitative;
2. capacità di formulare e risolvere (anche in maniera approssimata) problemi computazionalmente difficili;
3. capacità di usare bibliografia e software in inglese;
4. capacità di identificare problemi di programmazione matematica e ottimizzazione;
5. capacità di realizzare un modello di un problema matematico, determinando se è lineare, intero, non lineare, di trovare soluzioni per il modello usando gli algoritmi appropriati, di interpretare la soluzione;

Applicazione di conoscenza e comprensione:
1. Applicazioni pratiche dei principali problemi di ottimizzazione (in particolare su reti);
2. uso di software di modellazione ed ottimizzazione.

Autonomia di giudizio:
Viene rafforzata la autonomia di giudizio dello studente attraverso l'approfondimento della capacità di sintesi, di ragionamento logico-matematico e di problem solving, mediante tecniche quantitative;

Abilità comunicative:
Il corso sviluppa le abilità comunicative degli studenti attraverso lavoro in equipe degli studenti finalizzato a simulare la risoluzione di problemi di ottimizzazione che si possono presentare nel contesto reale di un azienda di logistica.

Capacità di apprendimento
Le capacità acquisite nel corso sono di utilità in insegnamenti di livello superiore su temi avanzati nella teoria della complessita, di algoritmi di rete e di teoria dei grafi.

Lo studente deve acquisire 6 CFU fra i seguenti esami
InsegnamentoAnnoSemestreCFUSSDLingua
1047635 | MACHINE LEARNING6INF/01ITA

Obiettivi formativi

Obiettivi generali:
Introdurre lo studente alla disciplina dell’apprendimento automatico e alla progettazione e implementazione di sistemi di predizione con apprendimento supervisionato e senza supervisione e alle base del deep learning.
Obiettivi specifici:
Il corso è concepito per introdurre alla disciplina dell’apprendimento automatico (machine learning, ML), una classe di metodi che apprendono pattern dai dati ed effettuano delle predizioni su nuovi dati. Solitamente è utile usare questo tipo di approccio quando non si riesce a programmare il calcolatore con un insieme di regole o un algoritmo ben definito.
Il corso è introduttivo e generale sull’apprendimento automatico ma si toccano alcuni aspetti del Deep Learning.
Conoscenze e comprensione:
Le conoscenze e competenze apprese sono divise su due assi: fornire principi teorici riguardo ai metodi di base per apprendimento con e senza supervisione. Saper applicare tali concetti nella pratica a dati sintetici o dataset reali ma di piccola scala al fine di applicare nella pratica tali nozioni.
Applicare conoscenza e comprensione:
Verranno usati strumenti come NumPy (con un enfasi a scrivere codice vettorizzato), scikit learn, PyTorch (automatic differentiation e piccole reti neurali) per implementare sistemi di base. Le applicazioni e i domini applicativi possono essere diversi, principalmente su dati sintetici o immagini.
Capacità di giudizio:
Sviluppare spirito critico sull’applicazione e l’uso di un sistema di ML e saper valutare e misurare le prestazioni di una algoritmo su dei dati. Saper distinguere i vantaggi e gli svantaggi di diversi algoritmi e determinare il più idoneo in base al problema.
Capacità di comunicazione:
Mostrare padronanza degli argomenti, comunicando in maniera chiara e con rigore logico, e con la giusta terminologia i concetti appresi al corso sia per quanto riguarda la parte teorica che pratica. La comunicazione può avvenire anche con un report su attività di laboratorio svolta, motivando propriamente le decisioni prese.
Capacità di apprendimento:
Il corso pone le basi per comprendere articoli scientifici avanzati su apprendimento automatico in diversi ambiti applicativi (computer vision, NLP) e fornisce una buona base di concetti fondamentali per corsi avanzati su Deep Learning.

1022262 | INTELLIGENZA ARTIFICIALE6INF/01ITA

Obiettivi formativi

Obiettivi generali:
Il corso si propone di esporre gli studenti ad un'ampia panoramica dell'Intelligenza Artificiale (IA).

Obiettivi specifici:
Il corso si propone di mettere gli studenti in grado di comprendere la teoria di un'ampia gamma di tecniche di IA, e di padroneggiarle nella pratica della progettazione di sistemi software intelligenti.

Conoscenza e comprensione:
Introduzione ad ampio spettro dei principi fondamentali e delle diverse branche dell'Intelligenza Artificiale (IA) e conoscenze su risoluzione di problemi mediante ricerca, inferenza logica, pianificazione, ragionamento, apprendimento.

Applicare conoscenza e comprensione:
Saper applicare il portafoglio di tecniche e gli approcci illustrati per la progettazione e realizzazione di sistemi software intelligenti.

Capacità critiche e di giudizio:
Gli studenti saranno in grado di prendere autonomamente decisioni razionali sulle tecniche di IA migliori da impiegare nella progettazione di sistemi software intelligenti.

Capacità comunicative:
Gli studenti saranno in grado di interagire in modo proficuo con altri ricercatori in IA su un'ampia gamma di argomenti.

Capacità di apprendimento:
Gli studenti saranno in grado di ampliare le loro conoscenze in modo autonomo consultando, secondo necessità, la letteratura scientifica sull'IA.