Il corso è di 30 ore e prevede 3 crediti formativi. E' previsto un esame finale in forma di progetto da svolgere singolarmente o in gruppi di al massimo 2 persone.
Notizie
Le due lezioni perse verranno recuperate i giorni 7 e 9 maggio, sempre dalle ore 18.00 in Aula 2 del Toscanelli.Slides del corso
- Introduzione e prospettiva storica (slides, printable)
- Algebra booleana (slides, printable)
- Le basi del libguaggio C: variabili e dichiarazioni (slides, printable, exercises)
- Array, strutture, funzioni (slides, printable, exercises)
- Puntatori (slides, printable, exercises)
- Memoria dinamica (slides, printable, exercises)
- Array e liste (slides, printable, exercises)
- Alberi e heap (slides, printable, exercises)
- State machines (slides, printable)
- ...
Progetti
Due possibili progetti per l'esame: Sudoku e Forza Quattro. Le descrizioni e il codice sono scaricabili qui.Descrizione Sudoku
- Modificare la funzione main() in modo che sia possibile
eseguire il programma con le seguenti opzioni
- batch
$ ./sudoku filename
esegue e tenta di risolvere tutti i sudoku, contando quanti sono effettivamente quelli risolti sul totale.
- interactive:
$ ./sudoku filename -i record_number
esegue il programma il maniera interattiva, caricando il sudoku alla posizione 6 nel file di input, e fermandosi dopo ogni regola (come adesso)
- batch
- Aggiungere una o più regole per risolvere tutti i sudoku del file
- Aggiungere la modalità "creazione"
$ ./sudoku -c seed num_elem
crea un sudoku risolvibile utilizzando il seme random specificato in seed e contenente num_elem caselle non vuote. Verificare che il sudoku generato sia risolvibile.
Opzionale: creare un sudoku simmetrico (ad esempio per riflessione o per rotazione).
Il sudoku generato viene stampato sullo standard output.
Progetto Forza Quattro
Sviluppare un programma in grado di giocare a "Forza Quattro", computer contro umano. Il programma deve partire chiedendo chi vuole cominciare per primo.
Al proprio turno, permette all'umano di inserire la mosse con un numero 0-7 che indica la colonna in cui mettere il simbolo. Controlla la validità della mossa, e nel caso sia valida, stampa la tabella con la mossa effettuata. Dopodiché controlla la vittoria di uno dei due giocatori. Se la partita non è terminata, effettua la propria mossa.
Al termine della partita, chiede se il giocatore umano vuole effettuarne un'altra.
(Il gioco è stato risolto: ovvero, c'è una sequenza deterministica di mosse in base alla quale il primo giocatore vince sempre)
Si può sviluppare in gruppo. Un gruppo può essere composto di al massimo 2 persone.
Se due gruppi scelgono di sviluppare questo programma, si potrebbero far scontrare le due intelligenze artificiali, per vedere chi vince più partite, al meglio di 10. In questo caso, sarebbe interessante poter automatizzare il gioco (ad esempio tramite socket).
Calendario delle lezioni
Il calendario è disponibile pubblicamente su Google Calendar: