| 101226 | CALCOLO DIFFERENZIALE [MAT/05] [ITA] | 1º | 1º | 6 |
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.
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à critiche e di giudizio: lo studente avrà le basi per utilizzare un grafico come strumento di analisi di una situazione concreta descrivibile matematicamente.
Capacità comunicative: 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.
|
| 1015883 | FONDAMENTI DI PROGRAMMAZIONE [INF/01] [ITA] | 1º | 1º | 9 |
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.
|
| 1020420 | METODI MATEMATICI PER L'INFORMATICA [MAT/01] [ITA] | 1º | 1º | 6 |
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.
|
| 1015880 | PROGETTAZIONE DI SISTEMI DIGITALI [INF/01] [ITA] | 1º | 1º | 6 |
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
Conoscenza 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à critiche e di giudizio:
saper scegliere il miglior approccio, tra i vari studiati, per risolvere un determinato compito
Capacità comunicative:
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.
|
| 1015881 | ARCHITETTURA DEGLI ELABORATORI [INF/01] [ITA] | 1º | 2º | 6 |
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.
Conoscenza e comprensione:
Lo studente acquisirà conoscenza sull’organizzazione del microprocessore MIPS, come implementazione delle idee generali che fanno parte degli obbiettivi 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.
Applicazione di conoscenza e comprensione:
Le conoscenze sono applicate sulla architettura MIPS, comprese in modo tale da poter 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.
Autonomia 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.
Abilità comunicative:
Il corso non si propone espliciti obiettivi sulle capacità comunicative, eccetto di formare all'esposizione rigorosa degli argomenti tecnici.
Capacità di apprendimento successivo:
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.
|
| 97796 | CALCOLO INTEGRALE [MAT/05] [ITA] | 1º | 2º | 6 |
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:
Conoscenza 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 sara’ 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.
Applicazione di conoscenza e comprensione:
Il corso prevede lezioni teoriche ed esercitazioni per apprendere lo svolgimento degli esercizi pratici.
A meta’ del corso è prevista una prova pratica per verificare l’apprendimento del programma svolto.
|
| 1015885 | INTRODUZIONE AGLI ALGORITMI [INF/01] [ITA] | 1º | 2º | 6 |
Obiettivi formativi Obiettivi generali
Introduzione ai metodi di base per la progettazione e l'analisi degli algoritmi, iterativi e ricorsivi, ed alla valutazione della loro efficienza computazionale.
Obiettivi specifici
Conoscenza e comprensione:
Al termine del corso gli studenti conosceranno le metodologie di base per la progettazione e l'analisi di algoritmi iterativi e ricorsivi, le strutture dati elementari, alcuni modi per scandire tali strutture, i principali algoritmi di ordinamento e le implementazioni più elementari dei dizionari.
Applicare conoscenza e comprensione:
Al termine del corso 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à critiche e di giudizio:
Lo studente avrà 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à 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 successivo:
Le conoscenze acquisite permetteranno allo studente di affrontare lo studio, individuale o previsto nell'ambito di un corso di laurea magistrale, di tecniche algoritmiche e di strutture dati di base.
|
| 1015884 | METODOLOGIE DI PROGRAMMAZIONE [INF/01] [ITA] | 1º | 2º | 9 |
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.
|
| AAF1101 | LINGUA INGLESE [N/D] [ENG] | 1º | 2º | 3 |
Obiettivi formativi L'insegnamento della lingua inglese punta a mettere in grado lo studente di leggere correttamente la letteratura scientifica in inglese, la documentazione tecnica, e di poter sostenere conversazioni in inglese su aspetti tecnici.
|
| 1015886 | ALGEBRA [MAT/02] [ITA] | 2º | 1º | 9 |
Obiettivi formativi Obiettivi generali:
Fornire conoscenze di base di teoria dei gruppi e di algebra lineare che sono comunemente utilizzati in informatica."
Obiettivi specifici:
Concetti di Algebra elementari
Introduzione alle strutture algebriche
Sviluppo del linguaggio dell'algebra lineare: spazi vettoriali e loro omomorfismi; spazi vettoriali, numeri e algebra delle matrici; endomorfismi, determinanti e diagonalizzazione; applicazioni.
Conoscenze e comprensione:
Alla fine del corso lo studente sarà in grado di fare conti in gruppi piccoli di facile struttura e di comprendere il significato e l'utilizzo di matrici nello studio di fenomeni lineari.
Applicare conoscenza e comprensione:
Utilizzo della diagonalizzazione di operatori per fornire un'interpretazione geometrica ad un fenomeno lineare e ricavarne informazioni rilevanti. Utilizzo del concetto di gruppo nello studio di problemi combinatori finiti.
Capacità di giudizio:
Gli studenti saranno in grado di scegliere lo strumento algebrico più appropriato allo studio di un problema.
Capacità di comunicazione:
Gli studenti impareranno il linguaggio dell'algebra lineare e dei gruppi e rudimenti di complessità.
Capacità di apprendimento:
L'apprendimento del linguaggio lineare e gruppale fornirà agli studenti la capacità di apprendere argomenti che ne fanno uso.
|
| 1020421 | CALCOLO DELLE PROBABILITA' [MAT/06] [ITA] | 2º | 1º | 9 |
Obiettivi formativi Obiettivi generali:
Acquisire conoscenza e capacità di applicazione di argomenti di base di probabilità e statistica.
Obiettivi specifici:
Assiomi e proprietà elementari delle probabilità. Variabili Aleatorie. Distribuzioni continue e discrete. Valori attesi. Introduzione all'inferenza statistica.
Conoscenza e comprensione:
Al termine del corso lo studente avrà 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.
Applicare conoscenza e comprensione:
Gli studenti che abbiano superato l’esame saranno in grado di applicare le nozioni di calcolo combinatorio per risolvere semplici problemi di probabilità discreta, problemi inerenti vettori casuali discreti e numeri casuali rappresentati da variabili aleatorie continue. Lo studente sarà anche in grado di apprezzare il significato e le implicazioni dell’indipendenza e del condizionamento (nell’ambito di modelli discreti), comprendere il significato di alcuni teoremi limite fondamentali, quali la legge dei grandi numeri.
Capacità critiche e di giudizio:
Lo studente avrà le basi per analizzare e costruire modelli probabilistici in semplici situazioni di interesse fisico, biologico e tecnologico, utilizzare tavole e software di simulazione delle leggi discrete di più comune applicazione, nonché della legge gaussiana, e di comprendere l’utilizzazione di strumenti statistici elementari nell’inferenza, nel campionamento statistico e nella simulazione.
Capacità comunicative:
Capacità di esporre i contenuti nella parte orale della verifica e negli eventuali quesiti teorici presenti nella prova scritta.
Capacità di apprendimento: le conoscenze acquisite permetteranno uno studio, individuale o impartito in un corso relativo ad aspetti più specialistici di teoria della probabilità.
|
| 1020422 | SISTEMI OPERATIVI [INF/01] [ITA] | 2º | 1º | 12 |
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.
Conoscere ed usare l'interfaccia di programmazione fra sviluppatore software e kernel relativamente ai servizi base di accesso alle risorse del sistema operativo Linux.
Obiettivi specifici:
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.
Conoscere i concetti (processi, espressioni regolari, file system) e i comandi shell più importanti di Linux. Saper creare script in Bash. Saper scrivere programmi C che usino le system call di Linux.
Conoscenza 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 computer. Metodi e tecniche fondamentali per la rappresentazione dei processi in memoria e la gestione efficiente di multiprogrammazione—molteplici processi eseguiti contemporaneamente in un sistema con risorse limitate.
Conoscenza del funzionamento interno del sistema operativo Linux. Conoscenza del funzionamento della shell Bash. Fondamenti del linguaggio C. Conoscenza delle principali system call di Linux.
Applicare conoscenza e comprensione:
Progettare programmi a livello utente e di sistema in modo efficiente e sicuro.
Saper creare script in Bash in grado di risolvere problemi pratici. Saper scrivere programmi in C che sfruttino le system call di Linux per ottimizzare l'uso delle risorse.
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.
Saper valutare la soluzione più appropriata per ottenere un determinato risultato, usando o singoli comandi shell, o uno script Bash, o un programma C basato su system call di Linux.
Capacità comunicative:
Saper comunicare in modo chiaro e preciso le caratteristiche dei sistemi operativi e i loro meccanismi di supporto software/hardware.
Essere in grado di comunicare e documentare script Bash e programmi C basati su system call di Linux.
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.
Essere in grado di usare i concetti appresi in corsi avanzati da sistemista aziendale, o in un eventuale corso avanzato che richieda interazione con Linux, come ad es.: programmazione di sistema, cloud computing, sistemi distribuiti, cybersecurity.
|
| I MODULO [INF/01] [ITA] | 2º | 1º | 6 |
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.
Conoscere ed usare l'interfaccia di programmazione fra sviluppatore software e kernel relativamente ai servizi base di accesso alle risorse del sistema operativo Linux.
Obiettivi specifici:
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.
Conoscere i concetti (processi, espressioni regolari, file system) e i comandi shell più importanti di Linux. Saper creare script in Bash. Saper scrivere programmi C che usino le system call di Linux.
Conoscenza 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 computer. Metodi e tecniche fondamentali per la rappresentazione dei processi in memoria e la gestione efficiente di multiprogrammazione—molteplici processi eseguiti contemporaneamente in un sistema con risorse limitate.
Conoscenza del funzionamento interno del sistema operativo Linux. Conoscenza del funzionamento della shell Bash. Fondamenti del linguaggio C. Conoscenza delle principali system call di Linux.
Applicare conoscenza e comprensione:
Progettare programmi a livello utente e di sistema in modo efficiente e sicuro.
Saper creare script in Bash in grado di risolvere problemi pratici. Saper scrivere programmi in C che sfruttino le system call di Linux per ottimizzare l'uso delle risorse.
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.
Saper valutare la soluzione più appropriata per ottenere un determinato risultato, usando o singoli comandi shell, o uno script Bash, o un programma C basato su system call di Linux.
Capacità comunicative:
Saper comunicare in modo chiaro e preciso le caratteristiche dei sistemi operativi e i loro meccanismi di supporto software/hardware.
Essere in grado di comunicare e documentare script Bash e programmi C basati su system call di Linux.
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.
Essere in grado di usare i concetti appresi in corsi avanzati da sistemista aziendale, o in un eventuale corso avanzato che richieda interazione con Linux, come ad es.: programmazione di sistema, cloud computing, sistemi distribuiti, cybersecurity.
|
| II MODULO [INF/01] [ITA] | 2º | 1º | 6 |
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.
Conoscere ed usare l'interfaccia di programmazione fra sviluppatore software e kernel relativamente ai servizi base di accesso alle risorse del sistema operativo Linux.
Obiettivi specifici:
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.
Conoscere i concetti (processi, espressioni regolari, file system) e i comandi shell più importanti di Linux. Saper creare script in Bash. Saper scrivere programmi C che usino le system call di Linux.
Conoscenza 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 computer. Metodi e tecniche fondamentali per la rappresentazione dei processi in memoria e la gestione efficiente di multiprogrammazione—molteplici processi eseguiti contemporaneamente in un sistema con risorse limitate.
Conoscenza del funzionamento interno del sistema operativo Linux. Conoscenza del funzionamento della shell Bash. Fondamenti del linguaggio C. Conoscenza delle principali system call di Linux.
Applicare conoscenza e comprensione:
Progettare programmi a livello utente e di sistema in modo efficiente e sicuro.
Saper creare script in Bash in grado di risolvere problemi pratici. Saper scrivere programmi in C che sfruttino le system call di Linux per ottimizzare l'uso delle risorse.
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.
Saper valutare la soluzione più appropriata per ottenere un determinato risultato, usando o singoli comandi shell, o uno script Bash, o un programma C basato su system call di Linux.
Capacità comunicative:
Saper comunicare in modo chiaro e preciso le caratteristiche dei sistemi operativi e i loro meccanismi di supporto software/hardware.
Essere in grado di comunicare e documentare script Bash e programmi C basati su system call di Linux.
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.
Essere in grado di usare i concetti appresi in corsi avanzati da sistemista aziendale, o in un eventuale corso avanzato che richieda interazione con Linux, come ad es.: programmazione di sistema, cloud computing, sistemi distribuiti, cybersecurity.
|
| 1015887 | BASI DI DATI [INF/01] [ITA] | 2º | 1º | 12 |
Obiettivi formativi Obiettivi generali:
Essere in grado di progettare/valutare le proprietà, la struttura di memorizzazione e i protocolli di un sistema di gestione di basi di dati.
Esporre gli studenti a solide metodologie di progettazione e realizzazione di applicazioni per basi di dati
Obiettivi specifici:
Conoscenza delle proprietà di uno schema relazionale e di una decomposizione. Capacità di interrogare una base di dati. Capacità di valutare i costi delle operazioni di accesso ai dati. Conoscenza di protocolli di per il controllo della concorrenza.
Esporre gli studenti a metodologie formali e scalabili per l'analisi concettuale e la progettazione di applicazioni per basi di dati e a tecnologie standard per la realizzazione di basi di dati relazionali.
Conoscenza e comprensione:
Fondamenti teorici della progettazione e della interrogazione di una base di dati relazionale. Principali strutture di organizzazione dei dati su memoria secondaria. Principali tecniche usate nei DBMS per il controllo dell’esecuzione concorrente delle transazioni.
Gli studenti acquisiranno conoscenze metodologiche fondamentali per la progettazione di applicazioni per 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à) e per la loro realizzazione (utilizzo di DBMS relazionali e del linguaggio SQL).
Applicare conoscenza e comprensione:
Progettare schemi relazionali con “buone proprietà”. Interrogare una base di dati mediante algebra relazionale. Valutare i costi delle operazioni fondamentali su file con diversi tipi di organizzazione fisica.
Gli studenti saranno in grado di applicare in modo efficace le conoscenze acquisite in progetti reali di applicazioni per basi non banali.
Capacità critiche e di giudizio:
Essere in grado di valutare le proprietà di uno schema relazionale e di una sua decomposizione. Essere in grado di scegliere la struttura dati più appropriata per memorizzare le informazioni di uno schema.
Gli studenti saranno in grado di prendere autonomamente decisioni razionali in tutte le fasi del processo di progettazione di applicazioni per basi di dati.
Capacità comunicative:
Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati
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:
Essere in grado di utilizzare i concetti acquisiti nel modulo successivo del corso e in un eventuale corso avanzato di basi di Dati.
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.
|
| II MODULO [INF/01] [ITA] | 2º | 1º | 6 |
Obiettivi formativi Obiettivi generali:
Esporre gli studenti a solide metodologie di progettazione e realizzazione di applicazioni per basi di dati
Obiettivi specifici:
Esporre gli studenti a metodologie formali e scalabili per l'analisi concettuale e la progettazione di applicazioni per basi di dati e a tecnologie standard per la loro realizzazione.
Conoscenza e comprensione:
Gli studenti acquisiranno conoscenze metodologiche fondamentali per la progettazione di applicazioni per 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à) 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à critiche e di giudizio:
Gli studenti saranno in grado di prendere autonomamente decisioni razionali in tutte le fasi del processo di progettazione di applicazioni per basi di dati.
Capacità comunicative:
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.
|
| I MODULO [INF/01] [ITA] | 2º | 1º | 6 |
Obiettivi formativi Obiettivi generali:
Essere in grado di progettare/valutare le proprietà, la struttura di memorizzazione e i protocolli di un sistema di gestione di basi di dati.
Esporre gli studenti a solide metodologie di progettazione e realizzazione di applicazioni per basi di dati
Obiettivi specifici:
Conoscenza delle proprietà di uno schema relazionale e di una decomposizione. Capacità di interrogare una base di dati. Capacità di valutare i costi delle operazioni di accesso ai dati. Conoscenza di protocolli di per il controllo della concorrenza.
Esporre gli studenti a metodologie formali e scalabili per l'analisi concettuale e la progettazione di applicazioni per basi di dati e a tecnologie standard per la realizzazione di basi di dati relazionali.
Conoscenza e comprensione:
Fondamenti teorici della progettazione e della interrogazione di una base di dati relazionale. Principali strutture di organizzazione dei dati su memoria secondaria. Principali tecniche usate nei DBMS per il controllo dell’esecuzione concorrente delle transazioni.
Gli studenti acquisiranno conoscenze metodologiche fondamentali per la progettazione di applicazioni per 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à) e per la loro realizzazione (utilizzo di DBMS relazionali e del linguaggio SQL).
Applicare conoscenza e comprensione:
Progettare schemi relazionali con “buone proprietà”. Interrogare una base di dati mediante algebra relazionale. Valutare i costi delle operazioni fondamentali su file con diversi tipi di organizzazione fisica.
Gli studenti saranno in grado di applicare in modo efficace le conoscenze acquisite in progetti reali di applicazioni per basi non banali.
Capacità critiche e di giudizio:
Essere in grado di valutare le proprietà di uno schema relazionale e di una sua decomposizione. Essere in grado di scegliere la struttura dati più appropriata per memorizzare le informazioni di uno schema.
Gli studenti saranno in grado di prendere autonomamente decisioni razionali in tutte le fasi del processo di progettazione di applicazioni per basi di dati.
Capacità comunicative:
Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati
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:
Essere in grado di utilizzare i concetti acquisiti nel modulo successivo del corso e in un eventuale corso avanzato di basi di Dati.
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.
|
| 1015887 | BASI DI DATI [INF/01] [ITA] | 2º | 2º | 12 |
Obiettivi formativi Obiettivi generali:
Essere in grado di progettare/valutare le proprietà, la struttura di memorizzazione e i protocolli di un sistema di gestione di basi di dati.
Esporre gli studenti a solide metodologie di progettazione e realizzazione di applicazioni per basi di dati
Obiettivi specifici:
Conoscenza delle proprietà di uno schema relazionale e di una decomposizione. Capacità di interrogare una base di dati. Capacità di valutare i costi delle operazioni di accesso ai dati. Conoscenza di protocolli di per il controllo della concorrenza.
Esporre gli studenti a metodologie formali e scalabili per l'analisi concettuale e la progettazione di applicazioni per basi di dati e a tecnologie standard per la realizzazione di basi di dati relazionali.
Conoscenza e comprensione:
Fondamenti teorici della progettazione e della interrogazione di una base di dati relazionale. Principali strutture di organizzazione dei dati su memoria secondaria. Principali tecniche usate nei DBMS per il controllo dell’esecuzione concorrente delle transazioni.
Gli studenti acquisiranno conoscenze metodologiche fondamentali per la progettazione di applicazioni per 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à) e per la loro realizzazione (utilizzo di DBMS relazionali e del linguaggio SQL).
Applicare conoscenza e comprensione:
Progettare schemi relazionali con “buone proprietà”. Interrogare una base di dati mediante algebra relazionale. Valutare i costi delle operazioni fondamentali su file con diversi tipi di organizzazione fisica.
Gli studenti saranno in grado di applicare in modo efficace le conoscenze acquisite in progetti reali di applicazioni per basi non banali.
Capacità critiche e di giudizio:
Essere in grado di valutare le proprietà di uno schema relazionale e di una sua decomposizione. Essere in grado di scegliere la struttura dati più appropriata per memorizzare le informazioni di uno schema.
Gli studenti saranno in grado di prendere autonomamente decisioni razionali in tutte le fasi del processo di progettazione di applicazioni per basi di dati.
Capacità comunicative:
Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati
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:
Essere in grado di utilizzare i concetti acquisiti nel modulo successivo del corso e in un eventuale corso avanzato di basi di Dati.
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.
|
| II MODULO [INF/01] [ITA] | 2º | 2º | 6 |
Obiettivi formativi Obiettivi generali:
Esporre gli studenti a solide metodologie di progettazione e realizzazione di applicazioni per basi di dati
Obiettivi specifici:
Esporre gli studenti a metodologie formali e scalabili per l'analisi concettuale e la progettazione di applicazioni per basi di dati e a tecnologie standard per la loro realizzazione.
Conoscenza e comprensione:
Gli studenti acquisiranno conoscenze metodologiche fondamentali per la progettazione di applicazioni per 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à) 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à critiche e di giudizio:
Gli studenti saranno in grado di prendere autonomamente decisioni razionali in tutte le fasi del processo di progettazione di applicazioni per basi di dati.
Capacità comunicative:
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.
|
| I MODULO [INF/01] [ITA] | 2º | 2º | 6 |
Obiettivi formativi Obiettivi generali:
Essere in grado di progettare/valutare le proprietà, la struttura di memorizzazione e i protocolli di un sistema di gestione di basi di dati.
Esporre gli studenti a solide metodologie di progettazione e realizzazione di applicazioni per basi di dati
Obiettivi specifici:
Conoscenza delle proprietà di uno schema relazionale e di una decomposizione. Capacità di interrogare una base di dati. Capacità di valutare i costi delle operazioni di accesso ai dati. Conoscenza di protocolli di per il controllo della concorrenza.
Esporre gli studenti a metodologie formali e scalabili per l'analisi concettuale e la progettazione di applicazioni per basi di dati e a tecnologie standard per la realizzazione di basi di dati relazionali.
Conoscenza e comprensione:
Fondamenti teorici della progettazione e della interrogazione di una base di dati relazionale. Principali strutture di organizzazione dei dati su memoria secondaria. Principali tecniche usate nei DBMS per il controllo dell’esecuzione concorrente delle transazioni.
Gli studenti acquisiranno conoscenze metodologiche fondamentali per la progettazione di applicazioni per 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à) e per la loro realizzazione (utilizzo di DBMS relazionali e del linguaggio SQL).
Applicare conoscenza e comprensione:
Progettare schemi relazionali con “buone proprietà”. Interrogare una base di dati mediante algebra relazionale. Valutare i costi delle operazioni fondamentali su file con diversi tipi di organizzazione fisica.
Gli studenti saranno in grado di applicare in modo efficace le conoscenze acquisite in progetti reali di applicazioni per basi non banali.
Capacità critiche e di giudizio:
Essere in grado di valutare le proprietà di uno schema relazionale e di una sua decomposizione. Essere in grado di scegliere la struttura dati più appropriata per memorizzare le informazioni di uno schema.
Gli studenti saranno in grado di prendere autonomamente decisioni razionali in tutte le fasi del processo di progettazione di applicazioni per basi di dati.
Capacità comunicative:
Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati
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:
Essere in grado di utilizzare i concetti acquisiti nel modulo successivo del corso e in un eventuale corso avanzato di basi di Dati.
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.
|
| 1015888 | PROGETTAZIONE DI ALGORITMI [INF/01] [ITA] | 2º | 2º | 9 |
Obiettivi formativi Obiettivi generali
Acquisire la conoscenza di base delle più note tecniche algoritmiche di progettazione e delle tecniche di valutazione della correttezza e della complessità degli algoritmi.
Obiettivi specifici
Conoscenza e comprensione:
Al termine del corso gli studenti posseggono le conoscenze di base relative a:
- tecniche fondamentali di progettazione algoritmica;
- analisi della correttezza e della efficienza degli algoritmi;
Applicazione di conoscenza e comprensione:
Al termine del corso gli studenti sono in grado di:
- analizzare le prestazioni di un algoritmo tramite strumenti matematici rigorosi;
- analizzare algoritmi e strutture dati
- progettare ed analizzare nuovi algoritmi, sfruttando le metodologie presentate durante il corso.
Autonomia di giudizio:
Lo studente alla fine del corso deve essere in grado di scegliere autonomamente qual’è la tecnica algoritmica più adatta da applicare per un determinato problema e valutare tra più soluzioni algoritmiche per un certo problema qual’è da preferirsi.
Abilità comunicative:
Lo studente acquisirà la capacità di esprimere un’idea algoritmica tramite l’uso di uno pseudocodice.
Capacità di apprendimento:
Lo studente avrà acquisito la capacità di analizzare un problema, progettare le necessarie strutture dati e un algoritmo corretto ed efficiente che lo risolva.
|
| 1015889 | RETI DI ELABORATORI [INF/01] [ITA] | 2º | 2º | 9 |
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.
|
| 1020422 | SISTEMI OPERATIVI [INF/01] [ITA] | 2º | 2º | 12 |
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.
Conoscere ed usare l'interfaccia di programmazione fra sviluppatore software e kernel relativamente ai servizi base di accesso alle risorse del sistema operativo Linux.
Obiettivi specifici:
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.
Conoscere i concetti (processi, espressioni regolari, file system) e i comandi shell più importanti di Linux. Saper creare script in Bash. Saper scrivere programmi C che usino le system call di Linux.
Conoscenza 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 computer. Metodi e tecniche fondamentali per la rappresentazione dei processi in memoria e la gestione efficiente di multiprogrammazione—molteplici processi eseguiti contemporaneamente in un sistema con risorse limitate.
Conoscenza del funzionamento interno del sistema operativo Linux. Conoscenza del funzionamento della shell Bash. Fondamenti del linguaggio C. Conoscenza delle principali system call di Linux.
Applicare conoscenza e comprensione:
Progettare programmi a livello utente e di sistema in modo efficiente e sicuro.
Saper creare script in Bash in grado di risolvere problemi pratici. Saper scrivere programmi in C che sfruttino le system call di Linux per ottimizzare l'uso delle risorse.
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.
Saper valutare la soluzione più appropriata per ottenere un determinato risultato, usando o singoli comandi shell, o uno script Bash, o un programma C basato su system call di Linux.
Capacità comunicative:
Saper comunicare in modo chiaro e preciso le caratteristiche dei sistemi operativi e i loro meccanismi di supporto software/hardware.
Essere in grado di comunicare e documentare script Bash e programmi C basati su system call di Linux.
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.
Essere in grado di usare i concetti appresi in corsi avanzati da sistemista aziendale, o in un eventuale corso avanzato che richieda interazione con Linux, come ad es.: programmazione di sistema, cloud computing, sistemi distribuiti, cybersecurity.
|
| I MODULO [INF/01] [ITA] | 2º | 2º | 6 |
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.
Conoscere ed usare l'interfaccia di programmazione fra sviluppatore software e kernel relativamente ai servizi base di accesso alle risorse del sistema operativo Linux.
Obiettivi specifici:
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.
Conoscere i concetti (processi, espressioni regolari, file system) e i comandi shell più importanti di Linux. Saper creare script in Bash. Saper scrivere programmi C che usino le system call di Linux.
Conoscenza 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 computer. Metodi e tecniche fondamentali per la rappresentazione dei processi in memoria e la gestione efficiente di multiprogrammazione—molteplici processi eseguiti contemporaneamente in un sistema con risorse limitate.
Conoscenza del funzionamento interno del sistema operativo Linux. Conoscenza del funzionamento della shell Bash. Fondamenti del linguaggio C. Conoscenza delle principali system call di Linux.
Applicare conoscenza e comprensione:
Progettare programmi a livello utente e di sistema in modo efficiente e sicuro.
Saper creare script in Bash in grado di risolvere problemi pratici. Saper scrivere programmi in C che sfruttino le system call di Linux per ottimizzare l'uso delle risorse.
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.
Saper valutare la soluzione più appropriata per ottenere un determinato risultato, usando o singoli comandi shell, o uno script Bash, o un programma C basato su system call di Linux.
Capacità comunicative:
Saper comunicare in modo chiaro e preciso le caratteristiche dei sistemi operativi e i loro meccanismi di supporto software/hardware.
Essere in grado di comunicare e documentare script Bash e programmi C basati su system call di Linux.
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.
Essere in grado di usare i concetti appresi in corsi avanzati da sistemista aziendale, o in un eventuale corso avanzato che richieda interazione con Linux, come ad es.: programmazione di sistema, cloud computing, sistemi distribuiti, cybersecurity.
|
| II MODULO [INF/01] [ITA] | 2º | 2º | 6 |
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.
Conoscere ed usare l'interfaccia di programmazione fra sviluppatore software e kernel relativamente ai servizi base di accesso alle risorse del sistema operativo Linux.
Obiettivi specifici:
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.
Conoscere i concetti (processi, espressioni regolari, file system) e i comandi shell più importanti di Linux. Saper creare script in Bash. Saper scrivere programmi C che usino le system call di Linux.
Conoscenza 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 computer. Metodi e tecniche fondamentali per la rappresentazione dei processi in memoria e la gestione efficiente di multiprogrammazione—molteplici processi eseguiti contemporaneamente in un sistema con risorse limitate.
Conoscenza del funzionamento interno del sistema operativo Linux. Conoscenza del funzionamento della shell Bash. Fondamenti del linguaggio C. Conoscenza delle principali system call di Linux.
Applicare conoscenza e comprensione:
Progettare programmi a livello utente e di sistema in modo efficiente e sicuro.
Saper creare script in Bash in grado di risolvere problemi pratici. Saper scrivere programmi in C che sfruttino le system call di Linux per ottimizzare l'uso delle risorse.
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.
Saper valutare la soluzione più appropriata per ottenere un determinato risultato, usando o singoli comandi shell, o uno script Bash, o un programma C basato su system call di Linux.
Capacità comunicative:
Saper comunicare in modo chiaro e preciso le caratteristiche dei sistemi operativi e i loro meccanismi di supporto software/hardware.
Essere in grado di comunicare e documentare script Bash e programmi C basati su system call di Linux.
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.
Essere in grado di usare i concetti appresi in corsi avanzati da sistemista aziendale, o in un eventuale corso avanzato che richieda interazione con Linux, come ad es.: programmazione di sistema, cloud computing, sistemi distribuiti, cybersecurity.
|
| 1022301 | INGEGNERIA DEL SOFTWARE [INF/01] [ITA] | 3º | 1º | 6 |
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.
|
| 1041727 | AUTOMI CALCOLABILITA' E COMPLESSITA' [INF/01] [ITA] | 3º | 1º | 6 |
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à
|
| A SCELTA DELLO STUDENTE [N/D] [ITA] | 3º | 1º | 6 |
| A SCELTA DELLO STUDENTE [N/D] [ITA] | 3º | 2º | 6 |
| AAF1004 | PROVA FINALE [N/D] [ITA] | 3º | 2º | 6 |
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.
|
| AAF1053 | TIROCINIO [N/D] [ITA] | 3º | 2º | 15 |
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.
|
| Optional group: Insegnamenti metodologici di completamento | | | |
| Optional group: Insegnamenti tecnologici affini | | | |
| Optional group: Insegnamenti tecnologici di completamento | | | |