Home page of Giuseppe Lipari

Contacts

RETIS Lab
TeCIP
Scuola Superiore Sant'Anna
Via Moruzzi, 1
56127 Pisa, ITALY
tel: +39 050 882030
fax: +39 050 883003
email: g.lipari at sssup dot it

News

14 Febbraio 2013 OOSD course

All news

Fundamentals of Programming Corso interno della Scuola Superiore Sant'Anna AA 2011-2012

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

Progetti

Due possibili progetti per l'esame: Sudoku e Forza Quattro. Le descrizioni e il codice sono scaricabili qui.

Descrizione Sudoku

  1. 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)

  2. Aggiungere una o più regole per risolvere tutti i sudoku del file
  3. 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:

Appelli d'esame

In preparazione.