Studiare
In questa sezione è possibile reperire le informazioni riguardanti l'organizzazione pratica del corso, lo svolgimento delle attività didattiche, le opportunità formative e i contatti utili durante tutto il percorso di studi, fino al conseguimento del titolo finale.
Tipologia di Attività formativa D e F
Le attività formative di tipologia D sono a scelta dello studente, quelle di tipologia F sono ulteriori conoscenze utili all’inserimento nel mondo del lavoro (tirocini, competenze trasversali, project works, ecc.). In base al Regolamento Didattico del Corso, alcune attività possono essere scelte e inserite autonomamente a libretto, altre devono essere approvate da apposita commissione per verificarne la coerenza con il piano di studio. Le attività formative di tipologia D o F possono essere ricoperte dalle seguenti attività.
1. Insegnamenti impartiti presso l'Università di Verona
Comprendono gli insegnamenti sotto riportati e/o nel Catalogo degli insegnamenti (che può essere filtrato anche per lingua di erogazione tramite la Ricerca avanzata).
Modalità di inserimento a libretto: se l'insegnamento è compreso tra quelli sottoelencati, lo studente può inserirlo autonomamente durante il periodo in cui il piano di studi è aperto; in caso contrario, lo studente deve fare richiesta alla Segreteria, inviando a carriere.scienze@ateneo.univr.it il modulo nel periodo indicato.
2. Attestato o equipollenza linguistica CLA
Oltre a quelle richieste dal piano di studi, per gli immatricolati dall'A.A. 2021/2022 vengono riconosciute:
- Lingua inglese: vengono riconosciuti 3 CFU per ogni livello di competenza superiore a quello richiesto dal corso di studio (se non già riconosciuto nel ciclo di studi precedente).
- Altre lingue e italiano per stranieri: vengono riconosciuti 3 CFU per ogni livello di competenza a partire da A2 (se non già riconosciuto nel ciclo di studi precedente).
Tali cfu saranno riconosciuti, fino ad un massimo di 6 cfu complessivi, di tipologia F se il piano didattico lo consente, oppure di tipologia D. Ulteriori crediti a scelta per conoscenze linguistiche potranno essere riconosciuti solo se coerenti con il progetto formativo dello studente e se adeguatamente motivati.
Gli immatricolati fino all'A.A. 2020/2021 devono consultare le informazioni che si trovano qui.
Modalità di inserimento a libretto: richiedere l’attestato o l'equipollenza al CLA e inviarlo alla Segreteria Studenti - Carriere per l’inserimento dell’esame in carriera, tramite mail: carriere.scienze@ateneo.univr.it
3. Competenze trasversali
Scopri i percorsi formativi promossi dal TALC - Teaching and learning center dell'Ateneo, destinati agli studenti regolarmente iscritti all'anno accademico di erogazione del corso https://talc.univr.it/it/competenze-trasversali
Modalità di inserimento a libretto: non è previsto l'inserimento dell'insegnamento nel piano di studi. Solo in seguito all'ottenimento dell'Open Badge verranno automaticamente convalidati i CFU a libretto. La registrazione dei CFU in carriera non è istantanea, ma ci saranno da attendere dei tempi tecnici.
4. Contamination lab
Il Contamination Lab Verona (CLab Verona) è un percorso esperienziale con moduli dedicati all'innovazione e alla cultura d'impresa che offre la possibilità di lavorare in team con studenti e studentesse di tutti i corsi di studio per risolvere sfide lanciate da aziende ed enti. Il percorso permette di ricevere 6 CFU in ambito D o F. Scopri le sfide: https://www.univr.it/clabverona
ATTENZIONE: Per essere ammessi a sostenere una qualsiasi attività didattica, incluse quelle a scelta, è necessario essere iscritti all'anno di corso in cui essa viene offerta. Si raccomanda, pertanto, ai laureandi delle sessioni di dicembre e aprile di NON svolgere attività extracurriculari del nuovo anno accademico, cui loro non risultano iscritti, essendo tali sessioni di laurea con validità riferita all'anno accademico precedente. Quindi, per attività svolte in un anno accademico cui non si è iscritti, non si potrà dar luogo a riconoscimento di CFU.
Insegnamenti e altre attività che si possono inserire autonomamente a libretto valide per l'a.a. 2024/25
anni | Insegnamenti | TAF | Docente |
---|---|---|---|
1° 2° | Attention laboratory | D |
Pietro Sala
(Coordinatore)
|
1° 2° | Elementi di Cosmologia e Relatività generale | D |
Claudia Daffara
(Coordinatore)
|
1° 2° | Introduzione alla meccanica quantistica per il quantum computing | D |
Claudia Daffara
(Coordinatore)
|
1° 2° | Introduzione alla programmazione di smart contract per Ethereum | D |
Sara Migliorini
(Coordinatore)
|
1° 2° | Linguaggio programmazione Python [English edition] | D |
Carlo Combi
(Coordinatore)
|
1° 2° | Mini-course on Deep Learning & Medical Imaging | D |
Vittorio Murino
(Coordinatore)
|
1° 2° | Oltre Arduino: dal prototipo al prodotto con microcontroller STM | D |
Franco Fummi
(Coordinatore)
|
1° 2° | Progettazione di app REACT | D |
Graziano Pravadelli
(Coordinatore)
|
1° 2° | Progettazione di componenti hardware su FPGA | D |
Franco Fummi
(Coordinatore)
|
anni | Insegnamenti | TAF | Docente |
---|---|---|---|
1° 2° | Attention laboratory | D |
Pietro Sala
(Coordinatore)
|
1° 2° | Linguaggio Programmazione LaTeX | D |
Enrico Gregorio
(Coordinatore)
|
1° 2° | Linguaggio programmazione Python [Edizione in italiano] | D |
Carlo Combi
(Coordinatore)
|
1° 2° | Prototipizzazione con Arduino | D |
Franco Fummi
(Coordinatore)
|
1° 2° | Sfide di programmazione | D |
Romeo Rizzi
(Coordinatore)
|
1° 2° | Tutela dei beni immateriali (SW e invenzione) tra diritto industriale e diritto d’autore | D |
Mila Dalla Preda
(Coordinatore)
|
Fondamenti di linguaggi di programmazione e specifica (2024/2025)
Codice insegnamento
4S008895
Crediti
12
Lingua di erogazione
Italiano
Settore Scientifico Disciplinare (SSD)
ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Corsi Singoli
Autorizzato
L'insegnamento è organizzato come segue:
Teoria
Laboratorio
Obiettivi di apprendimento
L’insegnamento si propone di fornire le basi teoriche dei linguaggi di programmazione appartenenti a tre diversi paradigmi di programmazione: imperativo, funzionale e concorrente. In particolare, vengono affrontate le seguenti tematiche: (i) tecniche per la definizione di sintassi e semantiche formali, (ii) logiche per esprimere proprietà formali di buon comportamento di programmi, (iii) strumenti per l'analisi statica dei programmi, (iv) nozioni di equivalenze comportamentali tra programmi. Al termine del corso, lo studente sarà in grado di definire formalmente un nuovo linguaggio di programmazione, anche in un contesto di ricerca, attraverso sintassi, semantica formale e sistemi di tipi per l’analisi statica della correttezza dei programmi scritti nel linguaggio. Sarà inoltre in grado di esprimere attraverso linguaggi logici proprietà di buon comportamento dei programmi. Queste conoscenze consentiranno allo studente di: i) provare formalmente proprietà di correttezza di un'arbitraria semantica usando tecniche diverse di induzione; ii) provare formalmente se un programma soddisfa una determinata proprietà di buon comportamento; iii) provare formalmente la correttezza di un sistema di tipi; iv) padroneggiare equivalenze comportamentali semantiche al fine di confrontare il comportamento, a tempo di esecuzione, di due programmi diversi. Al termine del corso lo studente sarà in grado di: i) confrontare linguaggi diversi e scegliere tra questi il più adeguato a seconda del contesto d'uso e di fare le scelte progettuali più appropriate in fase di definizione di un nuovo linguaggio; ii) proseguire gli studi nell’ambito dei linguaggi di programmazione e dello sviluppo di software in maniera autonoma.
Prerequisiti e nozioni di base
Conoscenza di almeno un linguaggio di programmazione, fondamenti di logica matematica.
Programma
Prima parte.
• Introduzione. Sistemi di transizione. La nozione di semantica operazionale strutturale. Sistema di transizioni per fornire la semantica operazionale di un semplice linguaggio imperativo. Opzioni per la progettazione di un linguaggio. Esercizi.
• Tipi. Introduzione ad un sistema formale di tipaggio. Tipaggio per un semplice linguaggio imperativo. Proprietà di buon comportamento di programmi ben tipati. Esercizi.
• Induzione. Rivisitazione dell'induzione matematica. Alberi di sintassi astratta e induzione strutturale. Definizioni induttive guidate da un sistema di inferenze e "rule induction". Prove di proprietà di safety. Esercizi.
• Linguaggi funzionali. Estensione del linguaggio base per la rappresentazione di funzioni higher-order. Tipaggio dell'estensione funzionale e semantica operazionale in modalità call-by-value e call-by-name. Esercizi.
• Data. Semantica e tipaggio per strutture dati di tipo prodotto, somma, records, riferimenti. Esercizi.
• Sottotipaggio. Sottotipaggio dei record, funzioni, e codifica di un semplice linguaggio ad oggetti. Esercizi.
• Equivalenze semantiche. Equivalenze semantiche per frammenti di un semplice linguaggio imperativo. La proprietà di congruenza di un'equivalenza semantica. Esempi di frammenti di programma equivalenti e non. Esercizi.
• Concorrenza. Interleaving con variabili condivise. Semantica per semplici mutex. Una proprietà di serializzazione. Equivalenze semantiche in linguaggi concorrenti. Esercizi.
Seconda parte.
• Relazioni di ordinamento, reticoli, teoremi del punto fisso. Esercizi.
• Semantica denotazione di un linguaggio di programmazione imperativo. Esercizi.
• Esempi di proprietà di programmi e linguaggi di specifica. Esercizi.
• Logica di Hoare (completezza e incompletezza); correttezza parziale/totale. Esercizi.
• Decidibilità, safety, liveness, e sicurezza. Esercizi.
• Semantica a tracce - strutture di Kripke. Esercizi.
• Elementi di logiche temporali. Esercizi.
Bibliografia
Modalità didattiche
Lezioni e laboratorio in presenza
Modalità di verifica dell'apprendimento
L'esame consiste in una prova scritta composta da esercizi insieme allo svolgimento di un piccolo progetto. Lo svolgimento corretto di tutti gli esercizi consente di conseguire una votazione di 30/30.
Criteri di valutazione
Per superare l'esame lo studente dovrà dimostrare di essere in grado di:
* definire, attraverso regole di inferenza, semantiche operazionali, semantiche denotazionali, e sistemi di tipo per semplici linguaggi imperativi, funzionali e concorrenti;
* provare formalmente proprietà su un'arbitraria semantica operazionale usando tecniche diverse di induzione (matematica, strutturale, rule-based);
* conoscere e usare diverse nozioni di equivalenze semantica per confrontare il comportamento di programmi scritti in linguaggi imperativi, funzionali e concorrenti.
Criteri di composizione del voto finale
Il voto finale viene calcolato come media pesata sui CFU corrispondenti ai tre moduli del corso.
Lingua dell'esame
Italiano