Corso di laurea

informatica

Università degli Studi di Padova · 25 materie · 6 file condivisi

Caratteristiche e finalità
Il Corso fornisce una solida base culturale in matematica e informatica garantendo a studentesse e studenti la capacità di affrontare tecnicamente e metodologicamente una molteplicità di problemi in ambiti diversi adattandosi anche con facilità alla rapida evoluzione dell'informatica. Fornisce inoltre una solida conoscenza di base dei diversi settori dell'informatica, nei loro aspetti teorici e applicativi, con particolare riferimento alle esigenze e alle implicazioni dei processi produttivi.

Ambiti occupazionali
Chi si laurea potrà lavorare nell'ambito dello sviluppo di applicazioni software, della gestione di reti informatiche, ma anche come webmaster, progettista di sistemi informativi e di applicazioni in ambiente Internet o rete locale. Inoltre, sarà in grado di collaborare ad attività di ricerca applicata in enti di ricerca e in realtà industriali.

Dalla triennale alla magistrale
Il Corso dà accesso al corso di laurea magistrale in Informatica, secondo le modalità che saranno indicate nello specifico avviso di ammissione.

*****

Characteristics and objectives
This bachelor program provides a firm cultural background in mathematics and computer science, so as that students learn the fundamental technical and methodological skills to cope with a variety of problems in different settings and to deal with the fast evolution of the ICT field. This bachelor degree also gives a firm knowledge in many key areas of computer science, both in their foundational and practical aspects, in particular driven by the needs of the ICT industries and market.

Occupational opportunities
Typical jobs include software engineer, computer network manager, webmaster, information system manager, system engineer, Internet system administrator. Bachelor graduates will be also able to contribute to applied research projects, both in public organizations and private companies.

From Bachelor's degree to Master's degree
The bachelor degree allows to be enrolled in the master program in Computer Science, according to the specific admission rules.

Ecco tutti i dettagli sul corso di laurea selezionato. Sul UniDocs troverai gli appunti condivisi dagli altri studenti del tuo corso di laurea, ordinati per materia. Ricordati che per poter visualizzare il materiale devi essere registrato al sito e possedere un numero di crediti sufficiente.

Al momento abbiamo 6 files caricati sul nostro portale suddivisi nelle 25 materie appartenenti al tuo corso di laurea.

Sfoglia il materiale didattico

Con UniDocs hai l'opportunità di studiare insieme a tutto il tuo corso di laurea. Guadagna subito dei crediti, carica il materiale del tuo ultimo esame!
Più condividi, più tempo avrai per studiare con tutta la community!

Materie del corso

ALGEBRA E MATEMATICA DISCRETA 1° anno · 12 CFU · MATH-06/A · 0 file

Il corso contribuisce alla formazione matematica di base delle studentesse e degli studenti del Corso di Laurea in Informatica, fornendo concetti e metodi indispensabili per i successivi insegnamenti. Il corso fornisce…

Scheda dell'insegnamento

Obiettivi formativi

Il corso contribuisce alla formazione matematica di base delle studentesse e degli studenti del Corso di Laurea in Informatica, fornendo concetti e metodi indispensabili per i successivi insegnamenti.

Il corso fornisce una preparazione di base in algebra lineare e matematica discreta, con l’obiettivo di sviluppare le seguenti competenze:

  • Conoscenza e capacità di comprensione: acquisizione dei concetti fondamentali legati agli anelli di classe resto, ai sistemi di equazioni lineari, alla teoria degli spazi vettoriali euclidei reali e complessi, al calcolo del determinante, agli autosistemi, alla teoria dei grafi ed al calcolo combinatorio.
  • Capacità di applicare conoscenza e comprensione: sviluppo delle abilità necessarie a risolvere operativamente problemi di algebra lineare e matematica discreta, con particolare attenzione sia agli aspetti teorici sia alle procedure algoritmiche. L’apprendimento è supportato da numerosi esempi ed esercizi svolti in aula.
  • Autonomia di giudizio: capacità di riconoscere e impostare in modo autonomo problemi di algebra lineare e matematica discreta.
  • Abilità comunicative: acquisizione della capacità di esporre con chiarezza i concetti e i procedimenti appresi, utilizzando un linguaggio matematico appropriato.
  • Capacità di apprendimento: sviluppo delle basi concettuali e operative per affrontare insegnamenti successivi in ambito matematico ed informatico.

Programma

Algebra:

  • Massimo comun divisore e algoritmo di Euclide; anelli di classi resto.
  • Richiami sui polinomi: divisione, zeri, fattorizzazione in irriducibili (sui reali e sui complessi).
  • Equazioni lineari e matrici: matrici, operazioni sulle matrici, sistemi di equazioni lineari, metodo di eliminazione di Gauss, sistemi omogenei, matrice inversa.
  • Spazi vettoriali, sottospazi, basi. Funzioni lineari, nucleo e immagine. Prodotti scalari, ortogonalità e procedimento di Gram-Schmidt.
  • Autovalori, autovettori e diagonalizzazione di matrici.

Matematica Discreta:

  • Teoria dei grafi: introduzione ai grafi e nozioni di base, connettività, cammini, tagli, alberi, grafi planari, cicli euleriani e circuiti hamiltoniani.
  • Enumerazione: permutazioni e combinazioni semplici, permutazioni e combinazioni con ripetizione, distribuzioni, identità binomiali e triangolo di Pascal, relazioni di ricorrenza.

Abilità analitiche (abilità di ragionamento logico); conoscenze e abilità come specificato nel Syllabus della pagina del Corso di laurea in informatica.

In particolare:

  • strutture numeriche (numeri naturali, numeri primi, frazioni numeriche, numeri razionali, elementi dei numeri reali, disuguaglianze, valore assoluto, potenze, radici);
  • algebra elementare (calcolo letterale, polinomi e operazioni fra polinomi, identità, equazioni di primo e secondo grado, sistemi lineari);
  • insiemi e funzioni (linguaggi degli insiemi, nozione di funzione, grafici di funzioni notevoli, concetto di condizione sufficiente, necessaria);
  • geometria (geometria euclidea piana, angoli, radianti, aree e figure simili, proprietà dei triangoli, dei parallelogrammi, dei cerchi, coordinate cartesiane, elementi di trigonometria).

Non sono previste propedeuticità formali da regolamento per questo insegnamento.

L’insegnamento prevede 98 ore di lezioni frontali, durante le quali vengono illustrati i concetti teorici fondamentali e presentate tecniche di risoluzione per problemi di algebra lineare e matematica discreta.

Accessibilità: Oltre a rivolgersi al/la docente del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

I criteri per una valutazione positiva sono:

  • la correttezza e la completezza delle soluzioni degli esercizi
  • la proprietà del linguaggio matematico utilizzata.

Non è ammesso l’uso di strumenti di intelligenza artificiale generativa nelle prove valutative.

Testi di riferimento

Testi consigliati:

  • Titolo: Applied combinatorics, Autori: Tucker, Alan, Anno: 1980, Editore: Internet Archive.
  • Titolo: Geometria analitica con elementi di algebra lineare, Autori: Abate,Marco; De_Fabritiis,Chiara, Anno: 2015, Editore: McGraw-Hill.

Codice insegnamento P406456457

ANALISI MATEMATICA 1° anno · 12 CFU · MATH-03/A · 1 file
Archivio Globale

Al termine del corso, lo studente o la studentessa avrà acquisito: Conoscenza e comprensione (D1): conoscenza approfondita dei concetti fondamentali dell’Analisi per funzioni di una variabile reale, con particolare…

Scheda dell'insegnamento

Obiettivi formativi

Al termine del corso, lo studente o la studentessa avrà acquisito: Conoscenza e comprensione (D1): conoscenza approfondita dei concetti fondamentali dell’Analisi per funzioni di una variabile reale, con particolare attenzione al calcolo differenziale e integrale, e comprensione del loro significato teorico e applicativo. Capacità di applicare conoscenza e comprensione (D2): capacità di risolvere problemi matematici che coinvolgono derivate, integrali e limiti, anche in contesti applicativi. Autonomia di giudizio (D3): abilità nel seguire e sviluppare ragionamenti logico-deduttivi, riconoscendo la struttura teorica sottostante alle tecniche utilizzate. Abilità comunicative (D4): capacità di esporre in modo chiaro e rigoroso concetti, definizioni e dimostrazioni. Capacità di apprendimento (D5): attitudine a proseguire in modo autonomo lo studio dell’Analisi e della matematica in generale, con una solida base concettuale.

Programma

Il corso tratta i seguenti argomenti: Insiemi numerici: numeri naturali, interi, razionali, reali e complessi. Cardinalità: insiemi finiti e infiniti. Funzioni e loro proprietà. Limiti di funzioni di una variabile reale. Successioni numeriche in ℝ. Derivate di funzioni di una variabile reale. Teoremi fondamentali del calcolo differenziale. Formula di Taylor. Studio di massimi e minimi locali. Rappresentazione grafica di funzioni reali. Serie numeriche e criteri di convergenza. Integrale definito e sue applicazioni. Integrale indefinito e metodi di integrazione. Integrali generalizzati. Metodi risolutivi per alcune equazioni differenziali elementari. Cenni su generalizzazioni dell’Analisi a funzioni di più variabili.

Per affrontare con profitto l’insegnamento è richiesta una solida conoscenza della matematica di base, in particolare: la risoluzione di disequazioni, l’uso delle coordinate cartesiane, e la comprensione delle funzioni trigonometriche, logaritmiche ed esponenziali.

L’insegnamento si basa su lezioni frontali durante le quali vengono presentati i concetti teorici accompagnati da esempi ed esercizi svolti. Questa modalità consente di favorire la comprensione progressiva dei contenuti e lo sviluppo della capacità di applicare le tecniche apprese. Oltre a rivolgersi al/la docente del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

La valutazione della prova scritta si basa sulla comprensione degli argomenti teorici e sulla capacità di risolvere esercizi. In particolare, allo studente o alla studentessa viene richiesto di: 1) utilizzare correttamente il linguaggio matematico; 2) dimostrare in modo rigoroso un certo numero di teoremi; 3) sviluppare un approccio critico, individuando eventuali errori nei ragionamenti matematici; 4) risolvere in modo corretto ed efficace gli esercizi proposti.

Testi di riferimento

  • Titolo: Analisi matematica, Autori: Bertsch, Michiel; Dal Passo, Roberta; Giacomelli, Lorenzo;, Luogo: Milano, Anno: 0, Editore: McGraw Hill, Note: --.
  • Titolo: Analisi Matematica I. Teoria e applicazioni, Autori: MARSON, ANDREA; ANCONA, FABIO; BAITI P; RUBINO B., Luogo: --, Anno: 2010, Editore: Carocci; country:ITA; place:ROMA, Note: --.

Codice insegnamento P307054660

ARCHITETTURA DEGLI ELABORATORI 1° anno · 8 CFU · INFO-01/A · 0 file

Obiettivo dell’insegnamento è permettere allo studente e alla studentessa di acquisire conoscenze di base funzionali e tecnologiche riguardanti l’architettura degli elaboratori, limitatamente al loro utilizzo in ambito…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivo dell’insegnamento è permettere allo studente e alla studentessa di acquisire conoscenze di base funzionali e tecnologiche riguardanti l’architettura degli elaboratori, limitatamente al loro utilizzo in ambito locale. Le esercitazioni in laboratorio informatico consentono di approfondire le conoscenze acquisite mediante l’utilizzo di semplici simulatori di CPU, cache e pipeline.

  1. Conoscenza e comprensione: Lo studente/la studentessa conoscerà i principali concetti relativi alla struttura e al funzionamento di un elaboratore, con riferimento a CPU, gerarchie di memoria, cache, dispositivi di input/output, rappresentazione dell’informazione, linguaggio assembler, instruction set e pipeline.
  2. Capacità di applicare conoscenza e comprensione: Lo studente/la studentessa sarà in grado di applicare le conoscenze acquisite per analizzare il funzionamento di componenti dell’elaboratore e per svolgere semplici attività di simulazione relative a CPU, cache e pipeline.
  3. Autonomia di giudizio: Lo studente/la studentessa sarà in grado di interpretare criticamente il comportamento di semplici architetture e di valutare gli effetti di diverse scelte progettuali sulle prestazioni.
  4. Abilità comunicative: Lo studente/la studentessa sarà in grado di descrivere con linguaggio tecnico appropriato i principali componenti e meccanismi di funzionamento di un elaboratore.
  5. Capacità di apprendimento: Lo studente/la studentessa acquisirà strumenti concettuali e operativi utili per approfondire autonomamente temi legati all’architettura degli elaboratori e ai livelli inferiori dei sistemi di calcolo.

Programma

La struttura e le tematiche dell'insegnamento saranno le seguenti: - Introduzione: Evoluzione dei calcolatori; visione ad alto livello della struttura di un calcolatore; struttura e funzione della Cpu. - Gestione della Memoria: Memorie e Gerarchie di Memorie. Cache: tecniche di associazione, politiche di rimpiazzo. Simulatore Cache. - Dispositivi e Gestione dell'Input/Output: Input/Output: dispositivi esterni, modulo I/O, gestione da programma, gestione tramite interruzioni, DMA. - Cenni di Circuiti Combinatori e Sequenziali, Microprogrammazione: Algebra di Boole. Porte logiche. Circuiti Combinatori. Circuiti sequenziali. Microprogrammazione. - Aritmetica dei Calcolatori: Livello Macchina, Rappresentazione Binaria, Aritmetica. - Linguaggio Assembler e Livello Instruction Set: Linguaggio assembler. Caratteristiche istruzioni macchina. Tipi degli operandi, dati, operazioni. Indirizzamento. Formato istruzioni. Simulatore CPU. - Livello Instruction Set: Architetture CISC e RISC, Processori Multicore - Valutazione e Miglioramento delle Prestazioni: Pipeline: principi generali, prestazioni ideali, dipendenze, tecniche per la riduzione delle dipendenze, RISC-V. Simulatore pipeline RISC-V. Non sono richieste conoscenze particolari, se non quelle di base della matematica. L'insegnamento non prevede propedeuticità.

L'insegnamento prevede lezioni frontali ed esercitazioni in laboratorio informatico. Le esercitazioni in laboratorio informatico consistono nella sperimentazione da parte degli studenti di simulatori di CPU, Cache e Pipeline, sotto vari scenari operativi. In questo modo gli studenti possono verificare sperimentalmente i concetti appresi a lezione e acquisire sia capacità di applicazione dei concetti appresi che di giudizio critico. L’uso di strumenti di intelligenza artificiale generativa è consentito esclusivamente per attività di studio individuale e approfondimento personale. Non è consentito durante le prove d’esame.

Studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l’Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

La valutazione della prova scritta tiene conto dei seguenti criteri:

  • correttezza e completezza delle risposte alle domande teoriche;
  • capacità di utilizzare in modo appropriato il linguaggio tecnico dell’architettura degli elaboratori;
  • capacità di analizzare criticamente le nozioni apprese;
  • correttezza nello svolgimento degli esercizi;
  • capacità di ricostruire il funzionamento o il dimensionamento di componenti dell’elaboratore;
  • capacità di applicare le nozioni apprese a semplici scenari architetturali.

Nel caso in cui la prova orale venga svolta, essa concorre alla verifica della preparazione complessiva, con particolare attenzione alla comprensione dei concetti fondamentali e alla capacità di esporli in modo chiaro e corretto.

Testi di riferimento

  1. Stallings, William, Computer Organization and Architecture: Designing for Performance, 2015. Note: CONSIGLIATO.
  2. Patterson, David A.; Hennessy, John L., Struttura e progetto dei calcolatori. Progettare con RISC-V, Zanichelli, 2023. Note: CONSIGLIATO.

Codice insegnamento P434160714

LOGICA 1° anno · 6 CFU · MATH-01/A · 0 file

Lo scopo del corso è fornire un'introduzione alla logica e alla sua rilevanza per l'informatica. Lo studente dovrà quindi acquisire la capacità di esprimere un enunciato tramite una formula di un linguaggio formale, di…

Scheda dell'insegnamento

Obiettivi formativi

Lo scopo del corso è fornire un'introduzione alla logica e alla sua rilevanza per l'informatica. Lo studente dovrà quindi acquisire la capacità di esprimere un enunciato tramite una formula di un linguaggio formale, di dare una dimostrazione tramite una derivazione in un sistema assiomatico e di fornire controesempi nel caso la formula non sia derivabile. In particolare lo studente sarà condotto alla comprensione di alcuni concetti di carattere generale, come linguaggio, espressione, proposizione, asserzione, metalinguaggio, e altri specifici della matematica, come derivazione, dimostrazione, sistema assiomatico, interpretazione. Lo studente raggiungerà padronanza di tali concetti e sarà quindi in grado di riconoscerli ed applicarli nella matematica, nell'informatica e anche nella vita quotidiana. Il corso illustrerà, inoltre, come la logica possa chiarire con rigore quali siano i limiti intrinseci a quel che può essere espresso in un dato linguaggio e a quel che puo' essere dimostrato in un dato sistema assiomatico. Infine, il corso darà qualche cenno alla storia della logica e alle sue potenzialità e prospettive attuali.

Programma

1. Linguaggio, metalinguaggio, livelli di riferimento, iterazione infinita. 2. Concetto di macchina o robot, significato dei connettivi e loro regole di deduzione, calcolo dei sequenti per logica classica proposizionale, tabelle di verita', teoremi di validita'e completezza. 3. Calcolo dei sequenti per la logica classica predicativa, nozione di interpretazione e modello, teoremi di validita' e completezza. 4. Metodi di decisione per calcoli dei sequenti proposizionali classici. 5. Costruzione di contromodelli classici di enunciati predicativi. 6. Cenni ai teoremi di completezza e incompletezza (Gödel) e di indecidibilità (Church) e loro significato.

Nessuno

Oltre alle lezioni teoriche sono previste esercitazioni in aula con risoluzione di molti esercizi. Sono previste simulazioni in aula degli esami scritti. Oltre a rivolgersi al/la docente del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

La valutazione della prova scritta si basera' sull'assegnazione di un punteggio ad ogni esercizio presente nel testo d'esame.

Testi di riferimento

  • Titolo: Manuale pratico di Logica, Autori: Maria Emilia Maietti, Luogo: --, Anno: 2024, Editore: Padova, Note: dispense.
  • Titolo: Per istruire un robot, Autori: Giovanni Sambin, Luogo: --, Anno: 2007, Editore: Libreria Cortina, Padova, Note: --.

Codice insegnamento P237288370

Lingua Inglese B2 (Abilita' Ricettive) 1° anno · 3 CFU · 0 file

Tutti i Corsi di Laurea di Scienze richiedono una conoscenza della Lingua inglese pari al livello B2 (abilità ricettive ascolto e lettura) del Quadro Comune Europeo di Riferimento per le Lingue del Consiglio d'Europa.…

Scheda dell'insegnamento

Programma

Tutti i Corsi di Laurea di Scienze richiedono una conoscenza della Lingua inglese pari al livello B2 (abilità ricettive ascolto e lettura) del Quadro Comune Europeo di Riferimento per le Lingue del Consiglio d'Europa. Chi è già in possesso di una certificazione di livello B2 o superiore può chiederne il riconoscimento. Tutti gli altri studenti possono sostenere presso il Centro Linguistico di Ateneo il corrispondente Test di Abilità Linguistica (TAL), il cui superamento permette il riconoscimento dei crediti formativi per la lingua straniera. Tutte le informazioni sull'idoneità, sul test di lingua e sulle certificazioni riconosciute, sono disponibili all'indirizzo https://cla.unipd.it/test-linguistici/tal/ Per maggiori informazioni: http://corsi.math.unipd.it/inglese/

Codice insegnamento 51889_550332_64248

Obbligo Formativo Aggiuntivo Matematica 1° anno · 0 file
PROGRAMMAZIONE 1° anno · 9 CFU · INFO-01/A · 0 file

Conoscenza delle nozioni di base della programmazione imperativa e capacità di implementare algoritmi corretti ed efficienti, anche tramite funzioni ricorsive. Capacità di formalizzare la specifica di un problema…

Scheda dell'insegnamento

Obiettivi formativi

Conoscenza delle nozioni di base della programmazione imperativa e capacità di implementare algoritmi corretti ed efficienti, anche tramite funzioni ricorsive. Capacità di formalizzare la specifica di un problema attraverso la formulazione di pre- e post-condizioni. Capacità di analisi di programmi implementati per sviluppare la capacità di ragionare sulla correttezza dell'implementazione rispetto alle pre- e post-condizioni, tramite test oppure dimostrazioni, queste ultime con particolare riferimento a funzioni ricorsive.

Programma

Nozioni di base della programmazione imperativa. In particolare, tipi predefiniti, istruzioni semplici, puntatori, array, aritmetica dei puntatori, funzioni e funzioni ricorsive. Inoltre, memoria dinamica, liste concatenate ed alberi. Nozioni di analisi e verifica dei programmi (debug, test e dimostrazioni di correttezza).

Il corso si basa su nozioni di base di architettura degli elaboratori e di logica, per le quali verrà fornito del materiale di studio.

Il corso ha una forte componente pratica, nella quale i concetti visti a lezione vengono utilizzati per risolvere esercizi al calcolatore. Quiz ed esercizi frequenti hanno lo scopo di permettere allo studente di verificare il proprio livello di apprendimento. Oltre a rivolgersi al/la docente del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

L'esame mira a mettere in rilievo la capacità di ragionare e di esprimere in forma chiara il proprio ragionamento, da parte dello studente. In particolare, si valuta la capacità di specificare il problema da risolvere e di implementare una soluzione rispettando i vincoli posti dal linguaggio di programmazione.

Codice insegnamento P367322901

Prova Finale 1° anno · 3 CFU · 0 file

La prova finale consiste nella predisposizione di una presentazione su un argomento in accordo con il Regolamento per la prova finale del Corso di Studio. La relazione viene presentata e discussa dal candidato alla…

Scheda dell'insegnamento

Programma

La prova finale consiste nella predisposizione di una presentazione su un argomento in accordo con il Regolamento per la prova finale del Corso di Studio. La relazione viene presentata e discussa dal candidato alla presenza di una Commissione appositamente nominata che esprime un giudizio di merito attribuendo un adeguato punteggio.

Codice insegnamento 51889_550331_25843

SISTEMI OPERATIVI 1° anno · 9 CFU · INFO-01/A · 4 file

Al termine dell’insegnamento, la studentessa o lo studente avrà acquisito: 1. Conoscenza e comprensione Comprendere i concetti fondamentali, l'architettura e le funzionalità di base dei moderni sistemi operativi.…

Scheda dell'insegnamento

Obiettivi formativi

Al termine dell’insegnamento, la studentessa o lo studente avrà acquisito:

1. Conoscenza e comprensione

  • Comprendere i concetti fondamentali, l'architettura e le funzionalità di base dei moderni sistemi operativi.
  • Conoscere i meccanismi di gestione dei processi e dei thread, inclusi i relativi algoritmi di scheduling.
  • Comprendere i problemi di concorrenza e le tecniche di sincronizzazione e mutua esclusione.
  • Conoscere le metodologie di gestione della memoria centrale (reale e virtuale).
  • Comprendere l'organizzazione, la struttura e le politiche di gestione dei file system.

2. Capacità di applicare conoscenza e comprensione

  • Analizzare e risolvere problemi complessi relativi alla gestione e all'allocazione delle risorse hardware e software.
  • Applicare i concetti di sincronizzazione per risolvere problemi di concorrenza e prevenzione dei deadlock.
  • Valutare l'impatto pratico delle diverse strategie di allocazione della memoria e organizzazione dei file system sulle prestazioni del sistema.

3. Autonomia di giudizio

  • Identificare e confrontare criticamente le scelte progettuali adottate nei principali sistemi operativi commerciali e open-source (es. Linux, Windows).
  • Valutare i vantaggi e gli svantaggi di specifiche soluzioni architetturali in relazione a diversi scenari di utilizzo o vincoli di risorse.

4. Abilità comunicative

  • Spiegare concetti teorici e problemi tecnici relativi ai sistemi operativi in modo chiaro, preciso e con il lessico specialistico appropriato.
  • Utilizzare efficacemente schemi tecnici, diagrammi di flusso e astrazioni formali per illustrare il funzionamento dei componenti interni di un sistema.

5. Capacità di apprendimento

  • Sviluppare strumenti metodologici e autonomia di studio per approfondire tematiche avanzate o architetture emergenti nel campo dei sistemi operativi.
  • Saper consultare e comprendere la documentazione tecnica e la letteratura scientifica di riferimento per seguire l'evoluzione delle tecnologie correlate.

Programma

Introduzione ai Sistemi Operativi. Gestione dei Processi: definizione, strutture, concorrenza, sincronizzazione, ordinamento, stallo. Gestione della Memoria: gerarchie, rilocazione, strutture, memoria virtuale, paginazione, segmentazione. File System: architetture, struttura logica, modalità di accesso, directory, aspetti implementativi. Modelli e Architetture di Sistemi Operativi: discussione sulle scelte progettuali dei sistemi UNIX/Linux e dei sistemi Windows.

Per seguire con profitto l’insegnamento di "Sistemi Operativi" è preferibile che studentesse e studenti possiedano una conoscenza generale delle Architetture dei Computer, come fornita dal corso di “Architettura degli Elaboratori”. In particolare, è consigliato il possesso di nozioni relative a:

  • Organizzazione e componenti principali della CPU (registri, ALU, unità di controllo) e ciclo di esecuzione delle istruzioni.
  • Struttura e funzionamento della gerarchia di memoria (memoria centrale, cache).
  • Rappresentazione dell'informazione a basso livello e rudimenti di linguaggio assembly.

L’insegnamento non prevede propedeuticità obbligatorie da regolamento.

L’insegnamento è erogato in presenza e si articola in attività didattiche e metodi di insegnamento così ripartiti:

  • Lezioni frontali (circa 32 ore): dedicate alla presentazione e alla discussione dei fondamenti teorici ed architetturali dei sistemi operativi.
  • Esercitazioni in aula (circa 24 ore): volte a sviluppare la capacità di applicare i concetti teorici appresi alla risoluzione di problemi concreti e casi di studio.
  • Esercitazioni in laboratorio (circa 12 ore): finalizzate a far acquisire a studentesse e studenti familiarità pratica con strumenti, ambienti reali e chiamate di sistema.

Flessibilità e inclusione: Studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Politica sull'uso dell'Intelligenza Artificiale generativa: L’utilizzo di strumenti di intelligenza artificiale generativa (es. ChatGPT) è consentito esclusivamente durante lo studio personale e non supervisionato, come supporto all'apprendimento autonomo e al brainstorming, purché venga mantenuto un approccio critico e consapevole. È invece rigorosamente vietato l’utilizzo di tali strumenti durante le prove d’esame o per la redazione di qualsiasi elaborato valutativo, in coerenza con le politiche di Ateneo e per garantire l’integrità accademica.

Modalità d'esame

La valutazione finale è espressa in trentesimi (il voto minimo per il superamento dell'esame è 18/30). Il punteggio complessivo della prova scritta viene ripartito in base al grado di raggiungimento dei risultati di apprendimento attesi:

  • Quesiti Teorici (fino a 20 punti): volti a valutare la conoscenza e comprensione e le abilità comunicative. I criteri specifici di valutazione includono la correttezza e completezza dei contenuti, l'utilizzo appropriato del lessico tecnico della disciplina, il rigore logico e la capacità di sintesi nell'argomentazione.
  • Esercizi Pratici (fino a 25 punti): volti a valutare la capacità di applicare conoscenza e comprensione e l'autonomia di giudizio. I criteri specifici di valutazione includono l'esattezza metodologica nella risoluzione dei problemi, la correttezza formale dei passaggi logici e l'efficacia nell'applicare i concetti appresi durante le lezioni e le esercitazioni di laboratorio.

L'attribuzione della lode è riservata alle prove che dimostrano una piena ed eccezionale padronanza della materia, unita a un'impeccabile proprietà di linguaggio e ad un'evidente autonomia critica nella discussione delle scelte progettuali dei sistemi operativi.

Politica sull'uso dell'Intelligenza Artificiale: Non è ammesso l’uso di strumenti di Intelligenza Artificiale generativa in nessuna fase, incluse la preparazione individuale e lo svolgimento della prova scritta, al fine di garantire una valutazione equa e l'integrità del percorso formativo.

Testi di riferimento

Tanenbaum, A. S., & Bos, H. (2023). I moderni sistemi operativi (5th ed.). Pearson Italia.

Codice insegnamento P042978960

ALGORITMI E STRUTTURE DATI 2° anno · 9 CFU · INFO-01/A · 0 file

Il corso fornisce un'introduzione agli algoritmi, alle strutture dati fondamentali e ai metodi per la loro analisi. Al termine del corso lo studente conosce i principali algoritmi e strutture dati alla base dello…

Scheda dell'insegnamento

Obiettivi formativi

Il corso fornisce un'introduzione agli algoritmi, alle strutture dati fondamentali e ai metodi per la loro analisi. Al termine del corso lo studente conosce i principali algoritmi e strutture dati alla base dello sviluppo dei sistemi software ed è in grado di analizzarne la correttezza e l'efficienza.

Lo studente sa applicare le conoscenze acquisite per progettare e implementare semplici soluzioni algoritmiche, scegliendo le strutture dati e gli algoritmi più appropriati in funzione dei requisiti del problema. È inoltre in grado di confrontare soluzioni alternative, motivando le proprie scelte sulla base di criteri di correttezza ed efficienza.

Lo studente sa descrivere e argomentare il funzionamento degli algoritmi studiati utilizzando una terminologia appropriata. Acquisisce infine gli strumenti metodologici necessari per approfondire autonomamente gli argomenti trattati, generalizzare le tecniche apprese ed esplorare ulteriori sviluppi della disciplina.

Programma

  • Fondamenti. Analisi dettagliata di InsertSort: pseudocodice e analisi del tempo di esecuzione. Ordini di crescita delle funzioni e notazione asintotica. L'algoritmo MergeSort e la tecnica divide et impera. Analisi della complessità di MergeSort.
  • Ricorrenze e loro soluzione. Master Theorem. QuickSort. Complessità media di QuickSort e analisi probabilistica. Randomizzazione di QuickSort.
  • Ordinamento e statistiche d'ordine. HeapSort e analisi della sua complessità. Limiti inferiori per la complessità degli algoritmi di ordinamento basati su confronti. Implementazione di code con priorità mediante heap. Ordinamento in tempo lineare: CountingSort e RadixSort.
  • Strutture dati. Tabelle hash. Alberi binari di ricerca. Alberi rosso-neri. Aumento di strutture dati. Teorema dell'aumento per alberi rosso-neri. Alberi di intervalli.
  • Tecniche avanzate di progettazione e analisi. Programmazione dinamica. Algoritmi greedy.
Elementi di programmazione Matematica discreta Analisi matematica

Il corso prevede lezioni teoriche ed esercitazioni che includono la discussione e la risoluzione di esercizi. Oltre a rivolgersi al/la docente del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

Le domande e gli esercizi della prova scritta sono finalizzati a valutare la capacità dello studente di applicare le conoscenze acquisite per progettare e analizzare soluzioni algoritmiche efficienti a problemi assegnati. La prova verifica inoltre la comprensione degli argomenti teorici trattati nel corso, nonché la capacità di motivare le scelte progettuali effettuate e di analizzarne correttezza ed efficienza.

Testi di riferimento

  1. Thomas H. Cormen,, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, Introduction to Algorithms (fourth edition). The MIT Press, 2022

Codice insegnamento P596847729

AUTOMI E LINGUAGGI FORMALI 2° anno · 6 CFU · INFO-01/A · 1 file

Questo corso fornisce i concetti fondamentali della teoria degli automi e dei linguaggi formali. Inoltre, introduce le nozioni di indecidibilità e intrattabilità.

Scheda dell'insegnamento

Obiettivi formativi

Questo corso fornisce i concetti fondamentali della teoria degli automi e dei linguaggi formali. Inoltre, introduce le nozioni di indecidibilità e intrattabilità.

Programma

I principali contenuti del corso sono i seguenti: Parte 1: linguaggi regolari -- automi a stati finiti -- espressioni e linguaggi regolari -- pumping lemma -- proprietà dei linguaggi regolari Parte 2: linguaggi liberi da contesto -- grammatiche e linguaggi liberi da contesto -- automi a pila -- proprietà dei linguaggi liberi da contesto Parte 3: indecidibilità e intrattabilità -- macchine di Turing -- indecidibilità -- problemi intrattabili -- classi P e NP

Nozioni di base di logica e teoria degli insiemi.

Lezioni frontali ed esercizi in classe.

Studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

I criteri di valutazione sono i seguenti: 1. Completezza delle conoscenze acquisite; 2. Proprietà della terminologia tecnica utilizzata; 3. Capacità di applicare le conoscenze acquisite per la soluzione di esercizi; 4. Capacità di applicare le conoscenze acquisite per dimostrare semplici proprietà di linguaggi formali.

Testi di riferimento

  • Titolo: Introduction to the theory of computation, Autori: Sipser, Michael, Luogo: --, Anno: 2013, Editore: Cengage Learning, Note: --.
  • Titolo: Introduzione alla teoria della computazione, Autori: Sipser, Michael, Luogo: --, Anno: 2016, Editore: Maggioli Editore, Note: --.

Codice insegnamento P582276308

BASI DI DATI 2° anno · 9 CFU · INFO-01/A · 0 file

Obiettivo del corso è quello di permettere allo studente di acquisire alcune conoscenze di base riguardanti le funzionalità dei DBMS (Data Base Management Systems – sistemi per la gestione di basi di dati), la…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivo del corso è quello di permettere allo studente di acquisire alcune conoscenze di base riguardanti le funzionalità dei DBMS (Data Base Management Systems – sistemi per la gestione di basi di dati), la progettazione delle basi di dati mediante l'uso di modelli concettuali, il progetto logico mediante il modello relazionale dei dati e l'uso del linguaggio SQL per la definizione e la realizzazione di basi di dati. Sono previste esercitazioni in laboratorio che consentono allo studente di sperimentare le conoscenze acquisite mediante l'utilizzo di un DBMS concreto. Infine è richiesto lo sviluppo di un progetto che consiste nella progettazione e realizzazione di una base di dati (analisi, progetto concettuale, progetto logico, implementazione, individuazione e implementazione di query di interesse). Oltre ad incrementare la capacità di applicare le conoscenze teoriche acquisite, le varie fasi del progetto espongono lo studente a scelte autonome e ragionate, che richiedono una rielaborazione personale delle conoscenze acquisite.

Programma

La struttura e le tematiche del corso saranno le seguenti:

  • Introduzione Basi di dati e sistemi di gestione di basi di dati. Architettura di un sistema di gestione di basi di dati.
  • L'algebra relazionale.
  • Il linguaggio SQL: Il data definition language di SQL. Il data manipulation language di SQL (interrogazione e aggiornamento).
  • Il DBMS PostgreSQL.
  • La progettazione concettuale di una base di dati, tramite diagramma ER
  • La progettazione logica di una base di dati Il modello relazionale.
  • La normalizzazione di schemi relazionali: Dipendenze funzionali. Scomposizione di relazioni, con preservazione di dati e/o dipendenze. Forme normali per gli schemi di relazione (3NF e BCNF) e decomposizioni in tali forme normali.
  • Gestione Transazioni: Le proprietà ACIDE. Le serializzabilità delle transazioni. Il ripristino delle transazioni eseguiti, tramite ripresa a caldo e a freddo.
  • Strutturazione ed Uso degli Indici B-Tree e Hash
  • Accesso a Basi di Dati da Applicazioni Software scritte in C
È opportuno avere familiarità con gli elementi di base della programmazione, così come forniti nel corso di “Programmazione”. L'insegnamento non prevede propedeuticità.

L'insegnamento prevede lezioni frontali, esercitazioni in aula e sessioni in laboratorio. Le esercitazioni in laboratorio consistono nell'implementazione di semplici database, relative interrogazioni SQL. Sono propedeutiche alla realizzazione del progetto, nel quale lo studente individua autonomamente un caso di studio, progetta ed implementa una base di dati.

Gli studenti con disabilità, Disturbi Specifici dell'Apprendimento (DSA), Bisogni Educativi Speciali (BES) e altre condizioni di salute possono rivolgersi all'Ufficio Servizi agli Studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di accedere alla didattica con supporti e strumenti specifici.

Modalità d'esame

Lo scritto contiene alcune domande che consentono di valutare il livello di apprendimento delle nozioni impartite durante il corso. Sono poi presenti esercizi di progettazione, formulazione di query SQL, normalizzazione e gestione delle transazioni, che richiedono allo studente un'elaborazione personale di concetti e tecniche viste nel corso. La valutazione del progetto considera la capacità, da parte dello studente, di individuare un caso di studio adeguato, di svolgere in modo autonomo un'attività di progettazione qualitativamente appropriata e di realizzare una implementazione disciplinata.

Testi di riferimento

Titolo: Basi di Dati, Autori: Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone. Editore: McGraw Hill

Codice insegnamento P637423710

CALCOLO NUMERICO 2° anno · 6 CFU · MATH-05/A · 0 file
Archivio Globale

Apprendere le basi del calcolo numerico in vista delle applicazioni in campo scientifico e tecnologico, con particolare attenzione ai concetti di errore, discretizzazione, approssimazione, convergenza, stabilita',…

Scheda dell'insegnamento

Obiettivi formativi

Apprendere le basi del calcolo numerico in vista delle applicazioni in campo scientifico e tecnologico, con particolare attenzione ai concetti di errore, discretizzazione, approssimazione, convergenza, stabilita', costo computazionale. Più in dettaglio:

Abilità cognitive:

Alla fine del corso, gli studenti:

C1 Acquisiranno conoscenza su nozioni fondamentali riguardanti il calcolo numerico

C2 Avranno dimestichezza con tecniche consolidate che sono alla base del calcolo numerico

C3 Sapranno collocare gli argomenti trattati nel contesto degli approcci numerici alla model-

lizzazione, e di aree scientifiche affini. In particolare saranno coscienti delle principali problematiche che possono emergere nell'approssimazione della soluzione di un problema matematico.

Abilità pratiche:

Alla fine del corso, gli studenti saranno in grado di:

P1 Analizzare un problema matematico dal punto di vista della sua soluzione numerica

P2 Scegliere in modo cosciente un metodo numerico appropriato

P3 Implementare implementare tale metodo;

P4 Valutare in modo critico i risultati numerici ottenuti;

Abilità trasversali:

Alla fine del corso, gli studenti avranno sviluppato:

T1 Abilità di programmazione matlab;

T2 Conoscenza di alcuni oggetti matematici di livello intermedio che trovano applicazione nel calcolo scientifico

Programma

Sistema-floating point e propagazione degli errori: errore di troncamento e di arrotondamento, rappresentazione floating-point dei reali, precisione di macchina, operazioni aritmetiche con numeri approssimati, condizionamento di funzioni, propagazione degli errori in algoritmi iterativi per esempi, il concetto di stabilita'. Elementi di algebra lineare numerica: norme di vettori e matrici, condizionamento di matrici e sistemi; metodi diretti: metodo di eliminazione gaussiana e fattorizzazione LU, calcolo del determinante, calcolo della matrice inversa, fattorizzazione QR, soluzione ai minimi quadrati di sistemi sovradeterminati. Soluzione numerica di equazioni non lineari: metodo di bisezione, stima dell'errore col residuo pesato; metodo di Newton, convergenza globale, velocita' di convergenza, convergenza locale, stima dell'errore, altri metodi di linearizzazione; iterazioni di punto fisso. Interpolazione e approssimazione di funzioni e dati: interpolazione polinomiale, interpolazione di Lagrange, errore di interpolazione, il problema della convergenza (controesempio di Runge), interpolazione di Chebyshev, stabilità dell'interpolazione; interpolazione polinomiale a tratti, interpolazione spline; approssimazione polinomiale ai minimi quadrati. Integrazione e derivazione numerica: formule di quadratura algebriche e composte, convergenza e stabilità, esempi; instabilità dell'operazione di derivazione, calcolo di derivate tramite formule alle differenze; il concetto di estrapolazione. Laboratorio: implementazione e applicazione di codici numerici in Matlab. Conoscenze di base di analisi matematica e algebra lineare.

Lezioni in aula ed esercitazioni di laboratorio. Oltre a rivolgersi al docente del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

La prova scritta mira a verificare la comprensione dei fondamenti teorici dei metodi numerici. Nel progetto di laboratorio saranno valutate l'implementazione degli algoritmi numerici e la capacità di analisi critica dei risultati.

Testi di riferimento

  • Titolo: Algoritmi numerici, Autori: Rodriguez, Giuseppe, Luogo: Bologna, Anno: 2008, Editore: Pitagora, Note: alcuni paragrafi dei capitoli 1-2-3-4-7-8-9.

Codice insegnamento P665242950

CYBERSECURITY: PRINCIPLES AND PRACTICES 2° anno · 6 CFU · INFO-01/A · 0 file

Acquisire concetti di base di sicurezza (e.g., Access Control, User Authentication, Malware, Attacchi DoS, Intrusion Detection/Prevention, Software and OS security, Trusted Computing) e conoscenze di sicurezza di sistema…

Scheda dell'insegnamento

Obiettivi formativi

Acquisire concetti di base di sicurezza (e.g., Access Control, User Authentication, Malware, Attacchi DoS, Intrusion Detection/Prevention, Software and OS security, Trusted Computing) e conoscenze di sicurezza di sistema in ambiente Linux/Windows/Android, sicurezza di reti wireless/wired, web-application security. Al termine del corso gli studenti avranno acquisito le conoscenze di base della sicurezza informatica e saranno in grado di analizzare un sistema, identificandone le vulnerabilità.

Programma

Teoria: Crittografia: cifrari classici, crittografia simmetrica e asimmetrica, autenticazione dei messaggi, confidenzialità di messaggi, hash, cifrari di stream e cifrari a blocchi. Sicurezza Web: struttura di un'applicazione Web, sicurezza dei database, vulnerabilità XSS, vulnerabilità dei linguaggi di programmazione web. Analisi forense: analisi del traffico di rete, steganografia, text watermarking. Sicurezza del software: buffer overflow, stack overflow, sicurezza dei sistema operativo, antidebug, patching, mitigazioni (stack canaries, ASLR, W ^ X, RELRO), sfruttamento di heap di base non orientato ai metadati, sfruttamento di heap di base orientato ai metadati. Laboratorio: sfide pratiche su ciascuno degli argomenti sopra menzionati

Il corso non prevede propedeudicità.

Lezioni frontali; esercitazioni in laboratorio. Oltre a rivolgersi al/la docente del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

Conoscenza dei concetti studiati nel corso.

Testi di riferimento

  • Titolo: Computer security principles and practice, Autori: Stallings, William; Brown, Lawrie, Luogo: Boston, Anno: 2015, Editore: Pearson, Note: --.
  • Titolo: Introduction to computer security, Autori: Bishop, Matthew, Luogo: Boston, Anno: 2005, Editore: Addison-Wesley, Note: --.

Codice insegnamento P111041465

Diritto, Informatica E Societa' 2° anno · 6 CFU · INFO-01/A · 0 file

Il corso si propone di fornire una introduzione ad ampio spettro agli aspetti giuridici fondamentali legati alle tecnologie digitali e al loro utilizzo nelle professioni. Di particolare interesse per gli studenti che…

Scheda dell'insegnamento

Obiettivi formativi

Il corso si propone di fornire una introduzione ad ampio spettro agli aspetti giuridici fondamentali legati alle tecnologie digitali e al loro utilizzo nelle professioni. Di particolare interesse per gli studenti che operano nell'informatica, il corso tocca tematiche accessibili e rilevanti anche per un pubblico ampio.

Gli studenti apprenderanno come le tecnologie, ed in particolare le tecnologie digitali e la robotica, possono impattare sui diritti degli individui quali privacy, auto-determinazione, integrità personale e come la valutazione del rischio di una violazione di questi diritti debba essere tenuta in considerazione nella realizzazione di un prodotto. Verrà fornito un quadro generale in materia di governance, responsabilità, ricerca e innovazione, privacy by design, GDPR.

Programma

1-Introduzione alla regolamentazione:

nozione di fonte, regola, diritto (soggettivo e oggettivo), ordinamento, hard e soft law (aspetti generali)

2-Introduzione ai principi giuridici fondamentali per l’informatico (informatica e diritto)

I contratti per l’informatica, i contratti di cessione/gestione/manutenzione del software, la responsabilità degli Internet Service Provider, la proprietà intellettuale e il diritto d’autore, le privative industriali, i contratti per la prestazione di servizi, il contratto di lavoro subordinato e autonomo, la “consulenza”

3-Introduzione alla governance tecnologica:

crisi del modello di regolamentazione command and control, nozione di attore di governance (pubblico e privato), separazione tra government e governing, teorie e modelli di governance (governance, self-governance, modelli rights-based), il modello della Responsible, Research and Innovation. Governance per la robotica, Intelligenza Artificiale e tecnologie digitali

4-Nuove tecnologie: questioni etiche e giuridiche

Intelligenza Artificiale e tecnologie digitali, la circolazione dei dati personali, la tutela della privacy, la privacy nel contesto del lavoro, i limiti al controllo tecnologico

non previsto

Discussione di questioni pratiche rilevanti e ricostruzione ragionata delle regole, approccio casistico, problem solving e discussion della metodologia giuridica. Lezioni frontali.

Oltre a rivolgersi al/la docente del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

Verifica dell’apprendimento dei concetti chiave fondamentali, interazione tra linguaggi, verifica del corretto approccio metodologico. Saranno considerati i seguenti parametri:

  • Conoscenza dei contenuti presentati nei volumi adottati per l’insegnamento
  • Chiarezza espressiva e capacità di sintesi
  • Pertinenza argomentativa
  • Esaustività della trattazione

Testi di riferimento

Titolo:Lezioni di diritto, informatica e società, Autori: A. Sitzia, D. Ruggiu, F. Viglione, M. d'Agostino Panebianco, Luogo: --, Anno: 2023, Editore: Kront, Note: --

Codice insegnamento 51889_550406_66988

INTRODUZIONE ALL'APPRENDIMENTO AUTOMATICO 2° anno · 6 CFU · INFO-01/A · 0 file

Il corso presenta i concetti e gli algoritmi fondamentali dell’Apprendimento Automatico, cioè quella classe di tecniche ed algoritmi che a partire dai dati consentono di acquisire nuova conoscenza. Questi sono…

Scheda dell'insegnamento

Obiettivi formativi

Il corso presenta i concetti e gli algoritmi fondamentali dell’Apprendimento Automatico, cioè quella classe di tecniche ed algoritmi che a partire dai dati consentono di acquisire nuova conoscenza. Questi sono particolarmente utili per tutti quei problemi per cui è impossibile, o molto difficile, pervenire ad una formalizzazione utilizzabile per la definizione di una soluzione algoritmica ad hoc. Sono previste varie esercitazioni in laboratorio informatico, al fine di consentire allo studente di sperimentare le conoscenze acquisite mediante la loro applicazione a piccoli esempi pratici. Il corso insegna inoltre le competenze necessarie per applicare e valutare modelli di apprendimento automatico in contesti applicativi reali.

Programma

Il corso tratta gli argomenti elencati di seguito:

  • Intelligenza Artificiale ed Apprendimento Automatico, quando e perchè utilizzare tecniche di apprendimento automatico; gli ingredienti fondamentali, i principali paradigmi e le loro applicazioni.
  • Modelli non-parametrici ed alberi di decisione.
  • Modelli di regressione lineare; spazio delle ipotesi, rappresentazione e definizione della funzione di costo; ottimizzazione e discesa del gradiente.
  • Modelli di classificazione lineare; regressione logistica; regolarizzazione ed model selection.
  • Complessità dei modelli di apprendimento automatico; Bias-Variance Tradeoff, overfitting e underfitting; misure di valutazione delle performance, esempi ed applicazioni; come effettuare debugging e diagnosticare il comportamento di un sistema di apprendimento automatico.
  • Reti Neurali Artificiali: perceptron, reti multistrato e cenni al deep learning; apprendimento dei parametri in reti neurali, backpropagation e discesa di gradiente.
  • Support Vector Machines; metodi kernel e classificazione non lineare.
  • Apprendimento non supervisionato: clustering e riduzione di dimensionalità.
  • Introduzione ai servizi cognitivi, alla percezione nelle macchine (visione e riconoscimento del parlato), NLP e allo sviluppo di sistemi intelligenti.

Sono richieste conoscenze di base di Analisi Matematica, Probabilità e Statistica, Algebra Lineare, e di Programmazione.

Il corso consiste in lezioni e esercizi in laboratorio informatico. Gli esercizi in laboratorio informatico consentono agli studenti di sperimentare, in diversi scenari operativi, le tecniche introdotte a lezione. Gli studenti possono così verificare sperimentalmente i concetti appresi in classe, ed acquisire la capacità di applicarli criticamente di fronte ad un problema concreto.

Oltre a rivolgersi al/la docente del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

Il testo dell'esame scritto contiene domande ed esercizi che consentono di valutare il livello di apprendimento delle nozioni impartite nel corso e la capacità dello studente nell'analizzarle criticamente.

Codice insegnamento P307872644

Metodi E Tecnologie Per Lo Sviluppo Software 2° anno · 6 CFU · INFO-01/A · 0 file

Fornire agli studenti un bagaglio di competenze base per la gestione tecnologica di un progetto software. Conoscenza delle tecniche per gestire un progetto, per la definizione della continous delivery e configuration…

Scheda dell'insegnamento

Obiettivi formativi

Fornire agli studenti un bagaglio di competenze base per la gestione tecnologica di un progetto software. Conoscenza delle tecniche per gestire un progetto, per la definizione della continous delivery e configuration management.

Programma

Saranno trattati i seguenti temi: - Issue Tracking System (GIT) - Source Code Management (SCM) - Framework Scrum - Testing Software - Build Automation (Maven) - Continuous integration - Continuous Delivery - Configuration Management (Ansible) - Concetti base container (Docker e Kubernetes)

Nessuno.

Lezioni frontali e laboratorio. Oltre a rivolgersi al/la docente del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

Valutata la parte pratica (medie delle due prove durante il corso o all'appello) e la parte teorica.

Codice insegnamento 51889_550408_67410

PROBABILITA' E STATISTICA 2° anno · 6 CFU · MATH-03/B · 0 file

L'obiettivo del corso è quello di trasmettere la conoscenza degli strumenti di base del calcolo delle probabilità e della statistica inferenziale. Alla fine del corso, i partecipanti dovranno essere in grado di costruire…

Scheda dell'insegnamento

Obiettivi formativi

L'obiettivo del corso è quello di trasmettere la conoscenza degli strumenti di base del calcolo delle probabilità e della statistica inferenziale. Alla fine del corso, i partecipanti dovranno essere in grado di costruire semplici modelli probabilistici di fenomeni aleatori e di effettuare i relativi calcoli.

Programma

Statistica descrittiva. Dati qualitativi e quantitativi, frequenze relative, metodi grafici di analisi dei dati. Indici di centralità, di dispersione e di forma. Covarianza campionaria.

Assiomi del calcolo delle probabilità e spazi di probabilità. Conseguenze elementari degli assiomi ed esempi di misure di probabilità.

Probabilità condizionata e indipendenza. Formule della probabilità totale e di Bayes. Eventi indipendenti.

Variabili aleatorie. Esempi di variabili aleatorie discrete: di Bernoulli, binomiali, geometriche e di Poisson. Approssimazione di Poisson. Valor medio per variabili aleatorie. Varianza e disuguaglianza di Markov-Chebyshev. Legge congiunta e indipendenza di variabili aleatorie. Covarianza. Densità congiunte e marginali per vettori aleatori discreti. Funzioni di ripartizione. Variabili aleatorie assolutamente continue; esempi: uniforme continua, esponenziale, normale.

Teoremi limite. Legge (debole) dei grandi numeri. Il metodo Monte Carlo. Teorema limite centrale. Approssimazione normale.

Statistica inferenziale. Stimatori puntuali. Correttezza e consistenza [tempo permettendo].

Familiarità con concetti di base di analisi, algebra lineare e calcolo combinatorio. Gli insegnamenti "Analisi matematica" e "Algebra e matematica discreta" coprono i contenuti necessari alla comprensione dell'insegnamento.

Lezioni frontali in presenza. Nel corso delle lezioni sono esposti gli aspetti teorici del corso, vengono illustrati esempi di applicazione e svolte esercitazioni. Vengono inoltre proposte esercizi da svolgere a casa con successiva illustrazione delle soluzioni. Esercizi selezionati possono essere svolti in piccoli gruppi di lavoro e consegnati per la correzione. L'utilizzo dell'intelligenza artificiale per lo svolgimento degli esercizi è ammesso ma deve essere segnalato in dettaglio. Oltre a rivolgersi al docente del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

I partecipanti dovranno dimostrare di aver acquisito le conoscenze teoriche e di saperle applicare correttamente alla soluzione di problemi di calcolo delle probabilità e di statistica inferenziale di congrua difficoltà.

Testi di riferimento

  • Ross, Sheldon M. Probabilità e statistica per l'ingegneria e le scienze. Maggioli Editore, Santarcangelo di Romagna (RN), 2015, terza edizione italiana.
  • Caravenna, Francesco e Dai Pra, Paolo. Probabilità: Un'introduzione attraverso modelli e applicazioni., Springer Milan, Milano, 2013.

Codice insegnamento P886923183

PROGRAMMAZIONE AD OGGETTI 2° anno · 10 CFU · INFO-01/A · 0 file

Il corso mira ad introdurre la programmazione orientata agli oggetti in tutti i suoi aspetti, incluso lo sviluppo di un progetto software.

Scheda dell'insegnamento

Obiettivi formativi

Il corso mira ad introdurre la programmazione orientata agli oggetti in tutti i suoi aspetti, incluso lo sviluppo di un progetto software.

Programma

Il corso introduce la programmazione orientata agli oggetti utilizzando il linguaggio C++. Si tratteranno i seguenti argomenti principali. Tipi di dato astratti. Classi e oggetti. Campi dati e metodi. Parti private e pubbliche. Costruttori. Overloading. Distruttori. Metodi e classi friend. Classi collezione. Tecniche di condivisione controllata della memoria. Template di funzioni e di classe. Ereditarietà e gerarchie di classi. Metodi virtuali. Ereditarietà multipla e derivazione virtuale. Classi e gestione delle eccezioni. Cenni di design pattern. Uso di alcune librerie standard e ausiliarie: libreria STL e classi contenitore, libreria di I/O, librerie grafiche (ad esempio, Qt). Il corso prevede un laboratorio in cui gli studenti realizzeranno un progetto di programmazione ad oggetti usando gli strumenti introdotti nel corso. Propeduticità: Programmazione.

L'insegnamento prevede lezioni frontali e lo sviluppo di un progetto software di laboratorio. Oltre a rivolgersi ai docenti del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

L'esame scritto verte su tutti gli argomenti del corso. Il progetto di laboratorio sarà sviluppato in C++ ed utilizzerà alcune librerie ad ampia diffusione.

Testi di riferimento

Titolo: Appunti di programmazione ad oggetti, terza edizione, Autore: Francesco Ranzato, Luogo: Padova, Anno: 2023, Editore: Libreria Progetto, Padova, Note: ISBN-13: 978-8887331943.

Codice insegnamento P164374699

Paradigmi Di Programmazione 2° anno · 6 CFU · INFO-01/A · 0 file

Riconoscere le principali difficoltà legate alla costruzione di programmi e sistemi concorrenti e/o distribuiti; capire le limitazioni intrinseche dei vari approcci ed interpretare le garanzie fornite dai diversi…

Scheda dell'insegnamento

Obiettivi formativi

Riconoscere le principali difficoltà legate alla costruzione di programmi e sistemi concorrenti e/o distribuiti; capire le limitazioni intrinseche dei vari approcci ed interpretare le garanzie fornite dai diversi strumenti in funzione dei requisiti del problema affrontato.

Programma

Il panorama dei problemi in cui l'informatica è usata come soluzione è ormai estremamente vasto; questo consente di individuare alcune larghe categorie le cui caratteristiche principali sono state studiate e su cui si è raccolta una cospicua esperienza. Usando il linguaggio Java e l'ecosistema della JVM come supporto, il corso illustra le difficoltà che si incontrano realizzando programmi e sistemi concorrenti e/o distribuiti, quali soluzioni si possono trovare in letteratura e sul mercato, e quali sono i criteri per selezionarle. Temi trattati: - Presentazione della JVM e del linguaggio Java; - caratteristiche salienti del linguaggio e della libreria standard - definizioni e problemi della concorrenza; threads, locks; - definizioni e problemi della distribuzione; datagrams, sockets e channels; - cenni di stato distribuito; - tecnologie reattive (Rx e Reactive Streams); modello ad attori;

Concetti di programmazione Object Oriented. Interazione con la linea di comando. È particolarmente utile aver seguito il corso di Programmazione ad Oggetti.

Lezioni frontali. Discussione in aula di un problemi e relative soluzioni, suddivise in passi e affrontate gradualmente, con interazione diretta insieme agli studenti. Oltre a rivolgersi al/la docente del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

Chiarezza di intenti nel suddividere un problema in parti per risolvere ciascuna con il corretto metodo. Attenzione alla produzione di codice leggibile e in grado di comunicare chiaramente l'intento dell'autore.

Codice insegnamento 51889_550407_67409

Reti Di Calcolatori 2° anno · 9 CFU · INFO-01/A · 0 file

L'obiettivo principale del corso è quello di dare una panoramica a tutto tondo delle nozioni di base che costituiscono il grande mondo delle reti, cercando non solo di capire come sono fatte ma soprattutto perché…

Scheda dell'insegnamento

Obiettivi formativi

L'obiettivo principale del corso è quello di dare una panoramica a tutto tondo delle nozioni di base che costituiscono il grande mondo delle reti, cercando non solo di capire come sono fatte ma soprattutto perché funzionano così. Si analizzeranno quindi tutti i vari strati fondanti, a partire dallo strato fisico per salire via via agli strati superiori (data link, medium access control, network, transport, application). Si passerà poi al problema della sicurezza nelle reti, esponendone i concetti e le tecnologie fondamentali.

Programma

+ Introduzione al mondo delle reti Categorie e classificazioni delle reti, modelli di riferimento + Lo strato fisico Proprietà dei mezzi trasmissivi, dal cavo al wireless ai satelliti. + Lo strato data link Framing, tecniche di error-detection e di error-correction, flow control. + Il sottostrato medium access Protocolli ad accesso multiplo, ethernet, tecnologie wireless. + Lo strato network Tipi di connessioni, routing, qualità del servizio, internet. + Lo strato trasporto Protocoll di trasporto, internet. + Lo strato application Il Domain Name System. + Sicurezza Vulnerabilità, crittografia, chiavi simmetriche e pubbliche, firme digitali, communication e application security, autenticazione.

E' opportuno avere familiarità con gli elementi di base della programmazione, così come forniti nel corso di "Programmazione" e con i contenuti del corso di "Sistemi Operativi".

L'insegnamento prevede lezioni frontali. Oltre a rivolgersi al/la docente del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

Il criterio di valutazione principale è la comprensione delle tecnologie di rete e di sicurezza mostrate durante il corso. Questo significa quindi conoscere il funzionamento, i punti deboli ed i punti di forza delle tecnologie, la loro interazione nel contesto.

Testi di riferimento

  • Titolo: Computer Networks (4th edition), Autori: Andrew S. Tanenbaum, Luogo: --, Anno: 2002, Editore: Prentice Hall, Note: Testo di riferimento, anche l'edizione italiana va bene / English or Italian translations are all ok.

Codice insegnamento 51889_550410_67412

INGEGNERIA DEL SOFTWARE 3° anno · 12 CFU · INFO-01/A · 0 file

L'insegnamento intende fornire le conoscenze alla base della professione di "software engineer" e confronta gli studenti con attività di pratica esperienziale collaborativa, per il tramite di un corposo progetto…

Scheda dell'insegnamento

Obiettivi formativi

L'insegnamento intende fornire le conoscenze alla base della professione di "software engineer" e confronta gli studenti con attività di pratica esperienziale collaborativa, per il tramite di un corposo progetto didattico collaborativo, che attraversa tutte le fasi principali del suo ciclo di sviluppo, dalla risposta a una gara di appalto fino alla realizzazione, concordata, di un prototipo iniziale del prodotto atteso, tecnicamente denominato "minimum viable product". Nello specifico, la persona discente apprenderà: 1) metodi e tecniche per l'organizzazione e la gestione di attività collaborative (pianificazione, ripartizione dei compiti, calendarizzazione, monitoraggio del progresso, verifica degli esiti); 2) professionalità nell'interazione con "clienti" esterni (cattura, analisi e discussione di requisiti, dimostrazione di prototipi e di prodotti finiti); 3) metodi e tecniche per l'auto-apprendimento e per la condivisione di conoscenza; 4) metodi e tecniche di presentazione e comunicazione. L'organizzazione didattica favorisce flessibilità e responsabilizzazione nella determinazione e nel raggiungimento di obiettivi di apprendimento, accompagnate da flessibilità temporale. La natura del progetto didattico favorisce l'acquisizione e il rafforzamento di competenze trasversali e di apprendimento esperienziale.

Programma

Per una carrellata degli argomenti di insegnamento si veda la pagina https://docs.google.com/spreadsheets/d/1TqTueqg0v_PCngLsy95M_N9lYOknyqfpg0YwvzMMspU/edit?usp=sharing, riferita all'edizione 2025/2026 dell'insegnamento, che corrisponderà perfettamente per argomenti e risorse al programma dell'edizione 2026/2027.

L'insegnamento assume e richiede familiarità con i linguaggi e tecniche di programmazione presentati nel triennio (programmazione imperativa e a oggetti), e con le funzionalità fondamentali delle base di dati e delle più comuni tecnologie basate su SQL. L'insegnamento richiede anche impegno e disposizione all'auto-apprendimento di linguaggi e tecnologie non precedentemente incontrate a lezione.

1) Insegnamento d'aula, sia sincrono che asincrono; 2) lezioni "rovesciate", svolte in modalità "flipped classroom", su argomenti selezionati, centrati prevalentemente su strumenti e tecniche di sviluppo collaborativo; 3) esercitazione guidate su temi di teoria; 4) attività pratiche con feedback di progresso. Oltre a rivolgersi al docente del corso, studentesse e studenti con disabilità, DSA, bisogni educativi speciali, BES. e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

Lo scritto individuale consiste di domande pratiche di tipo “problem solving” e domande sui concetti fondanti della disciplina del software engineering. Nel complesso, tali domande mirano a valutare il livello di apprendimento raggiunto dalla persona discente nelle attività di corso, in aula, nel progetto didattico, e nello studio autonomo. Per mettere alla prova le capacità di collaborazione sviluppate nel progetto didattico, alcuni domande della prova scritta richiederanno risposta concordate da gruppi di due o tre persone in esame, determinate prima della prova. La valutazione delle revisioni di progresso, nel loro complesso, misura invece il gradiente di miglioramento qualità dei prodotti realizzati nel corso del progetto, sia documentali che software, e delle corrispondenti presentazioni e dimostrazioni pubbliche.

Testi di riferimento

  • Titolo: Design Patterns: Elements of Reusable Object-Oriented Software, Autori: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Anno: 1995, Editore: Pearson Education.
  • Titolo: Guide to the Software Engineering Body of Knowledge, Autori: IEEE Computer Society. Software Engineering Coordinating Committee, Anno: 2025, Editore: Hironori Washizaki, Waseda University Japan.
  • Titolo: Software Engineering, Autore: Ian Sommerville, Anno: 2016, Editore: Pearson Education.

Codice insegnamento P398831717

RICERCA OPERATIVA 3° anno · 6 CFU · MATH-06/A · 0 file

Al termine dell’insegnamento, lo studente o la studentessa sarà in grado di: (DD1 - Conoscenza e comprensione) comprendere e formalizzare problemi decisionali attraverso la costruzione di modelli matematici e di flussi…

Scheda dell'insegnamento

Obiettivi formativi

Al termine dell’insegnamento, lo studente o la studentessa sarà in grado di:

(DD1 - Conoscenza e comprensione)

  • comprendere e formalizzare problemi decisionali attraverso la costruzione di modelli matematici e di flussi su grafi;
  • conoscere i fondamenti teorici e applicativi della programmazione lineare, sia nel continuo che nel discreto, dell'ottimizzazione su grafo e dei principali algoritmi per la soluzione dei relativi modelli;

(DD2 - Capacità di applicare conoscenza e comprensione)

  • applicare tali conoscenze per analizzare problemi reali e tradurli in modelli risolvibili con strumenti computazionali;
  • utilizzare in modo consapevole pacchetti software per la modellazione e la risoluzione di problemi di ottimizzazione, e integrare la loro implementazione in sistemi informatici;

(DD3 - Autonomia di giudizio)

  • valutare la correttezza dei modelli e degli algoritmi di ottimizzazione;
  • interpretare criticamente i risultati ottenuti in relazione al contesto applicativo;

(DD4 - Abilità comunicative)

  • esporre in modo chiaro l'applicazione di algoritmi di ottimizzazione;
  • utilizzare correttamente il linguaggio matematico per la descrizione di problemi concreti di ottimizzazione;

(DD5 - Capacità di apprendimento)

  • integrare conoscenze teoriche e applicative;
  • sviluppare autonomia nell’analisi e nella soluzione di problemi di ottimizzazione.

Programma

Introduzione ai problemi di ottimizzazione e alla costruzione di modelli matematici.

Attività di laboratorio con l’uso di risolutori software.

Programmazione lineare: formulazione, teoria e metodo del simplesso; teoria della dualità e relative applicazioni.

Ottimizzazione su grafi: modelli e algoritmi per il problema del cammino minimo (algoritmi di Dijkstra e Bellman-Ford); cenni ai problemi di flusso massimo e di flusso di costo minimo.

Elementi di programmazione lineare intera e ottimizzazione combinatoria: metodo del Branch-and-Bound e introduzione a euristiche di ricerca locale.

Per affrontare l’insegnamento sono richieste alcune nozioni di base di analisi matematica (funzioni, ottimi locali e globali), geometria e algebra lineare (matrici, sistemi lineari, spazi vettoriali) e matematica discreta (logica, grafi). Tali competenze sono acquisite nei corsi di base degli anni precedenti.

L’insegnamento prevede lezioni frontali per l’introduzione e la discussione dei concetti teorici, e lo svolgimento guidato di esercizi. Sono anche previste attività in laboratorio che consistono nell’implementazione, tramite un linguaggio o librerie di modellazione algebrica, di semplici modelli di programmazione lineare e mista intera, con l’obiettivo di sviluppare competenze operative nella formulazione e risoluzione di problemi di ottimizzazione.

Agli studenti e alle studentesse è consentito utilizzare strumenti di intelligenza artificiale generativa come supporto allo studio e all’apprendimento, purché l’utilizzo avvenga in modo critico e consapevole, confrontandosi con il docente sui metodi e sui limiti di tali strumenti. L’impiego dell’IA non deve sostituire il processo di apprendimento individuale, ma può essere utilizzato per integrare le attività formative, stimolare la riflessione sui contenuti del corso e favorire l’approfondimento autonomo. L’utilizzo dell’IA generativa deve comunque rispettare le Linee guida di Ateneo, con particolare attenzione alla trasparenza, alla responsabilità personale e all’integrità accademica.

Oltre a rivolgersi al/la docente del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

La valutazione della prova scritta si basa sulla correttezza, completezza e chiarezza delle soluzioni proposte. In particolare, saranno oggetto di valutazione:

  • la capacità di modellare un problema decisionale mediante la formulazione di un modello di programmazione lineare intera;
  • l’abilità nell’applicare correttamente metodi come l’algoritmo del simplesso, algoritmi di ottimizzazione su rete, la teoria della dualità e il Branch-and-Bound;
  • la comprensione teorica degli argomenti trattati, accertata tramite domande aperte o a risposta guidata.

Il punteggio finale riflette il livello complessivo di padronanza dei contenuti e delle competenze previste, con particolare attenzione alla capacità di applicare conoscenze teoriche a esercizi concreti.

Non sono previsti strumenti automatizzati o basati su intelligenza artificiale per la valutazione.

Testi di riferimento

R. Tadei, F. Della Croce, Elementi di Ricerca Operativa, Esculapio, 2010. Note: solo per consultazione (le dispense fornite dal docente su Moodle comprono tutti gli argomenti del corso)

Codice insegnamento P489471708

Stage 3° anno · 12 CFU · 0 file

Attività di tirocinio obbligatorio, di durata equivalente a 8 settimane di lavoro a tempo pieno, da svolgersi presso una organizzazione esterna al corso di studio, sotto lo supervisione di un tutor dell'ente ospitante.…

Scheda dell'insegnamento

Programma

Attività di tirocinio obbligatorio, di durata equivalente a 8 settimane di lavoro a tempo pieno, da svolgersi presso una organizzazione esterna al corso di studio, sotto lo supervisione di un tutor dell'ente ospitante. La redazine di una relazione finale delle attività svolte in stage sostituisce la tesi di laurea da presentare all'esame finale. Per studenti lavoratori che abbiamo difficoltà con la logistica di un tirocinio canonico, viene previsto un tirocinio interno, un docente del corso di studi svolge il ruolo di tutor.

Codice insegnamento 51889_550533_18175

TECNOLOGIE WEB 3° anno · 9 CFU · INFO-01/A · 0 file

L'insegnamento intende presentare agli studenti il World-Wide Web e le tecnologie informatiche che lo caratterizzano. Ha lo scopo di fornire le conoscenze necessarie per la progettazione e lo sviluppo di siti web di…

Scheda dell'insegnamento

Obiettivi formativi

L'insegnamento intende presentare agli studenti il World-Wide Web e le tecnologie informatiche che lo caratterizzano. Ha lo scopo di fornire le conoscenze necessarie per la progettazione e lo sviluppo di siti web di qualità con l'uso delle tecnologie più avanzate. Gli studenti, oltre ad acquisire una conoscenza di alto livello dei vari tipi di tecnologie web esistenti, verranno formati a divenire sviluppatori di siti web basati sui i linguaggi standard. Verranno inoltre trattati aspetti dell’interattività sul web (linguaggi di script). L’insegnamento propone una didattica esperienziale e partecipativa: gli studenti e le studentesse sono invitati/e a contribuire attivamente alle discussioni sui casi di applicazione reale presentati durante le lezioni. Per questo motivo è importante la frequenza e il contributo che ogni studente e studentessa può offrire al gruppo.

Programma

  1. Introduzione. Il concetto di ipertesto, il World Wide Web ed Internet. Gli enti di standardizzazione, le architetture Client-Server e i protocolli di Internet.
  2. I linguaggi del web statico. I linguaggi XHTML e HTML5 e i fogli stile (il linguaggio CSS): formattazione del testo e la grafica su Web; links e navigazione.
  3. Principi di web design. Architettura dell'informazione. Schemi Organizzativi e strutture per la navigazione. Progettazione dell'interfaccia. Emotional Design.
  4. Accessibilità e legislazione. Tecniche per garantire l'accessibilità. Search Engine Optimization.
  5. I linguaggi per il web dinamico (Programmazione su Internet) sia lato client che lato server. Il linguaggio Javascript. Il modello DOM per la gestione delle pagine via JavaScript. Il linguaggio PHP.

È opportuno avere familiarità con gli elementi di base della programmazione, così come forniti nei corso di “Programmazione” e “Programmazione ad oggetti”. Gli studenti devono aver superato il corso di "Basi di Dati" e di “Programmazione”.

L'insegnamento prevede lezioni frontali, esercitazioni in laboratorio e la realizzazione di un progetto. Il materiale del corso e le lezioni sono accessibili. Oltre a rivolgersi alla docente del corso, studentesse e studenti con disabilità, DSA, BES e altre condizioni di salute, possono contattare l'Ufficio Servizi agli studenti - Settore Inclusione per ricevere maggiori informazioni sulle opportunità di fruizione della didattica con specifici supporti e strumenti.

Modalità d'esame

Lo scritto contiene alcune domande che consentono di valutare il livello di apprendimento delle nozioni teoriche impartite durante il corso.

Criteri per la prova scritta:

  • correttezza delle risposte
  • completezza delle risposte

Il progetto, svolto in gruppo, mira a valutare la capacità, da parte dello studente, di individuare un caso di studio adeguato e di progettare e realizzare un sito web sia per quanto riguarda la parte di backend che di frontend.

Criteri per il progetto:

  • rispetto degli standard web
  • accessibilità del sito
  • usabilità del sito
  • correttezza interfaccia utente

Codice insegnamento P456644863

Recensioni del corso

Studi qui? Accedi per lasciare la tua recensione e aiutare altri studenti a scegliere.

★

Nessuna recensione per ora — e la prima è la più preziosa. Condividi la tua esperienza e orienta le future matricole.