Per maggiori informazioni si rimanda alla pagina del corso di
Programmazione
e Laboratorio sul sito del prof. Claudio Mirolo
Orario lezioni di laboratorio di programmazione
-
I semestre: le lezioni di laboratorio si svolgeranno in due turni:
- mercoledì dalle 8:30 alle 10:30 (studenti con numero di
matricola pari)
- venerdì dalle 10:30 alle 12:30 (studenti con numero di
matricola dispari)
-
II semestre: le lezioni di laboratorio si svolgeranno in turno unico
- mercoledì dalle 12:30 alle 14:30
Testi
Testo di riferimento sulla programmazione funzionale:
M. Hailperin, B. Kaiser, K. Knight
"Concrete Abstractions"
Disponibile online (Ediz. originale: Brooks/Cole)
I testi degli esercizi ed il
materiale di accompagnamento (es.: teachpack) sono offerti dal
prof. Claudio Mirolo
Lezioni di teoria tenute da me (le altre sono offerte dal
prof. Claudio Mirolo)
[top]
I link ai video delle lezioni che ho
registrato sono disponibili qui
I semestre
[top]
-
Lezione 2 (giovedì 2/10/25, 8:30-10:30): Introduzione (i 3
miracoli dell'informatica, significato vs. forma); installazione di
DrRacket; espressioni in Scheme
[Parziale numero ore: 2]
-
Lezione 3 (lunedì 6/10/25, 8:30-10:30): Introduzione
all'astrazione procedurale;
costrutti lambda
e define
[Parziale numero ore: 4]
-
Lezione 4 (giovedì 9/10/25, 8:30-10:30): Funzione per il calcolo
del plurale di un sostantivo maschile; tipi di dati booleani e
funzioni a valore booleano;
costrutto if; funzione per il
calcolo del plurale di un sostantivo (maschile o femminile)
[Parziale numero ore: 6]
Per scaricare il file codice.rkt usare
il tasto destro del mouse (o qualcosa di equivalente in sistemi
Apple) e selezionare, nel menù risultante, la voce "save link
as"
II semestre
[top]
-
Lezione 45 (mercoledì 6/5/26, 8:30-10:30): Correttezza di
programmi imperativi (invarianti e correttezza, algoritmo del
contadino russo)
[Parziale numero ore: 8]
-
Lezione 47 (mercoledì 13/5/26, 8:30-10:30): Correttezza di
programmi imperativi (correttezza
dell'algoritmo del contadino russo, terminazione)
[Parziale numero ore: 10]
-
Lezione 48 (martedì 19/5/26, 8:30-10:30): Correttezza di
programmi imperativi (terminazione dell'algoritmo del contadino russo, altri esercizi)
[Parziale numero ore: 12]
- Lezione 49 (mercoledì 20/5/26, 8:30-10:30): Conversione di
programmi ricorsivi in programmi iterativi
[Parziale numero ore: 14]
- Lezione 50 (martedì 26/5/26, 8:30-10:30): Conversione di
programmi ricorsivi in programmi iterativi (altri esercizi)
[Parziale numero ore: 16]
-
Lezione 51 (mercoledì 27/5/26, 8:30-10:30): Esercitazione su
temi d'esame
[Parziale numero ore: 18]
-
Lezione 52 (mercoledì 3/6/26, 8:30-10:30): Esercitazione su
temi d'esame
[Parziale numero ore: 20]
Lezioni di laboratorio
[top]
I semestre
[top]
- Lezione 1 (mercoledì 29/10/25, 8:30-10:30, e
venerdì 31/10/25,
10:30-12:30): Problemi 1 (coniugare frasi) e 2 (puzzle con piastrelle)
[Parziale numero ore: 4]
Per scaricare il teachpack usare il tasto destro del mouse (o
qualcosa di equivalente in sistemi Apple) e selezionare, nel
menù risultante, la voce "save link as"
- Lezione 2 (mercoledì 5/11/25, 8:30-10:30, e venerdì
7/11/24, 10:30-12:30): Problema 3 (determinare il valore di
rappresentazioni numeriche in una data base)
[Parziale numero ore: 8]
- Lezione 3 (mercoledì 12/11/25, 8:30-10:30, e venerdì
14/11/25, 10:30-12:30): Problemi 4 (percorsi di Manhattan
tridimensionali) e 5 (tassellazione di una regione ad L)
[Parziale numero ore: 12]
Per scaricare il teachpack usare il tasto destro del mouse (o
qualcosa di equivalente in sistemi Apple) e selezionare, nel
menù risultante, la voce "save link as"
- Lezione 4 (mercoledì 19/11/25, 8:30-10:30, e venerdì 21/11/25, 10:30-12:30): Problema 6 (manipolazione di liste di numeri)
[Parziale numero ore: 16]
- Lezione 5 (mercoledì 26/11/25, 8:30-10:30, e venerdì 28/11/25, 10:30-12:30): Problema 7 (implementazione del comando diff)
[Parziale numero ore: 20]
- Lezione 6 (mercoledì 3/12/25, 8:30-10:30, e venerdì 5/12/25, 10:30-12:30): Problema 8 (torre di Hanoi)
[Parziale numero ore: 24]
Per scaricare il teachpack usare il tasto destro del mouse (o
qualcosa di equivalente in sistemi Apple) e selezionare, nel
menù risultante, la voce "save link as"
- Lezione 7 (mercoledì 10/12/25, 8:30-10:30, e venerdì
12/12/25, 10:30-12:30): Problema 9 (funzioni di ordine superiore, ossia procedure con argomenti e/o valori procedurali: cifrario di Cesare e composizione di funzioni)
[Parziale numero ore: 28]
- Lezione 8 (mercoledì 17/12/25, 8:30-10:30, e venerdì 19/12/25 9/1/26 (note the different date),
10:30-12:30): Esercitazione su temi d'esame
[Parziale numero ore: 32]
II semestre
[top]
- Lezione 9 (mercoledì 25/3/26, 12:30-14:30):
Esercitazione sulla codifica in Java
[Parziale numero ore: --]
- Lezione 10 (mercoledì 1/4/26, 12:30-14:30): Problema 10 (implementazione e testing della classe
StringSList)
[Parziale numero ore: 34]
- Lezione 11 (mercoledì 8/4/26, 12:30-14:30): Problema 11
(rompicapo delle N regine)
[Parziale numero ore: 36]
- Lezione 12 (mercoledì 15/4/26, 12:30-14:30): Problema 12
(rompicapo delle N regine con l'utilizzo di liste di liste e
interfaccia grafica)
[Parziale numero ore: 38]
- Lezione 13 (mercoledì 22/4/26, 12:30-14:30): Progetto "Longest Increasing Subsequence" – I parte
[Parziale numero ore: 40]
- Lezione 14 (mercoledì 29/4/26, 12:30-14:30): Progetto "Longest Increasing Subsequence" – II parte
[Parziale numero ore: 42]
- Lezione 15 (mercoledì 6/5/26, 12:30-14:30): Problema 13 (rompicapo del 15 generalizzato)
[Parziale numero ore: 44]
- Lezione 16 (mercoledì 13/5/26, 12:30-14:30): Progetto
"Codifica di Huffman"
[Parziale numero ore: 46]
- Lezione 17 (mercoledì 20/5/26, 12:30-14:30): Problema 14 (distributore automatico di bevande)
[Parziale numero ore: 48]
- Lezione 18 (mercoledì 27/5/26, 12:30-14:30): Esercitazione su
temi d'esame
[Parziale numero ore: 50]
- Lezione 19 (mercoledì 3/6/26, 12:30-14:30): Esercitazione su
temi d'esame
[Parziale numero ore: 52]
|