Corso di laurea: Informatica
A.A. 2020/2021
Conoscenza e capacità di comprensione
Il laureato in Informatica acquisirà una conoscenza approfondita delle basi scientifico-metodologiche dell'Informatica, delle sue principali aree e dei suoi domini di applicazione, nonché delle principali tecnologie per l'analisi, la progettazione, la manutenzione e la gestione di sistemi informatici. Tali conoscenze saranno acquisite tramite lezioni frontali, esercitazioni, attività di laboratorio svolte in modalità individuale o di gruppo, o sotto la guida di un tutore, nonché attraverso attività progettuali, tipicamente svolte in gruppo. La verifica del raggiungimento di questo obiettivo formativo è ottenuta con valutazioni in itinere, e prove finali (esami) scritte e orali. Numerosi corsi prevedono anche verifiche pratiche dei risultati delle attività di laboratorio di carattere individuale o attività di progettazione, tipicamente da svolgere in gruppo, in analogia con quanto si può presentare in situazioni lavorative reali.Capacità di applicare conoscenza e comprensione
Il percorso formativo mette in grado il laureato di applicare la propria conoscenza e capacità di comprensione al fine di risolvere problemi. Tali capacità sono in genere sviluppate tramite la progettazione e realizzazione di sistemi informatici, o attraverso l’applicazione di principi teorici a problemi applicativi. La verifica della capacità di applicare conoscenza e comprensione, oltre che il raggiungimento complessivo di un adeguato livello di conoscenze e capacità di comprensione, avviene tramite gli esami finali dei singoli corsi e complessivamente attraverso la prova finale, relativa a un’attività di tirocinio, svolta sotto la supervisione di un docente.Autonomia di giudizio
Al termine del percorso formativo il laureato in Informatica avrà acquisito:
- capacità di interpretare autonomamente gli elementi e le informazioni di cui dispone (ad esempio, le richieste di un committente) al fine di proporre soluzioni congruenti con le possibilità consentite dalle tecnologie disponibili;
- capacità di aggiornamento continuo delle proprie conoscenze per poter affrontare nuove problematiche e mantenersi al passo con l'evoluzione tecnologica.
Tali capacità lo mettono in grado di:
- formulare propri giudizi critici e sostenerli nell'ambito di un gruppo di lavoro, offrendo così il proprio contributo all'avanzamento delle attività;
- avere autonomia di giudizio rispetto alle responsabilità ed alle implicazioni etiche della professione di informatico.
Lo sviluppo della capacità di giudizio degli studenti avviene sia durante le lezioni e le esercitazioni
che nell'ambito delle attività di laboratorio e del tirocinio formativo. In particolare, nelle lezioni e esercitazioni gli studenti vengono posti di fronte a snodi problematici (ad esempio riguardo alla scelta delle tecniche algoritmiche più vantaggiose in una data situazione) e vengono sollecitati a proporre soluzioni e a motivarle; nei laboratori e nelle attività progettuali la necessità di prendere decisioni è inerente alla natura del problema, mentre il tirocinio formativo è tipicamente basato sulla proposta di soluzioni tecnologiche a problemi reali, tali da richiedere scelte motivate.
La verifica della capacità di giudizio avviene attraverso le prove d'esame, anche in itinere, e la valutazione della documentazione prodotta a corredo delle attività di laboratorio e del tirocinio formativo. Nella valutazione dell’attività di tirocinio, particolare attenzione viene rivolta a quanto lo studente abbia portato un contributo autonomo alla soluzione, anche e soprattutto qualora il lavoro si sia svolto all’interno di un gruppo comprendente personale senior.
Abilità comunicative
Il titolo finale sarà conferito agli studenti che avranno acquisito la capacità di:
- presentare ed argomentare le proprie idee in merito ai problemi affrontati ed alle soluzioni proposte, tanto ad interlocutori specialisti che non specialisti;
- comunicare efficacemente e discutere proficuamente con colleghi ed utenti circa i problemi relativi alla propria area di competenza professionale.
Lo sviluppo delle abilità comunicative avviene nell'arco di tutto il corso di studio, sia in occasione di colloqui fra lo studente ed i docenti, sia nell'ambito dei gruppi che svolgono attività di laboratorio, sia fra lo studente ed interlocutori esterni durante il tirocinio formativo.
La verifica di tali abilità avviene attraverso la valutazione di ciò che viene espresso dagli studenti in
forma orale o scritta sia durante le prove intermedie e la prova d'esame dei singoli insegnamenti che
in occasione delle attività di laboratorio, del tirocinio formativo e della prova finale. In particolare, la prova finale consiste nella redazione di una relazione e nella presentazione, mediante supporti digitali del lavoro svolto, in modo comprensibile anche a chi non conosca i dettagli della specifica problematica affrontata nel tirocinio. Alcuni corsi prevedono pure, a integrazione dell’esame finale, presentazione di progetti, o di articoli dalla letteratura scientifica.
Capacità di apprendimento
Il percorso formativo ha fra gli altri l'obiettivo di sviluppare le capacità di approfondimento degli aspetti metodologici e tecnologici delle discipline informatiche, in modo che il laureato:
- comprenda l'evoluzione tecnologica e sia in grado di adeguarsi al progredire delle discipline informatiche;
- sia in grado di affrontare cicli di studio successivi nell'ambito delle discipline informatiche, anche finalizzati allo sviluppo di attività di ricerca;
- possa proseguire il proprio percorso formativo anche in autonomia, grazie alla capacità di consultare efficacemente documentazione di tipo scientifico e tecnologico.
Lo sviluppo delle capacità di apprendimento avviene nell'arco di tutto il corso di studio: tutte le attività previste (lezioni, esercitazioni, attività di laboratorio da soli o in gruppo, tirocinio formativo)
concorrono al progressivo aumento delle capacità di apprendimento.
Esempi di pratiche che favoriscono queste capacità sono: la proposta di esercizi di difficoltà crescente durante il corso; la predisposizione di spazi e tempi per permettere agli studenti di rivolgersi ai docenti e ai tutori assegnati per approfondire i punti in cui incontrano difficoltà; la somministrazione di prove in itinere che permettono agli studenti di identificare aree problematiche del loro apprendimento.
La verifica a sua volta avviene in tutte le fasi del corso di studio, iniziando dalle prove d'esame (concepite in modo da evidenziare l'autonomia nell'organizzare il proprio apprendimento), passando
dalle verifiche delle attività di laboratorio e del tirocinio formativo per concludersi in occasione della prova finale.
Requisiti di ammissione
Per essere ammessi al corso di laurea occorre essere in possesso di un diploma di scuola secondaria superiore ovvero di altro titolo di studio conseguito all'estero, riconosciuto idoneo.
Per affrontare con successo il percorso di studio sono necessarie le conoscenze elementari di Fisica e Matematica che sono fornite di norma dal ciclo di studi secondario. È richiesta altresì capacità logica e di comprensione dei testi scritti e del discorso, nonché padronanza di espressione attraverso la scrittura.
L'immatricolazione al corso di laurea è subordinata alla partecipazione ad una procedura di ammissione basata sullo svolgimento di test di verifica del possesso delle conoscenze e abilità sopra descritte. È prevista l'attribuzione di obblighi formativi aggiuntivi (OFA), da assolvere nel primo anno di corso, agli studenti che, pur avendo conseguito una posizione utile nella graduatoria di merito, non abbiano superato una soglia di punteggio minimo.
In particolare, sulla base del punteggio conseguito nella prova di accesso, agli studenti potranno inoltre essere attribuiti obblighi formativi aggiuntivi (OFA) da assolvere entro il primo anno di corso (entro il 31 ottobre dell'anno successivo all'iscrizione). Il punteggio sotto il quale dovranno essere assegnati gli OFA e le modalità per il loro assolvimento sono descritti nel Regolamento didattico del corso di studio.
Prova finale
La prova finale consiste nella stesura, nella presentazione e nella discussione di una relazione 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.
La discussione si svolge di fronte alla Commissione di laurea che, sulla base della carriera dello studente e della valutazione della relazione, stabilisce il voto di laurea.
Orientamento in ingresso
Il SOrT è il servizio di Orientamento integrato della Sapienza. Il servizio ha una sede centrale nella Città universitaria e sportelli dislocati presso le Facoltà. Nei SOrT gli studenti possono trovare informazioni più specifiche rispetto alle Facoltà e ai corsi di laurea e un supporto per orientarsi nelle scelte. L'ufficio centrale e i docenti delegati di Facoltà coordinano i progetti di orientamento in ingresso e di tutorato, curano i rapporti con le scuole medie superiori e con gli insegnanti referenti dell'orientamento in uscita, propongono azioni di sostegno nella delicata fase di transizione dalla scuola all'università e supporto agli studenti in corso, forniscono informazioni sull'offerta didattica e sulle procedure amministrative di accesso ai corsi.
Iniziative e progetti di orientamento:
1. "Porte aperte alla Sapienza".
L'iniziativa, che si tiene ogni anno presso la Città Universitaria, è rivolta prevalentemente agli studenti delle ultime classi delle Scuole Secondarie Superiori, ai docenti, ai genitori ed agli operatori del settore; essa costituisce l'occasione per conoscere la Sapienza, la sua offerta didattica, i luoghi di studio, di cultura e di ritrovo ed i molteplici servizi disponibili per gli studenti (biblioteche, musei, concerti, conferenze, ecc.); sostiene il processo d'inserimento universitario che coinvolge ed interessa tutti coloro che intendono iscriversi all'Università. Oltre alle informazioni sulla didattica, durante gli incontri, è possibile ottenere indicazioni sull'iter amministrativo sia di carattere generale sia, più specificatamente, sulle procedure di immatricolazione ai vari corsi di studio e acquisire copia dei bandi per la partecipazione alle prove di accesso ai corsi. Contemporaneamente, presso l'Aula Magna, vengono svolte conferenze finalizzate alla presentazione dell'offerta formativa di tutte le Facoltà dell'Ateneo.
2. Progetto "Un Ponte tra Scuola e Università"
Il Progetto "Un Ponte tra scuola e Università" nasce con l'obiettivo di favorire una migliore transizione degli studenti in uscita dagli Istituti Superiori al mondo universitario e facilitarne il successivo inserimento nella nuova realtà.
Il progetto si articola in tre iniziative:
a) Professione Orientamento - Seminari dedicati ai docenti degli Istituti Superiori referenti per l'orientamento, per favorire lo scambio di informazioni tra la Scuola Secondaria e la Sapienza;
b) La Sapienza si presenta - Incontri di presentazione delle Facoltà e lezioni-tipo realizzati dai docenti della Sapienza e rivolti agli studenti delle Scuole Secondarie su argomenti inerenti ciascuna area didattica;
c) La Sapienza degli studenti – Interventi nelle Scuole finalizzati alla presentazione dei servizi offerti dalla Sapienza e racconto dell'esperienza universitaria da parte di studenti "mentore", studenti senior appositamente formati.
3. Progetto "Conosci te stesso"
Consiste nella compilazione, da parte degli studenti, di un questionario di autovalutazione per accompagnare in modo efficace il processo decisionale degli stessi studenti nella scelta del loro percorso formativo.
4. Progetto "Orientamento in rete"
Si tratta di un progetto di orientamento e di riallineamento sui saperi minimi. L'iniziativa prevede lo svolgimento di un corso di preparazione, caratterizzato una prima fase con formazione a distanza ed una seconda fase realizzata attraverso corsi intensivi in presenza, per l'accesso alle Facoltà a numero programmato dell'area biomedica, sanitaria e psicologica, destinato agli studenti degli ultimi anni di scuola secondaria di secondo grado.
5. Esame di inglese
Il progetto prevede la possibilità di sostenere presso la Sapienza, da parte degli studenti dell'ultimo anno delle Scuole Superiori del Lazio, l'esame di inglese per il conseguimento di crediti in caso di successiva iscrizione a questo Ateneo.
6. Percorsi per le competenze trasversali e per l'orientamento - PCTO (ex alternanza scuola-lavoro).
Si tratta di una modalità didattica che, attraverso l'esperienza pratica, aiuta gli studenti delle Scuole Superiori a consolidare le conoscenze acquisite a scuola e a testare sul campo le proprie attitudini mentre arricchisce la formazione e orienta il percorso di studio.
7. Tutorato in ingresso
Sono previste attività di tutorato destinate agli studenti e alle studentesse dei cinque anni delle Scuole Superiori.
Il Corso di Studio in breve
Il Corso di Laurea in Informatica ha l'obiettivo di formare figure professionali capaci di affrontare con successo le sfide costituite dalle crescenti esigenze della società dell'informazione. I laureati in Informatica saranno dotati di una solida preparazione culturale di base, che permetterà loro di mantenersi al passo col progredire delle tecnologie, e di una salda preparazione tecnica, che consentirà loro un rapido inserimento professionale nel settore delle tecnologie dell'informazione e della comunicazione. Inoltre, saranno in grado di accedere ai livelli di studio universitario successivi al primo, nel settore dell'informatica. La preparazione culturale di base permetterà ai laureati in Informatica di avere: - familiarità col metodo scientifico di indagine; - capacità di comprendere ed utilizzare strumenti matematici di supporto; - conoscenze metodologiche e competenze di base in un ampio spettro di settori delle scienze e delle tecnologie dell'informazione e della comunicazione; - familiarità con almeno una lingua dell'Unione Europea. A questo scopo, i primi due anni del Corso, uguali per tutti gli studenti , forniscono insegnamenti di base che sono ritenuti indispensabili alla formazione culturale, metodologica e tecnica del laureato, mentre nel terzo anno, oltre a completare tale formazione, lo studente potrà scegliere corsi che ne caratterizzeranno il profilo in senso più marcatamente metodologico o applicativo, seguendo le alternative di completamento proposte. La formazione si completa con un tirocinio, da svolgere o esternamente presso aziende del settore, tipicamente seguendo attività di analisi, progettazione e sviluppo software, o internamente, approfondendo tematiche avanzate. Il Corso di Laurea è a numero programmato e ha attivato diverse convenzioni Erasmus, permettendo quindi di svolgere esperienza di formazione all’estero. Il corso di laurea è in possesso del Bollino GRIN 2018, rilasciato dalla comunità dei docenti universitari italiani nel settore INF/01, che certifica la qualità della formazione informatica di livello universitario.
NG1 Requisiti di accesso
NG2 Prova di accesso
NG3 Passaggi, trasferimenti, abbreviazioni di corso, riconoscimento crediti
NG4 Piani di completamento e piani di studio individuali
NG5 Modalità didattiche
NG6 Modalità di frequenza, propedeuticità, passaggio ad anni successivi
NG7 Regime a tempo parziale
NG8 Studenti fuori corso e validità dei crediti acquisiti
NG9 Tutorato
NG10 Percorsi di eccellenza
NG11 Prova finale
NG12 Applicazione dell'art. 6 del regolamento studenti (R.D. 4.6.1938, N. 1269)
NG1 Requisiti di accesso
Per essere ammessi al corso di laurea occorre essere in possesso di un diploma di scuola secondaria superiore ovvero di altro titolo di studio conseguito all’estero, riconosciuto idoneo.
Per affrontare con successo il percorso di studio sono necessarie le conoscenze elementari di fisica e matematica che sono fornite di norma dal ciclo di studi secondario superiore. È richiesta altresì capacità logica e di comprensione dei testi scritti e del discorso, nonché padronanza di espressione attraverso la scrittura.
NG2 Prova di accesso
L'immatricolazione al Corso di Laurea in Informatica è subordinata al superamento di una prova di ammissione.
Le modalità di iscrizione, di svolgimento e di valutazione della prova sono definite dal bando relativo alle modalità di ammissione al corso di laurea in Informatica, pubblicato dalla Sapienza e consultabile all’indirizzo:
http://www.uniroma1.it/didattica/offerta-formativa/
Gli studenti in possesso di altra laurea o diploma universitario possono essere ammessi, senza sostenere la prova, compatibilmente alla disponibilità di posti, oppure sostenere la prova senza fare valere titoli precedenti.
NG3 Passaggi, trasferimenti, abbreviazioni di corso, riconoscimento crediti
NG3.1 Passaggi e trasferimenti
Passaggio dai vecchi ordinamenti di area Informatica
A seguito della trasformazione ed istituzione del corso di laurea in Informatica ai sensi del D.M.270/04 è assicurato il rilascio del titolo di studio agli studenti già iscritti ai seguenti corsi di laurea della Sapienza:
• triennale in Informatica e Tecnologie informatiche ex D.M. 509,
• quinquennale in Informatica
• quadriennale in Scienze dell’informazione.
È garantita la facoltà per gli studenti iscritti ai corsi di studio sopra elencati di passare al corso di laurea in Informatica senza il pagamento delle spese di passaggio, ai sensi del comma 8 dell’art. 38 del manifesto degli studi di Ateneo. Le domande di passaggio sono valutate dal CAD, che in proposito:
• determina quali fra gli esami superati sono riconoscibili nel vigente ordinamento e le relative votazioni, in conformità con le regole deliberate in merito dal Consiglio di area didattica (CAD) e riportate sul sito web del corso di laurea;
• indica l’anno di corso al quale lo studente viene iscritto;
• stabilisce l’eventuale obbligo formativo aggiuntivo da assolvere;
• formula il piano di completamento per il conseguimento del titolo di studio.
Tali richieste di passaggio al corso di laurea in Informatica devono essere presentate entro le scadenze e con le modalità specificate nel manifesto degli studi di Ateneo e possono essere accolte solo se l’anno di corso a cui lo studente viene ammesso è attivato.
Passaggio da altri corsi di studio della Sapienza e trasferimenti da altre università
Le domande di passaggio di studenti provenienti da altri corsi di laurea della Sapienza e le domande di trasferimento di studenti provenienti da altre Università, da Accademie militari o da altri istituti militari d’istruzione superiore sono subordinate ad approvazione da parte del CAD che:
• valuta la possibilità di riconoscimento totale o parziale della carriera di studio fino a quel momento seguita, con la convalida di parte o di tutti gli esami sostenuti e degli eventuali crediti acquisiti, e la relativa votazione; nel caso di passaggio fra corsi ex D.M. 270 della stessa classe vanno riconosciuti almeno il 50% dei crediti acquisiti in ciascun SSD (art. 3 comma 9 del D.M. delle classi di laurea);
•indica l’anno di corso al quale lo studente viene iscritto;
• stabilisce l’eventuale obbligo formativo aggiuntivo da assolvere;
• formula il piano di completamento per il conseguimento del titolo di studio.
Qualora lo studente, sulla base della carriera riconosciuta, possa essere ammesso ad un anno di corso successivo a tutti quelli attivati nel vigente ordinamento, è concessa allo stesso la facoltà di scelta tra l’iscrizione al corrispondente anno di corso del previgente ordinamento oppure all’anno di corso più avanzato in quel momento attivo dell’ordinamento vigente (articolo 33, comma 5 del regolamento didattico di Ateneo).
Le richieste di trasferimento al corso di laurea in Informatica devono essere presentate entro le scadenze e con le modalità specificate nel manifesto degli studi di Ateneo.
NG3.2 Abbreviazioni di corso
Chi è già in possesso del titolo di diploma triennale, di laurea triennale, quadriennale, quinquennale, specialistica acquisita secondo un ordinamento previgente, di laurea o laurea magistrale acquisita secondo un ordinamento vigente e intenda conseguire un ulteriore titolo di studio può chiedere al CAD l’iscrizione ad un anno di corso successivo al primo.
Le domande sono valutate dal CAD, che in proposito:
• valuta la possibilità di riconoscimento totale o parziale della carriera di studio fino a quel momento seguita, con la convalida di parte o di tutti gli esami sostenuti e degli eventuali crediti acquisiti, e la relativa votazione; nel caso di passaggio fra corsi ex D.M. 270 della stessa classe vanno riconosciuti almeno il 50% dei crediti acquisiti in ciascun SSD (art. 3 comma 9 del D.M. delle classi di laurea);
• indica l’anno di corso al quale lo studente viene iscritto;
• stabilisce l’eventuale obbligo formativo aggiuntivo da assolvere;
• formula il piano di completamento per il conseguimento del titolo di studio.
Qualora lo studente, sulla base della carriera riconosciuta, possa essere ammesso ad un anno di corso successivo a tutti quelli attivati nel vigente ordinamento, è concessa allo stesso la facoltà di scelta tra l’iscrizione al corrispondente anno di corso del previgente ordinamento oppure all’anno di corso più avanzato in quel momento attivo dell’ordinamento vigente (articolo 33, comma 5 del regolamento didattico di Ateneo).
Uno studente non può immatricolarsi o iscriversi ad un corso di laurea appartenente alla medesima classe nella quale ha già conseguito il diploma di laurea.
Le richieste devono essere presentate entro le scadenze e con le modalità specificate nel manifesto degli studi di Ateneo.
Il Consiglio di Area Didattica ha inoltre deliberato una procedura di abbreviazione della durata del Corso di Laurea per studenti particolarmente meritevoli. Con riferimento al Manifesto degli Studi di Sapienza, art.13, comma 7, https://www.uniroma1.it/it/content/laureandi nel quale si prevede che:
1. gli studenti possono laurearsi con l’anticipo di una sessione, a condizione che abbiano ottenuto espressa autorizzazione all’anticipo dei singoli esami dal Presidente del corso di studio e della prova finale dal Consiglio di facoltà”
2. gli studenti particolarmente meritevoli, che hanno ottenuto dalla Facoltà l’autorizzazione all’anticipo di esami di profitto e che hanno sostenuto gli stessi con una votazione media pari a 29/30, possono sostenere l’esame finale di laurea con un anno di anticipo”
Il Consiglio (CAD) ha deliberato che, oltre a rispettare le condizioni stabilite nel Manifesto, l’abbreviazione della durata del Corso di Studi sia regolata come segue:
1) Possono accedere alla procedura per l’abbreviazione di corso singoli studenti che facciano richiesta in tal senso al Presidente del CAD di Informatica, sulla base di un curriculum particolarmente eccellente, oppure categorie di studenti che il CAD precisa via via con apposite delibere (ad esempio studenti liceali vincitori di medaglie nelle Olimpiadi di Informatica);
2) Per ciascuno studente, il CAD produrrà una delibera di ammissione al programma, nella quale verrà anche specificato l’elenco degli esami che potranno essere sostenuti in anticipo rispetto al Manifesto degli Studi cui lo studente fa riferimento. Inoltre, allo studente verrà affiancato un docente, nominato dal CAD, che abbia l’incarico di orientarlo e coordinare con gli altri docenti il suo percorso di studi.
3) Per alcuni insegnamenti del Corso di Laurea, o anche per tutti, si potrà stabilire che lo studente segua un percorso personalizzato, con un programma stabilito dal docente responsabile di ciascun insegnamento, sulla base di una verifica delle conoscenze già possedute dallo studente e delle sue capacità e interessi.
NG3.3 Criteri per il riconoscimento crediti
Possono essere riconosciuti tutti i crediti formativi universitari (CFU) già acquisiti se relativi ad insegnamenti che abbiano contenuti, documentati attraverso i programmi degli insegnamenti, coerenti con uno dei percorsi formativi previsti dal corso di laurea. Per i passaggi da corsi di studio della stessa classe è garantito il riconoscimento di un minimo del 50% dei crediti di ciascun settore scientifico disciplinare.
Il CAD può deliberare l’equivalenza tra Settori scientifico disciplinari (SSD) per l’attribuzione dei CFU sulla base del contenuto degli insegnamenti ed in accordo con l’ordinamento del corso di laurea.
I CFU già acquisiti relativi agli insegnamenti per i quali, anche con diversa denominazione, esista una manifesta equivalenza di contenuto con gli insegnamenti offerti dal corso di laurea possono essere riconosciuti come relativi agli insegnamenti con le denominazioni proprie del corso di laurea a cui si chiede l’iscrizione. In questo caso, il CAD delibera il riconoscimento con le seguenti modalità:
• se il numero di CFU corrispondenti all'insegnamento di cui si chiede il riconoscimento coincide con quello dell'insegnamento per cui viene esso riconosciuto, l’attribuzione avviene direttamente;
• se i CFU corrispondenti all'insegnamento di cui si chiede il riconoscimento sono in numero diverso rispetto all'insegnamento per cui esso viene riconosciuto, il CAD esaminerà il curriculum dello studente ed attribuirà i crediti eventualmente dopo colloqui integrativi.
Il CAD può deliberare specifiche relazioni di corrispondenza fra gruppi di insegnamenti dei corsi di laurea triennale in Informatica e Tecnologie informatiche ex D.M. 509 della Sapienza e gruppi di insegnamenti del corso di laurea in Informatica ex D.M. 270, al fine di semplificare il passaggio degli studenti al nuovo ordinamento. L’elenco delle corrispondenze è disponibile presso la Segreteria didattica e sul sito web del corso di laurea.
Il CAD può riconoscere come crediti le conoscenze e abilità professionali certificate ai sensi della normativa vigente in materia, nonché altre conoscenze e abilità maturate in attività formative di livello post-secondario alla cui progettazione e realizzazione l’Università abbia concorso. Tali crediti vanno a valere sui 15 CFU previsti per l’attività di tirocinio.
Le attività già riconosciute ai fini dell’attribuzione di CFU nell’ambito del corso di laurea non possono essere nuovamente riconosciute nell’ambito di corsi di laurea magistrale.
NG4 Piani di completamento e piani di studio individuali
Ogni studente deve ottenere l’approvazione ufficiale del proprio completo percorso formativo da parte del CAD prima di poter verbalizzare esami relativi ad insegnamenti che non siano obbligatori per tutti gli studenti, pena l’annullamento dei relativi verbali d’esame.
Lo studente può ottenere tale approvazione con due procedimenti diversi:
1. aderendo ad uno dei piani di completamento del percorso formativo predisposti annualmente dal CAD;
2. presentando un piano di studio individuale che deve essere valutato dal CAD per l’approvazione.
In entrambi i casi lo studente deve sottomettere la sua proposta esclusivamente per mezzo dell’apposita procedura presente nel sistema informativo di ateneo Infostud.
NG4.1 Piani di completamento
Un piano di completamento contiene la lista di tutti gli insegnamenti previsti nel corrispondente percorso formativo ed un apposito spazio per l’indicazione degli insegnamenti relativi ai 12 CFU a scelta dello studente. Questi ultimi possono essere scelti fra tutti quelli presenti nell’ambito dell’intera offerta formativa della Sapienza.
Il modulo di adesione al piano di completamento, debitamente completato on-line coi propri dati e con l’indicazione degli insegnamenti a scelta, viene inoltrato al CAD per la verifica che gli insegnamenti a scelta indicati siano effettivamente congruenti col percorso formativo. In caso affermativo, il piano di completamento viene corredato con l’indicazione della data del parere positivo da parte del CAD e diviene parte integrante della carriera dello studente. In caso negativo, lo studente viene invitato a modificare l’elenco degli insegnamenti relativi ai 12 CFU a scelta.
A partire dal giorno successivo a quello di approvazione da parte del CAD lo studente è autorizzato a verbalizzare, oltre agli esami obbligatori per tutti gli studenti, anche quelli relativi a tutti gli insegnamenti non obbligatori elencati nel piano di completamento cui ha aderito.
L’adesione ad un piano di completamento può essere effettuata una sola volta per ogni anno accademico, a partire dal terzo anno di corso, nei periodi:
• dal 1 settembre al 30 ottobre se nel piano di completamento sono contenuti insegnamenti non obbligatori i cui esami lo studente intenda sostenere nella successiva sessione di gennaio/febbraio;
• dal 1 febbraio al 30 marzo altrimenti.
NG4.2 Piani di studio individuali
Qualora lo studente non intenda aderire ad alcuno dei piani di completamento proposti deve presentare un piano di studio individuale, che deve essere compilato dal 1 settembre al 30 ottobre di ogni anno.
Il piano di studio individuale, una volta compilato, viene sottomesso dallo studente per la verifica che le scelte operate costituiscano un valido percorso formativo. In caso affermativo, il piano di studio individuale viene approvato dal CAD e diviene parte integrante della carriera dello studente. In caso negativo, lo studente viene invitato a modificarlo. Il CAD delibera sull’approvazione entro il successivo 31 gennaio.
Se approvato, il piano di studio individuale diviene parte integrante della carriera dello studente.
A partire dal giorno successivo a quello della delibera del CAD lo studente è autorizzato a verbalizzare, oltre agli esami obbligatori per tutti gli studenti, anche quelli relativi a tutti gli insegnamenti non obbligatori elencati nel piano di studio approvato.
Il piano di studio individuale può essere presentato una sola volta per ogni anno accademico, a partire dal terzo anno di corso.
NG4.3 Modifica dei piani di completamento e dei piani di studio individuali
Lo studente che abbia già aderito ad un piano di completamento può, in un successivo anno accademico, aderire ad un differente piano di completamento oppure proporre un piano di studio individuale. Parimenti, lo studente al quale sia già stato approvato un piano di studio individuale può, in un successivo anno accademico, optare per l’adesione ad un piano di completamento oppure proporre un differente piano di studio individuale.
In ogni modo, gli esami già verbalizzati non possono essere sostituiti.
NG5 Modalità didattiche
Le attività didattiche sono di tipo convenzionale e distribuite su base semestrale.
Gli insegnamenti sono impartiti attraverso lezioni ed esercitazioni in aula e attività in laboratorio, organizzando l’orario delle attività in modo da consentire allo studente un congruo tempo da dedicare allo studio personale.
La durata nominale del corso di laurea è di 6 semestri, pari a tre anni.
NG5.1 Crediti formativi universitari
Il credito formativo universitario (CFU) misura la quantità di lavoro svolto da uno studente per raggiungere un obiettivo formativo. I CFU sono acquisiti dallo studente con il superamento degli esami o con l’ottenimento delle idoneità, ove previste.
Il sistema di crediti adottato nelle università italiane ed europee prevede che ad un CFU corrispondano 25 ore di impegno da parte dello studente, distribuite tra le attività formative collettive istituzionalmente previste (ad es. lezioni, esercitazioni, attività di laboratorio) e lo studio individuale.
Nel corso di laurea in Informatica, in accordo coll’articolo 23 del regolamento didattico di Ateneo,
un CFU corrisponde a un numero di ore di lezione variabile fra i seguenti intervalli:
• un cfu di lezione: da 6 a 10 ore
• un cfu di esercitazione: da 9 a 12 ore
• un cfu di laboratorio: da 20 a 25 ore
Per ogni singolo corso il CAD determina il numero di ore assegnato, in accordo con tali intervalli.
Le schede individuali di ciascun insegnamento, consultabili sul sito web del corso di laurea, riportano la ripartizione dei CFU e delle ore di insegnamento nelle diverse attività, insieme ai prerequisiti, agli obiettivi formativi e ai programmi di massima.
Il carico di lavoro totale per il conseguimento della laurea è di 180 CFU.
Nell’ambito del corso di laurea in Informatica la quota dell'impegno orario complessivo riservata a disposizione dello studente per lo studio personale o per altre attività formative di tipo individuale è almeno il 50% dell’impegno orario complessivo.
NG5.2 Calendario didattico
Il calendario didattico è organizzato in due periodi di didattica e tre periodi di esami, secondo il seguente schema approssimativo:
• primo periodo di didattica: da fine settembre a fine dicembre;
• secondo periodo di didattica: da fine febbraio a inizio giugno;
• primo periodo d’esami: da inizio gennaio a fine febbraio;
• secondo periodo d’esami: da inizio giugno a fine luglio;
• terzo periodo d’esami: settembre.
• periodo straordinario di esami: aprile e novembre (solo per gli studenti che risultano fuori corso o ripetenti o lavoratori per la segreteria studenti, oppure per gli studenti in corso che intendano laurearsi nelle successive sessioni di laurea (rispettivamente, gennaio e luglio), e che lo richiedano dietro certificazione del loro status di laureandi).
Per ogni insegnamento sono previsti:
• due appelli d’esame nella sessione immediatamente successiva al termine del corso (gennaio-febbraio per gli insegnamenti del primo periodo di didattica, giugno-luglio per gli insegnamenti del secondo periodo di didattica).
• tre appelli nelle sessioni rimanenti, di cui uno a settembre e due nell'altra sessione.
• Due ulteriori appelli saranno riservati a novembre ed aprile agli studenti fuoricorso, ripetenti e lavoratori, secondo le modalità e condizioni riportate sul sito web del corso di laurea.
Le date di inizio e fine dei periodi di didattica e degli appelli d’esame sono consultabili sul sito web del corso di laurea.
NG5.3 Prove d’esame
La valutazione del profitto individuale dello studente, per ciascun insegnamento, viene espressa mediante l’attribuzione di un voto in trentesimi, nel qual caso il voto minimo per il superamento dell'esame è 18/30, oppure di una idoneità.
Alla valutazione finale possono concorrere i seguenti elementi:
• un esame scritto, generalmente distribuito su più prove scritte da svolgere durante ed alla fine del corso;
• un esame orale;
• il lavoro svolto in autonomia dallo studente.
NG5.4 Verifica delle conoscenze linguistiche
I 3 CFU complessivamente attribuiti alla lingua inglese possono essere acquisiti superando un'unica prova, che può essere sostenuta in ciascuna delle tre sessioni d'esame. "La Sapienza" offre agli studenti dell'ultimo anno delle scuole superiori del Lazio la possibilità di sostenere l'esame di inglese scientifico della Facoltà di Scienze Matematiche, Fisiche e Naturali. Il superamento dell'esame dà diritto all'acquisizione dei crediti relativi nei Corsi di Laurea delle Facoltà di Scienze MFN, Ingegneria Civile e Industriale, Ingegneria dell'Informazione, Informatica e Statistica, Architettura, Scuola Speciale per Archivisti e Bibliotecari della Sapienza. Il superamento dell’esame dà diritto all'acquisizione dei 6 CFU relativi alle conoscenze linguistiche. L'iscrizione deve essere effettuata compilando l'apposito modulo disponibile sul sito http://bigbang.uniroma1.it/ nella sezione “scuole superiori”, dove sono indicati orari ed aule della prova ed ulteriori informazioni sulle sue modalità.
L'esito positivo della prova di valutazione della conoscenza della lingua inglese verrà registrato automaticamente nella carriera dello studente.
NG6 Modalità di frequenza, propedeuticità, passaggio ad anni successivi
Frequentare assiduamente le lezioni degli insegnamenti è altamente consigliato ma non è obbligatorio.
Le propedeuticità fra insegnamenti che hanno lo stesso nome e numeri progressivi o lettere progressive sono, in conformità alle norme vigenti, obbligatorie. Di conseguenza gli esami relativi a tali insegnamenti devono essere superati in un ordine temporale congruente con la numerazione degli insegnamenti, pena l’annullamento dei relativi verbali d’esame. Nell’ambito del corso di laurea in Informatica non esistono altre propedeuticità. Tuttavia, la collocazione che gli insegnamenti hanno all’interno del percorso formativo è una chiara indicazione dell’ordine ottimale col quale seguirli e sostenerne gli esami. In particolare, si raccomanda di:
• sostenere gli esami degli insegnamenti di un anno di corso soltanto dopo aver superato tutti quelli dei precedenti anni di corso;
• sostenere, nell’ambito di uno stesso anno di corso, gli esami degli insegnamenti del secondo semestre soltanto dopo aver superato tutti quelli del primo semestre.
Per il corso di laurea in Informatica non esistono sbarramenti per l’iscrizione ad anni successivi al primo.
NG7 Regime a tempo parziale
I termini e le modalità per la richiesta del regime a tempo parziale nonché le relative norme sono stabilite nell’articolo 24 del manifesto degli studi di Ateneo e sono consultabili sul sito web della Sapienza. E’ possibile scegliere un numero di CFU/anno che va da 18 a 45.
NG8 Studenti fuori corso e validità dei crediti acquisiti
Ai sensi dell’art. 32 del manifesto degli studi di Ateneo lo studente si considera fuori corso quando, avendo frequentato tutte le attività formative previste dal presente regolamento didattico, non abbia superato tutti gli esami e non abbia acquisito il numero di crediti necessario al conseguimento del titolo entro 3 anni.
Ai sensi dell’art. 33 del manifesto degli studi di Ateneo:
• lo studente a tempo pieno che sia fuori corso deve superare le prove mancanti al completamento della propria carriera universitaria entro il termine di 9 anni dall’immatricolazione;
• lo studente a tempo parziale che sia fuori corso deve superare le prove mancanti al completamento della propria carriera universitaria entro il doppio degli anni previsti dalla scelta della durata del regime a tempo parziale.
Il CAD stabilisce che, nel caso non siano rispettati i termini di cui sopra, la validità dei crediti acquisiti verrà valutata caso per caso, e potrà essere data per acquisita solo limitatamente ai corsi di base. Per il reintegro gli studenti dovranno comunque presentare opportuna domanda alla Segreteria amministrativa studenti, nei tempi e con le modalità previste nel manifesto degli studi di Ateneo.
NG9 Tutorato
Gli studenti del corso di laurea in Informatica possono usufruire dell'attività di tutorato svolta dai docenti indicati dal CAD. I docenti disponibili come tutor e le modalità di tutorato verranno pubblicizzati per ciascun anno accademico mediante affissione presso la Segreteria didattica e sul sito web del corso di laurea.
L’attività di tutorato è articolata in vari servizi a carattere individuale e collettivo ed è disciplinata da uno specifico regolamento consultabile sul sito web del corso di laurea.
NG10 Percorsi di eccellenza
È istituito il percorso di eccellenza per la laurea in Informatica, cui si può partecipare al momento dell’iscrizione al secondo anno di corso.
I termini e le modalità per la richiesta di partecipazione al percorso di eccellenza sono indicati sul sito web del corso di laurea, dove si può anche prendere visione del bando di concorso e scaricare il facsimile della domanda di ammissione.
NG11 Prova finale
Per essere ammesso alla prova finale lo studente deve aver conseguito tutti i CFU previsti dall’ordinamento didattico per le attività diverse dalla prova finale e deve aver adempiuto alle formalità amministrative previste dal Regolamento didattico di Ateneo.
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.
L’elaborato finale verrà sottoposto a verifica di originalità. In caso di esito negativo di tale verifica, lo studente non sarà ammesso alla prova finale.
La votazione finale si basa sulla valutazione del curriculum degli studi, della dissertazione e della prova finale, e su ulteriori elementi rivolti ad incentivare il superamento degli esami nei tempi stabiliti dall’ordinamento didattico. La Commissione di laurea esprime la votazione in centodecimi e può, all’unanimità, concedere al candidato il massimo dei voti con lode.
NG12 Applicazione dell’art. 6 del regolamento studenti (R.D. 4.6.1938, N. 1269)
Gli studenti iscritti al corso di laurea in Informatica, onde arricchire il proprio curriculum degli studi, possono secondo quanto previsto dall’Art. 6 del R.D. N.1239 del 4/6/1938, mediante domanda da indirizzare al CAD e da consegnare alla Segreteria didattica entro il mese di gennaio di ogni anno, frequentare due corsi e sostenere ogni anno due esami di insegnamenti di altre Facoltà.
Visto il significato scientifico e culturale di tale norma, il CAD ha deliberato che tale richiesta possa essere avanzata soltanto da studenti che abbiano ottenuto almeno 39 crediti del corso di laurea in Informatic
Lo studente espliciterà le proprie scelte al momento della presentazione,
tramite INFOSTUD, del piano di completamento o del piano di studio individuale,
secondo quanto stabilito dal regolamento didattico del corso di studio.
Metodologico
Primo anno
Primo semestre
Insegnamento
|
CFU
|
SSD
|
Ore Lezione
|
Ore Eserc.
|
Ore Lab
|
Ore Studio
|
Attività
|
Lingua
|
101226 -
CALCOLO DIFFERENZIALE
(obiettivi)
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.
|
6
|
MAT/05
|
36
|
24
|
-
|
-
|
Attività formative di base
|
ITA |
1015883 -
FONDAMENTI DI PROGRAMMAZIONE
(obiettivi)
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.
|
9
|
INF/01
|
36
|
24
|
36
|
-
|
Attività formative di base
|
ITA |
1020420 -
METODI MATEMATICI PER L'INFORMATICA
(obiettivi)
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.
|
6
|
MAT/01
|
36
|
24
|
-
|
-
|
Attività formative di base
|
ITA |
1015880 -
PROGETTAZIONE DI SISTEMI DIGITALI
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative di base
|
ITA |
Secondo semestre
Insegnamento
|
CFU
|
SSD
|
Ore Lezione
|
Ore Eserc.
|
Ore Lab
|
Ore Studio
|
Attività
|
Lingua
|
1015881 -
ARCHITETTURA DEGLI ELABORATORI
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative di base
|
ITA |
97796 -
CALCOLO INTEGRALE
(obiettivi)
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.
|
6
|
MAT/05
|
36
|
24
|
-
|
-
|
Attività formative di base
|
ITA |
1015885 -
INTRODUZIONE AGLI ALGORITMI
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative di base
|
ITA |
1015884 -
METODOLOGIE DI PROGRAMMAZIONE
(obiettivi)
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.
|
9
|
INF/01
|
36
|
24
|
36
|
-
|
Attività formative caratterizzanti
|
ITA |
AAF1101 -
LINGUA INGLESE
(obiettivi)
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.
|
3
|
|
18
|
12
|
-
|
-
|
Per la prova finale e la lingua straniera (art.10, comma 5, lettera c)
|
ENG |
Secondo anno
Primo semestre
Insegnamento
|
CFU
|
SSD
|
Ore Lezione
|
Ore Eserc.
|
Ore Lab
|
Ore Studio
|
Attività
|
Lingua
|
1015886 -
ALGEBRA
(obiettivi)
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.
|
9
|
MAT/02
|
54
|
36
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
1015887 -
BASI DI DATI
(obiettivi)
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
|
Erogato in altro semestre o anno
|
-
I MODULO
(obiettivi)
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.
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.
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.
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.
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.
Capacità comunicative: Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1020421 -
CALCOLO DELLE PROBABILITA'
(obiettivi)
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à.
|
9
|
MAT/06
|
54
|
36
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
1020422 -
SISTEMI OPERATIVI
(obiettivi)
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
(obiettivi)
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.
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.
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.
Capacità comunicative: 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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
-
II MODULO
|
Erogato in altro semestre o anno
|
Secondo semestre
Insegnamento
|
CFU
|
SSD
|
Ore Lezione
|
Ore Eserc.
|
Ore Lab
|
Ore Studio
|
Attività
|
Lingua
|
1015887 -
BASI DI DATI
(obiettivi)
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
(obiettivi)
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 realizzazione di basi di dati relazionali. 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 relazionali e del linguaggio SQL).
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 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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
-
I MODULO
|
Erogato in altro semestre o anno
|
1015888 -
PROGETTAZIONE DI ALGORITMI
(obiettivi)
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.
|
9
|
INF/01
|
54
|
36
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1015889 -
RETI DI ELABORATORI
(obiettivi)
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.
|
9
|
INF/01
|
54
|
36
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1020422 -
SISTEMI OPERATIVI
(obiettivi)
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
|
Erogato in altro semestre o anno
|
-
II MODULO
(obiettivi)
Obiettivi generali: 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: 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: 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: 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: 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: Essere in grado di comunicare e documentare script Bash e programmi C basati su system call di Linux.
Capacità di apprendimento: 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
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
Terzo anno
Primo semestre
Insegnamento
|
CFU
|
SSD
|
Ore Lezione
|
Ore Eserc.
|
Ore Lab
|
Ore Studio
|
Attività
|
Lingua
|
1041727 -
AUTOMI CALCOLABILITA' E COMPLESSITA'
(obiettivi)
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.
Applicare 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
Capacità critiche e di giudizio: Capire il giusto livello di astrazione utile per risolvere un problema, scegliere il modello computazionale più conveniente in un determinato contesto alicativo
Capacità 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 successivo: 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à
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
Gruppo opzionale:
Insegnamenti metodologici caratterizzanti - (visualizza)
|
12
|
|
|
|
|
|
|
|
1022262 -
INTELLIGENZA ARTIFICIALE
|
Erogato in altro semestre o anno
|
1022264 -
LINGUAGGI DI PROGRAMMAZIONE
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1022265 -
MODELLI E OTTIMIZZAZIONE
|
Erogato in altro semestre o anno
|
1022268 -
SICUREZZA
|
Erogato in altro semestre o anno
|
10589652 -
TECNICHE DI PROGRAMMAZIONE FUNZIONALE E IMPERATIVA
|
Erogato in altro semestre o anno
|
10593235 -
PROGRAMMAZIONE DI SISTEMI EMBEDDED E MULTICORE
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
|
Gruppo opzionale:
Insegnamenti metodologici affini - (visualizza)
|
6
|
|
|
|
|
|
|
|
97597 -
FISICA
(obiettivi)
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.
|
6
|
FIS/01
|
36
|
24
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
1022262 -
INTELLIGENZA ARTIFICIALE
|
Erogato in altro semestre o anno
|
1022264 -
LINGUAGGI DI PROGRAMMAZIONE
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
1021828 -
MATEMATICA DISCRETA
(obiettivi)
Obiettivi general L’insegnamento si propone di fornire allo studente un’introduzione alla matematica discreta, che costituisce uno dei settori più innovativi della matematica. Sviluppato a partire dalla seconda metà del novecento, è ricco di problemi stimolanti e di grande utilità nelle applicazioni.
Obiettivi specifici Durante il corso, lo studente verrà a contatto con una serie di argomenti e problemi, di tipo completamente diverso da quelli incontrati in altri corsi di matematica tradizionali, e svilupperà, attraverso un impegno sistematico rivolto al “problem solving”, un approccio concreto allo studio di problemi di grande valenza formativa, soprattutto per la futura attività professionale.
Conoscenza e comprensione: Al termine del corso lo studente • conoscerà i metodi, i problemi, e le possibili applicazioni della matematica discreta. • sarà in grado di capire, affrontare e risolvere semplici problemi di matematica discreta. • attraverso esercitazioni scritte e eventuali presentazioni orali svilupperà adeguate capacità critiche • allo stesso modo eserciterà la sua capacità di esporre e trasmettere ciò che ha appreso • lo studio individuale allenerà adeguatamente la sua capacità di studio autonomo e indipendente
|
6
|
MAT/03
|
36
|
24
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
1022265 -
MODELLI E OTTIMIZZAZIONE
|
Erogato in altro semestre o anno
|
1022268 -
SICUREZZA
|
Erogato in altro semestre o anno
|
10589652 -
TECNICHE DI PROGRAMMAZIONE FUNZIONALE E IMPERATIVA
|
Erogato in altro semestre o anno
|
10593235 -
PROGRAMMAZIONE DI SISTEMI EMBEDDED E MULTICORE
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
|
1022301 -
INGEGNERIA DEL SOFTWARE
(obiettivi)
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. Il corso prevede la stesura, in gruppo, di un progetto per un sistema informativo di medie dimensioni.
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
- -
A SCELTA DELLO STUDENTE
|
6
|
|
-
|
-
|
-
|
-
|
Attività formative a scelta dello studente (art.10, comma 5, lettera a)
|
ITA |
Secondo semestre
Insegnamento
|
CFU
|
SSD
|
Ore Lezione
|
Ore Eserc.
|
Ore Lab
|
Ore Studio
|
Attività
|
Lingua
|
Gruppo opzionale:
Insegnamenti metodologici caratterizzanti - (visualizza)
|
12
|
|
|
|
|
|
|
|
1022262 -
INTELLIGENZA ARTIFICIALE
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1022264 -
LINGUAGGI DI PROGRAMMAZIONE
|
Erogato in altro semestre o anno
|
1022265 -
MODELLI E OTTIMIZZAZIONE
(obiettivi)
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: 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;
Applicare conoscenza e comprensione: 1. Applicazioni pratiche dei principali problemi di ottimizzazione (in particolare su reti); 2. uso di software di modellazione ed ottimizzazione.
Capacità critiche e 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;
Capacità 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 successivo 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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1022268 -
SICUREZZA
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
10589652 -
TECNICHE DI PROGRAMMAZIONE FUNZIONALE E IMPERATIVA
(obiettivi)
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).
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
10593235 -
PROGRAMMAZIONE DI SISTEMI EMBEDDED E MULTICORE
|
Erogato in altro semestre o anno
|
|
Gruppo opzionale:
Insegnamenti metodologici affini - (visualizza)
|
6
|
|
|
|
|
|
|
|
97597 -
FISICA
|
Erogato in altro semestre o anno
|
1022262 -
INTELLIGENZA ARTIFICIALE
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
1022264 -
LINGUAGGI DI PROGRAMMAZIONE
|
Erogato in altro semestre o anno
|
1021828 -
MATEMATICA DISCRETA
|
Erogato in altro semestre o anno
|
1022265 -
MODELLI E OTTIMIZZAZIONE
(obiettivi)
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: 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;
Applicare conoscenza e comprensione: 1. Applicazioni pratiche dei principali problemi di ottimizzazione (in particolare su reti); 2. uso di software di modellazione ed ottimizzazione.
Capacità critiche e 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;
Capacità 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 successivo 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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
1022268 -
SICUREZZA
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
10589652 -
TECNICHE DI PROGRAMMAZIONE FUNZIONALE E IMPERATIVA
(obiettivi)
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).
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
10593235 -
PROGRAMMAZIONE DI SISTEMI EMBEDDED E MULTICORE
|
Erogato in altro semestre o anno
|
|
- -
A SCELTA DELLO STUDENTE
|
6
|
|
-
|
-
|
-
|
-
|
Attività formative a scelta dello studente (art.10, comma 5, lettera a)
|
ITA |
AAF1053 -
TIROCINIO
(obiettivi)
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.
|
15
|
|
-
|
-
|
-
|
-
|
Ulteriori attività formative (art.10, comma 5, lettera d)
|
ITA |
AAF1004 -
PROVA FINALE
(obiettivi)
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.
|
6
|
|
-
|
-
|
-
|
-
|
Per la prova finale e la lingua straniera (art.10, comma 5, lettera c)
|
ITA |
Tecnologico
Primo anno
Primo semestre
Insegnamento
|
CFU
|
SSD
|
Ore Lezione
|
Ore Eserc.
|
Ore Lab
|
Ore Studio
|
Attività
|
Lingua
|
101226 -
CALCOLO DIFFERENZIALE
(obiettivi)
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.
|
6
|
MAT/05
|
36
|
24
|
-
|
-
|
Attività formative di base
|
ITA |
1015883 -
FONDAMENTI DI PROGRAMMAZIONE
(obiettivi)
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.
|
9
|
INF/01
|
36
|
24
|
36
|
-
|
Attività formative di base
|
ITA |
1020420 -
METODI MATEMATICI PER L'INFORMATICA
(obiettivi)
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.
|
6
|
MAT/01
|
36
|
24
|
-
|
-
|
Attività formative di base
|
ITA |
1015880 -
PROGETTAZIONE DI SISTEMI DIGITALI
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative di base
|
ITA |
Secondo semestre
Insegnamento
|
CFU
|
SSD
|
Ore Lezione
|
Ore Eserc.
|
Ore Lab
|
Ore Studio
|
Attività
|
Lingua
|
1015881 -
ARCHITETTURA DEGLI ELABORATORI
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative di base
|
ITA |
97796 -
CALCOLO INTEGRALE
(obiettivi)
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.
|
6
|
MAT/05
|
36
|
24
|
-
|
-
|
Attività formative di base
|
ITA |
1015885 -
INTRODUZIONE AGLI ALGORITMI
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative di base
|
ITA |
1015884 -
METODOLOGIE DI PROGRAMMAZIONE
(obiettivi)
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.
|
9
|
INF/01
|
36
|
24
|
36
|
-
|
Attività formative caratterizzanti
|
ITA |
AAF1101 -
LINGUA INGLESE
(obiettivi)
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.
|
3
|
|
18
|
12
|
-
|
-
|
Per la prova finale e la lingua straniera (art.10, comma 5, lettera c)
|
ENG |
Secondo anno
Primo semestre
Insegnamento
|
CFU
|
SSD
|
Ore Lezione
|
Ore Eserc.
|
Ore Lab
|
Ore Studio
|
Attività
|
Lingua
|
1015886 -
ALGEBRA
(obiettivi)
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.
|
9
|
MAT/02
|
54
|
36
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
1020421 -
CALCOLO DELLE PROBABILITA'
(obiettivi)
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à.
|
9
|
MAT/06
|
54
|
36
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
1020422 -
SISTEMI OPERATIVI
(obiettivi)
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
(obiettivi)
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.
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.
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.
Capacità comunicative: 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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
-
II MODULO
|
Erogato in altro semestre o anno
|
1015887 -
BASI DI DATI
(obiettivi)
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
|
Erogato in altro semestre o anno
|
-
I MODULO
(obiettivi)
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.
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.
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.
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.
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.
Capacità comunicative: Essere in grado di comunicare/condividere caratteristiche qualitative/quantitative relative alla struttura relazionale di una base di dati
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
Secondo semestre
Insegnamento
|
CFU
|
SSD
|
Ore Lezione
|
Ore Eserc.
|
Ore Lab
|
Ore Studio
|
Attività
|
Lingua
|
1015887 -
BASI DI DATI
(obiettivi)
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
(obiettivi)
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 realizzazione di basi di dati relazionali. 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 relazionali e del linguaggio SQL).
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 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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
-
I MODULO
|
Erogato in altro semestre o anno
|
1015888 -
PROGETTAZIONE DI ALGORITMI
(obiettivi)
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.
|
9
|
INF/01
|
54
|
36
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1015889 -
RETI DI ELABORATORI
(obiettivi)
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.
|
9
|
INF/01
|
54
|
36
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1020422 -
SISTEMI OPERATIVI
(obiettivi)
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
|
Erogato in altro semestre o anno
|
-
II MODULO
(obiettivi)
Obiettivi generali: 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: 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: 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: 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: 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: Essere in grado di comunicare e documentare script Bash e programmi C basati su system call di Linux.
Capacità di apprendimento: 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
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
Terzo anno
Primo semestre
Insegnamento
|
CFU
|
SSD
|
Ore Lezione
|
Ore Eserc.
|
Ore Lab
|
Ore Studio
|
Attività
|
Lingua
|
1041727 -
AUTOMI CALCOLABILITA' E COMPLESSITA'
(obiettivi)
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.
Applicare 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
Capacità critiche e di giudizio: Capire il giusto livello di astrazione utile per risolvere un problema, scegliere il modello computazionale più conveniente in un determinato contesto alicativo
Capacità 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 successivo: 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à
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
- -
A SCELTA DELLO STUDENTE
|
6
|
|
-
|
-
|
-
|
-
|
Attività formative a scelta dello studente (art.10, comma 5, lettera a)
|
ITA |
Gruppo opzionale:
Insegnamenti metodologici di completamento - (visualizza)
|
6
|
|
|
|
|
|
|
|
1022262 -
INTELLIGENZA ARTIFICIALE
|
Erogato in altro semestre o anno
|
1022264 -
LINGUAGGI DI PROGRAMMAZIONE
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1022265 -
MODELLI E OTTIMIZZAZIONE
|
Erogato in altro semestre o anno
|
1022268 -
SICUREZZA
|
Erogato in altro semestre o anno
|
10589652 -
TECNICHE DI PROGRAMMAZIONE FUNZIONALE E IMPERATIVA
|
Erogato in altro semestre o anno
|
10593235 -
PROGRAMMAZIONE DI SISTEMI EMBEDDED E MULTICORE
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
|
Gruppo opzionale:
Insegnamenti tecnologici di completamento - (visualizza)
|
6
|
|
|
|
|
|
|
|
1031337 -
BIOLOGIA COMPUTAZIONALE
|
Erogato in altro semestre o anno
|
1047673 -
COMPUTER GRAPHICS
(obiettivi)
Obiettivi generali: Familiarità con le basi della Computer Grafica che includono rappresentazione di scene, formazione di immagini, elaborazione di forme e animazioni.
Obiettivi specifici: Gli argomenti includono: immagini Low Dynamic Range e High Dynamic Range, mesh di triangoli, instancing, ray tracing, rasterizzazione e Graphical Processing Unit, mesh di quadrangoli, superfici di suddivisione, curve parametriche, animazione, mesh blending e skinning, riproduzione dei colori.
Conoscenza e comprensione: Conoscenza su come modellare scene 3D al computer; comprensione dei trade-off tra features e performance degli algoritmi di grafica; conoscenza della limitazione di fondo degli algoritmi di grafica e di quali scene sono renderizzabili in modo interattivo e quali richiedono calcolo offline.
Applicazione di conoscenza e comprensione: Implementazione di algoritmi di grafica 3D di base, con particolare focus nel rendering di immagini offline. Implementazione di tone reproduction, ray tracing, surface modeling.
Autonomia di giudizio: Essere in grado di valutare i tradeoff di performance dei diversi algoritmi di grafica in relazione con la complessità della scena 3D e della fedeltà delle immagini.
Abilità comunicative: Essere in grado di comunicare con chiarezza come funzionano gli algoritmi di computer grafica, come sono sviluppati e quali scene 3D e feature di immagini supportano.
Capacità di apprendimento successivo: Essere in grado di apprendere algoritmi di grafica avanzata come render con global illumination, geometry processing e simulatori.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1022263 -
INTERAZIONE UOMO MACCHINA
(obiettivi)
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.
|
6
|
INF/01
|
24
|
36
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1041761 -
LINGUAGGI E COMPILATORI
|
Erogato in altro semestre o anno
|
1022266 -
PROGRAMMAZIONE DI SISTEMA
|
Erogato in altro semestre o anno
|
1022267 -
PROGRAMMAZIONE PER IL WEB
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1041483 -
VERIFICA E VALIDAZIONE DEI SISTEMI SOFTWARE
|
Erogato in altro semestre o anno
|
|
Gruppo opzionale:
Insegnamenti tecnologici affini - (visualizza)
|
6
|
|
|
|
|
|
|
|
1031337 -
BIOLOGIA COMPUTAZIONALE
|
Erogato in altro semestre o anno
|
1047673 -
COMPUTER GRAPHICS
(obiettivi)
Obiettivi generali: Familiarità con le basi della Computer Grafica che includono rappresentazione di scene, formazione di immagini, elaborazione di forme e animazioni.
Obiettivi specifici: Gli argomenti includono: immagini Low Dynamic Range e High Dynamic Range, mesh di triangoli, instancing, ray tracing, rasterizzazione e Graphical Processing Unit, mesh di quadrangoli, superfici di suddivisione, curve parametriche, animazione, mesh blending e skinning, riproduzione dei colori.
Conoscenza e comprensione: Conoscenza su come modellare scene 3D al computer; comprensione dei trade-off tra features e performance degli algoritmi di grafica; conoscenza della limitazione di fondo degli algoritmi di grafica e di quali scene sono renderizzabili in modo interattivo e quali richiedono calcolo offline.
Applicazione di conoscenza e comprensione: Implementazione di algoritmi di grafica 3D di base, con particolare focus nel rendering di immagini offline. Implementazione di tone reproduction, ray tracing, surface modeling.
Autonomia di giudizio: Essere in grado di valutare i tradeoff di performance dei diversi algoritmi di grafica in relazione con la complessità della scena 3D e della fedeltà delle immagini.
Abilità comunicative: Essere in grado di comunicare con chiarezza come funzionano gli algoritmi di computer grafica, come sono sviluppati e quali scene 3D e feature di immagini supportano.
Capacità di apprendimento successivo: Essere in grado di apprendere algoritmi di grafica avanzata come render con global illumination, geometry processing e simulatori.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
1022263 -
INTERAZIONE UOMO MACCHINA
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
10596283 -
ORGANIZZAZIONE E GESTIONE PER LO START-UP AZIENDALE
(obiettivi)
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.
|
6
|
SECS-P/08
|
54
|
36
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
1041761 -
LINGUAGGI E COMPILATORI
|
Erogato in altro semestre o anno
|
1022266 -
PROGRAMMAZIONE DI SISTEMA
|
Erogato in altro semestre o anno
|
1022267 -
PROGRAMMAZIONE PER IL WEB
(obiettivi)
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.
|
6
|
INF/01
|
54
|
36
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
1041483 -
VERIFICA E VALIDAZIONE DEI SISTEMI SOFTWARE
|
Erogato in altro semestre o anno
|
10593234 -
METODI NUMERICI DELL INFORMATICA
|
Erogato in altro semestre o anno
|
|
1022301 -
INGEGNERIA DEL SOFTWARE
(obiettivi)
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. Il corso prevede la stesura, in gruppo, di un progetto per un sistema informativo di medie dimensioni.
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
Secondo semestre
Insegnamento
|
CFU
|
SSD
|
Ore Lezione
|
Ore Eserc.
|
Ore Lab
|
Ore Studio
|
Attività
|
Lingua
|
Gruppo opzionale:
Insegnamenti metodologici di completamento - (visualizza)
|
6
|
|
|
|
|
|
|
|
1022262 -
INTELLIGENZA ARTIFICIALE
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1022264 -
LINGUAGGI DI PROGRAMMAZIONE
|
Erogato in altro semestre o anno
|
1022265 -
MODELLI E OTTIMIZZAZIONE
(obiettivi)
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: 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;
Applicare conoscenza e comprensione: 1. Applicazioni pratiche dei principali problemi di ottimizzazione (in particolare su reti); 2. uso di software di modellazione ed ottimizzazione.
Capacità critiche e 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;
Capacità 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 successivo 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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1022268 -
SICUREZZA
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
10589652 -
TECNICHE DI PROGRAMMAZIONE FUNZIONALE E IMPERATIVA
(obiettivi)
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).
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
10593235 -
PROGRAMMAZIONE DI SISTEMI EMBEDDED E MULTICORE
|
Erogato in altro semestre o anno
|
|
Gruppo opzionale:
Insegnamenti tecnologici di completamento - (visualizza)
|
6
|
|
|
|
|
|
|
|
1031337 -
BIOLOGIA COMPUTAZIONALE
(obiettivi)
Obiettivi generali: Obiettivo generale del corso è di trasferire agli studenti le conoscenze dello stato dell’arte della biologia computazionale a seguito dell’avvento di tecnologie di sequenziamento massivo per la produzione di dati genomici e proteomici. Tali basi sono necessarie poi per permettere agli studenti di raggiungere le competenze per una corretta analisi delle problematiche proprie dell’area e la capacità di progettazione ed implementazione di un software adatto alla risoluzione del problema proposto. Pertanto il percorso formativo è finalizzato alla formazione di una figura professionale che sia in grado di intervenire nella risoluzione e gestione di progetti informatici in ambito biomolecolare. Obiettivi specifici: Il corso si propone di formare persone esperte nelle analisi dei dati biomedici e progettisti di sistemi software che possiedano le conoscenze di base della biologia molecolare e degli strumenti bio-informatici utilizzati per affrontare la gestione dell'enorme flusso di dati generati in questo settore. Persone con tale profilo professionale dovranno essere in grado, partendo dalla piattaforma sperimentale di produzione dei dati (saranno particolarmente dettagliate le problematiche derivanti dai dati prodotti con sequenziamento massivo), di stabilire quali siano gli algoritmi di interesse per l'analisi dei dati grezzi del progetto. Dovranno inoltre acquisire una sensibilità critica ed essere in grado di definire un protocollo di analisi dei dati tenendo conto delle risorse di calcolo disponibili e, di conseguenza, ottimizzare l'analisi. Al termine del corso, gli studenti presenteranno anche strumenti da loro sviluppati per la gestione, l'integrazione e l'interrogazione delle enormi quantità di dati prodotti dalle analisi al fine di ottenere risultati finali biologici, efficaci e fruibili. Tali strumenti seguiranno gli standard richiesti nello sviluppo software tipici della comunità bioinformatica. Applicazione di conoscenza e comprensione: Gli obiettivi formativi sono realizzati attraverso lezioni frontali, attività di laboratorio ed esercitazioni nelle quali sono previste simulazioni di progetti di lavoro, svolgimento in classe o discussione con partecipazione diretta degli studenti relativamente a problemi e all’analisi di casi di studio. Durante le esercitazioni gli studenti apprenderanno come progettare e sviluppare • una pipeline di analisi bioinformatica per il processamento dei dati grezzi forniti dalle piattaforme di sequenziamento di nuova generazione (NGS) • l'automatizzazione ed ottimizzazione della pipeline di analisi NGS • un sistema software per la gestione ed interrogazione dei dati prodotti dall’analisi • simulazioni di docking e dinamica molecolare di macromolecole biologiche in ambiente di calcolo ad alte prestazioni (HPC). Autonomia di giudizio: Gli studenti del corso acquisiranno la capacità di elaborare informazioni complesse e/o frammentarie (ad esempio dovranno gestire dati di sequenze annotate solo in parte, ossia solo alcune di esse saranno associate ad un intervallo cromosomico di un organismo sequenziato, e spesso annotate in maniera non standard) e dovranno pervenire ad una modellazione dei dati pensata in maniera originale ed autonoma, scelta coerentemente con l'ambito biologico del proprio progetto sperimentale. Abilità comunicative: Gli studenti saranno in grado di dialogare con i ricercatori dell'area biomedica, in modo chiaro, logico ed efficace, utilizzando gli strumenti metodologici acquisiti durante il corso e attraverso termini propri della biologia computazionale. L'acquisizione di queste competenze sarà testata attraverso una verifica orale e diversi progetti sviluppati in laboratorio. Capacità di apprendimento: Gli studenti dovranno aver acquisito la capacità critica, originale ed autonoma di rapportarsi a problematiche proprie dei progetti di biologia computazionale e di applicare autonomamente le conoscenze acquisite durante il corso in vista di un'eventuale prosecuzione degli studi a livello superiore (laurea specialistica) o nella più ampia prospettiva di approfondimento culturale e professionale nel caso di un impiego nell’area biomedica/bioinformatica.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1047673 -
COMPUTER GRAPHICS
|
Erogato in altro semestre o anno
|
1022263 -
INTERAZIONE UOMO MACCHINA
|
Erogato in altro semestre o anno
|
1041761 -
LINGUAGGI E COMPILATORI
(obiettivi)
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.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1022266 -
PROGRAMMAZIONE DI SISTEMA
(obiettivi)
Obiettivi generali: Il corso ha un deciso orientamento applicativo ed ha lo scopo di presentare le principali tecniche di programmazione e di utilizzo dei servizi di sistema in ambiente Unix/Linux e Windows.
Obiettivi specifici: Vengono approfondite le tecniche di gestione delle risorse (file, memoria, processi, etc.) apprese in forma minimale nel corso di Sistemi Operativi I e vengono presentate tecniche di programmazione multi-thread, meccanismi di sincronizzazione, tecniche di programmazione in rete, servizi per la gestione della sicurezza. Sono presentati esempi reali di utilizzo all'interno di applicazioni di sistema.
Conoscenze e comprensione: Alla fine del corso lo studente avrà acquisito familiarità con le principali primitive che permettono di accedere i servizi messi a disposizione da un moderno sistema operativo e che sono necessarie per lo sviluppo di sofisticate applicazioni multipiattaforma. Nel contempo avrà raggiunto una migliore comprensione dei principi di funzionamento di un sistema operativo ed in generale dell'interazione tra applicazioni, librerie e servizi di sistema.
Applicazione di conoscenza e comprensione: Alla fine del corso lo studente sarà in grado di sviluppare applicazioni distribuite multipiattaforma per svolgere compiti di elevata complessità tenendo conto dei requisiti di efficienza, sicurezza ed affidabilità tipici dei servizi classici (scambio di messaggi, file, accesso remoto a risorse) e di individuare le soluzioni migliori per nuove esigenze applicative.
Capacitò di giudizio: Gli studenti svilupperanno le capacità di valutazione necessaria per scegliere tra le diverse alternative messe a disposizione da un moderno sistema operativo per l'accesso allre risorse, la sincronizzazione, il trasferimento di dati, la protezione e la sicurezza.
Capacità di comunicazione: Gli studenti impareranno a giustificare e documentare le loro scelte, con riferimento alla documentazione tecnica ed a supportare la presentazione con risultati sperimentali.
Capacità di apprendimento: La conoscenza degli aspetti generali di interazione tra applicazioni, librerie e servizi di sistema permetterà agli studenti di acquisire rapidamente confidenza con nuove tecniche e sistemi, oltre a quelli considerate nel corso, come ad esempio quelli real-time.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
1022267 -
PROGRAMMAZIONE PER IL WEB
|
Erogato in altro semestre o anno
|
1041483 -
VERIFICA E VALIDAZIONE DEI SISTEMI SOFTWARE
(obiettivi)
Obiettivi generali: Il corso si propone di fornire agli studenti gli strumenti di base per la modellazione ed analisi di sistemi cyber-fisici.
Obiettivi specifici: Il corso si propone di mettere gli studenti in grado di comprendere ed usare un'ampia gamma di tecniche di modellazione, verifica e validazione per sistemi cyber-fisici. Conoscenza e comprensione: Introduzione ad ampio spettro dei principi fondamentali della modellazione ed analisi dei sistemi cyber-fisici modellati come sistemi dinamici sia tempo continuo che tempo discreto.
Applicare conoscenza e comprensione: Saper applicare il portafoglio di tecniche e gli approcci illustrati per la modellazione, verifica e validazione di sistemi cyber-fisici.
Capacità critiche e di giudizio: Gli studenti saranno in grado di prendere autonomamente decisioni razionali sulle tecniche da impiegare nella modellazione, verifica e validazione di sistemi cyber-fisici.
Capacità comunicative: Gli studenti saranno in grado di interagire in modo proficuo con esperti di dominio su un'ampia gamma di argomenti relativi alla modellazione, verifica e validazione di sistemi cyber-fisici
Capacità di apprendimento: Gli studenti saranno in grado di ampliare le loro conoscenze in modo autonomo consultando, secondo necessità , la letteratura scientifica di rilievo.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative caratterizzanti
|
ITA |
|
Gruppo opzionale:
Insegnamenti tecnologici affini - (visualizza)
|
6
|
|
|
|
|
|
|
|
1031337 -
BIOLOGIA COMPUTAZIONALE
(obiettivi)
Obiettivi generali: Obiettivo generale del corso è di trasferire agli studenti le conoscenze dello stato dell’arte della biologia computazionale a seguito dell’avvento di tecnologie di sequenziamento massivo per la produzione di dati genomici e proteomici. Tali basi sono necessarie poi per permettere agli studenti di raggiungere le competenze per una corretta analisi delle problematiche proprie dell’area e la capacità di progettazione ed implementazione di un software adatto alla risoluzione del problema proposto. Pertanto il percorso formativo è finalizzato alla formazione di una figura professionale che sia in grado di intervenire nella risoluzione e gestione di progetti informatici in ambito biomolecolare. Obiettivi specifici: Il corso si propone di formare persone esperte nelle analisi dei dati biomedici e progettisti di sistemi software che possiedano le conoscenze di base della biologia molecolare e degli strumenti bio-informatici utilizzati per affrontare la gestione dell'enorme flusso di dati generati in questo settore. Persone con tale profilo professionale dovranno essere in grado, partendo dalla piattaforma sperimentale di produzione dei dati (saranno particolarmente dettagliate le problematiche derivanti dai dati prodotti con sequenziamento massivo), di stabilire quali siano gli algoritmi di interesse per l'analisi dei dati grezzi del progetto. Dovranno inoltre acquisire una sensibilità critica ed essere in grado di definire un protocollo di analisi dei dati tenendo conto delle risorse di calcolo disponibili e, di conseguenza, ottimizzare l'analisi. Al termine del corso, gli studenti presenteranno anche strumenti da loro sviluppati per la gestione, l'integrazione e l'interrogazione delle enormi quantità di dati prodotti dalle analisi al fine di ottenere risultati finali biologici, efficaci e fruibili. Tali strumenti seguiranno gli standard richiesti nello sviluppo software tipici della comunità bioinformatica. Applicazione di conoscenza e comprensione: Gli obiettivi formativi sono realizzati attraverso lezioni frontali, attività di laboratorio ed esercitazioni nelle quali sono previste simulazioni di progetti di lavoro, svolgimento in classe o discussione con partecipazione diretta degli studenti relativamente a problemi e all’analisi di casi di studio. Durante le esercitazioni gli studenti apprenderanno come progettare e sviluppare • una pipeline di analisi bioinformatica per il processamento dei dati grezzi forniti dalle piattaforme di sequenziamento di nuova generazione (NGS) • l'automatizzazione ed ottimizzazione della pipeline di analisi NGS • un sistema software per la gestione ed interrogazione dei dati prodotti dall’analisi • simulazioni di docking e dinamica molecolare di macromolecole biologiche in ambiente di calcolo ad alte prestazioni (HPC). Autonomia di giudizio: Gli studenti del corso acquisiranno la capacità di elaborare informazioni complesse e/o frammentarie (ad esempio dovranno gestire dati di sequenze annotate solo in parte, ossia solo alcune di esse saranno associate ad un intervallo cromosomico di un organismo sequenziato, e spesso annotate in maniera non standard) e dovranno pervenire ad una modellazione dei dati pensata in maniera originale ed autonoma, scelta coerentemente con l'ambito biologico del proprio progetto sperimentale. Abilità comunicative: Gli studenti saranno in grado di dialogare con i ricercatori dell'area biomedica, in modo chiaro, logico ed efficace, utilizzando gli strumenti metodologici acquisiti durante il corso e attraverso termini propri della biologia computazionale. L'acquisizione di queste competenze sarà testata attraverso una verifica orale e diversi progetti sviluppati in laboratorio. Capacità di apprendimento: Gli studenti dovranno aver acquisito la capacità critica, originale ed autonoma di rapportarsi a problematiche proprie dei progetti di biologia computazionale e di applicare autonomamente le conoscenze acquisite durante il corso in vista di un'eventuale prosecuzione degli studi a livello superiore (laurea specialistica) o nella più ampia prospettiva di approfondimento culturale e professionale nel caso di un impiego nell’area biomedica/bioinformatica.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
1047673 -
COMPUTER GRAPHICS
|
Erogato in altro semestre o anno
|
1022263 -
INTERAZIONE UOMO MACCHINA
|
Erogato in altro semestre o anno
|
10596283 -
ORGANIZZAZIONE E GESTIONE PER LO START-UP AZIENDALE
|
Erogato in altro semestre o anno
|
1041761 -
LINGUAGGI E COMPILATORI
(obiettivi)
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.
|
6
|
INF/01
|
54
|
36
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
1022266 -
PROGRAMMAZIONE DI SISTEMA
(obiettivi)
Obiettivi generali: Il corso ha un deciso orientamento applicativo ed ha lo scopo di presentare le principali tecniche di programmazione e di utilizzo dei servizi di sistema in ambiente Unix/Linux e Windows.
Obiettivi specifici: Vengono approfondite le tecniche di gestione delle risorse (file, memoria, processi, etc.) apprese in forma minimale nel corso di Sistemi Operativi I e vengono presentate tecniche di programmazione multi-thread, meccanismi di sincronizzazione, tecniche di programmazione in rete, servizi per la gestione della sicurezza. Sono presentati esempi reali di utilizzo all'interno di applicazioni di sistema.
Conoscenze e comprensione: Alla fine del corso lo studente avrà acquisito familiarità con le principali primitive che permettono di accedere i servizi messi a disposizione da un moderno sistema operativo e che sono necessarie per lo sviluppo di sofisticate applicazioni multipiattaforma. Nel contempo avrà raggiunto una migliore comprensione dei principi di funzionamento di un sistema operativo ed in generale dell'interazione tra applicazioni, librerie e servizi di sistema.
Applicazione di conoscenza e comprensione: Alla fine del corso lo studente sarà in grado di sviluppare applicazioni distribuite multipiattaforma per svolgere compiti di elevata complessità tenendo conto dei requisiti di efficienza, sicurezza ed affidabilità tipici dei servizi classici (scambio di messaggi, file, accesso remoto a risorse) e di individuare le soluzioni migliori per nuove esigenze applicative.
Capacitò di giudizio: Gli studenti svilupperanno le capacità di valutazione necessaria per scegliere tra le diverse alternative messe a disposizione da un moderno sistema operativo per l'accesso allre risorse, la sincronizzazione, il trasferimento di dati, la protezione e la sicurezza.
Capacità di comunicazione: Gli studenti impareranno a giustificare e documentare le loro scelte, con riferimento alla documentazione tecnica ed a supportare la presentazione con risultati sperimentali.
Capacità di apprendimento: La conoscenza degli aspetti generali di interazione tra applicazioni, librerie e servizi di sistema permetterà agli studenti di acquisire rapidamente confidenza con nuove tecniche e sistemi, oltre a quelli considerate nel corso, come ad esempio quelli real-time.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
1022267 -
PROGRAMMAZIONE PER IL WEB
|
Erogato in altro semestre o anno
|
1041483 -
VERIFICA E VALIDAZIONE DEI SISTEMI SOFTWARE
(obiettivi)
Obiettivi generali: Il corso si propone di fornire agli studenti gli strumenti di base per la modellazione ed analisi di sistemi cyber-fisici.
Obiettivi specifici: Il corso si propone di mettere gli studenti in grado di comprendere ed usare un'ampia gamma di tecniche di modellazione, verifica e validazione per sistemi cyber-fisici. Conoscenza e comprensione: Introduzione ad ampio spettro dei principi fondamentali della modellazione ed analisi dei sistemi cyber-fisici modellati come sistemi dinamici sia tempo continuo che tempo discreto.
Applicare conoscenza e comprensione: Saper applicare il portafoglio di tecniche e gli approcci illustrati per la modellazione, verifica e validazione di sistemi cyber-fisici.
Capacità critiche e di giudizio: Gli studenti saranno in grado di prendere autonomamente decisioni razionali sulle tecniche da impiegare nella modellazione, verifica e validazione di sistemi cyber-fisici.
Capacità comunicative: Gli studenti saranno in grado di interagire in modo proficuo con esperti di dominio su un'ampia gamma di argomenti relativi alla modellazione, verifica e validazione di sistemi cyber-fisici
Capacità di apprendimento: Gli studenti saranno in grado di ampliare le loro conoscenze in modo autonomo consultando, secondo necessità , la letteratura scientifica di rilievo.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
10593234 -
METODI NUMERICI DELL INFORMATICA
(obiettivi)
Obiettivi generali: Acquisire familiarità con i metodi numerici e la modellazione di problemi che emergono in diversi contesti applicativi nell'informatica; acquisire inoltre dimestichezza e competenze pratiche sull'uso di librerie per il calcolo numerico.
Obiettivi specifici: Gli argomenti includono: risoluzione di sistemi lineari densi e sparsi; metodi iterativi e pre-condizionatori; ottimizzazione lineare e non-lineare; risoluzione numerica di equazioni differenziali ordinarie e parziali; integrazione numerica; applicazioni in problemi geometrici, di elaborazione di immagini e di apprendimento automatico.
Conoscenza e comprensione: Conoscenza sul funzionamento dei metodi numerici e loro proprietà matematiche (ottimalità, stabilità, costo computazionale). Comprensione dei limiti e valutazione comparativa di metodi numerici in termini di efficienza, efficacia e applicabilità a problemi di calcolo diversi.
Applicazione di conoscenza e comprensione: Utilizzo delle librerie standard per il calcolo numerico; analisi di euristiche e valutazione empirica di metodi numerici in numerosi contesti applicativi; applicazioni pratiche nell'area della visione artificiale, grafica computazionale e machine learning (quali la discesa del gradiente in pipeline di deep learning).
Autonomia di giudizio: Essere in grado di valutare le prestazioni (in termini di efficienza e di stabilità) dei metodi numerici su problemi diversi, e di saper scegliere il metodo adatto in base alla natura del problema e delle assunzioni sottostanti.
Abilità comunicative: Essere in grado di comunicare con chiarezza le scelte metodologiche nell'utilizzo di un metodo numerico e saper argomentare le proprietà e i risultati attesi e osservati. Essere in grado di fornire un'implementazione chiara e documentata, nonchè di illustrare risultati sperimentali in modo sia qualitativo che quantitativo.
Capacità di apprendimento successivo: Essere in grado di apprendere tecniche alternative e più avanzate quali i metodi di ottimizzazione di funzioni altamente non-convesse o non differenziabili e lo studio di problemi di minimizzazione di energia su varietà di matrici. Essere in grado di implementare tecniche nuove in maniera efficiente, robusta e affidabile.
|
6
|
INF/01
|
36
|
24
|
-
|
-
|
Attività formative affini ed integrative
|
ITA |
|
- -
A SCELTA DELLO STUDENTE
|
6
|
|
-
|
-
|
-
|
-
|
Attività formative a scelta dello studente (art.10, comma 5, lettera a)
|
ITA |
AAF1053 -
TIROCINIO
(obiettivi)
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.
|
15
|
|
-
|
-
|
-
|
-
|
Ulteriori attività formative (art.10, comma 5, lettera d)
|
ITA |
AAF1004 -
PROVA FINALE
(obiettivi)
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.
|
6
|
|
-
|
-
|
-
|
-
|
Per la prova finale e la lingua straniera (art.10, comma 5, lettera c)
|
ITA |