Presentazione

Organizzazione della Didattica

DM270
INFORMATICA ORD. 2011


10

Corsi comuni

 

Frontali Esercizi Laboratorio Studio Individuale
ORE: 56 0 24 170

Periodo

AnnoPeriodo
I annoannuale

Frequenza

Facoltativa

Erogazione

Convenzionale

Lingua

Italiano

Calendario Attività Didattiche

InizioFine
01/10/201609/06/2017

Tipologia

TipologiaAmbitoSSDCFU
baseFormazione informatica di baseINF/0110


Responsabile Insegnamento

ResponsabileSSDStruttura
Prof. FILE\' GILBERTOINF/01Dipartimento di Matematica

Altri Docenti

Non previsti.

Attività di Supporto alla Didattica

Non previste.

Bollettino

Qualche conoscenza di architettura degli elaboratori.

Specificare un problema attraverso la formulazione di una pre- ed una post-condizione cui il programma che vogliamo costruire per risolvere il problema deve obbedire. La capacità di costruire un programma in C++ e dimostrare che fa quanto specificato nella sua pre- e post-condizione. Capacità di trovare anche soluzioni ricorsive ai problemi e di dimostrare la loro correttezza grazie ad una prova induttiva. Conoscenza delle nozioni di base della programmazione imperativa: comandi semplici, puntatori, array, funzioni, passaggio dei parametri per valore e riferimento, tipi ad-hoc, eccezioni.

Si segue l'approccio secondo cui per imparare a programmare in modo consapevole, è necessario fare molti esercizi ricevendo feedback sulle soluzioni proposte. Quindi ogni settimana vengono assegnati esercizi che vanno risolti. Gli esercizi sono resi disponibili attraverso un servizio web basato su moodle sul quale gli studenti consegnano e testano le loro soluzioni rispetto ad alcuni input predisposti. In ogni momento ogni studente ha modo di verificare il suo progresso rispetto agli esercizi assegnati. La consegna di soluzioni corrette (rispetto ai test) per tutti gli esercizi è obbligatoria per accedere agli esami. Gli esami si svolgono nel laboratorio informatico ed usano lo stesso servizio web usato per gli esercizi. Il corso consiste di 80 ore totali di cui 24 in laboratorio informatico. Il corso verrà diviso in due parti: la prima parte di 2 crediti nel primo semestre, mentre il resto di 8 crediti si svolgerà nel secondo semestre. La prima parte ha lo scopo di rendere tutti gli studenti capaci di usare un PC per scrivere ed eseguire programmi e anche di presentare le prime nozioni di correttezza dei programmi.

I contenuti del corso si pongono su due piani diversi: 1) Da una parte vengono insegnati alcuni concetti della correttezza dei programmi alla Hoare, cioè basati sulle nozioni di pre-, post-condizione ed invarianti dei cicli. Ogni programma è accompagnato da una pre- e post-condizione e la sua correttezza rispetto ad esse va dimostrata in modo convincente. 2) Contemporaneamente alla parte (1), vengono insegnate le nozioni di base della programmazione imperativa con C++. In particolare, tipi predefiniti, istruzioni semplici, puntatori, array, aritmetica dei puntatori, funzioni, funzioni ricorsive, memoria dinamica, liste concatenate ed alberi binari.

L'esame consiste di una prova scritta con domande teoriche ed una parte di programmazione. La parte di programmazione richiede di sviluppare un programma iterativo ed uno ricorsivo. Si richiede anche qualche passaggio relativo alla correttezza dei programmi prodotti. L'esame si svolge in laboratorio informatico e gli studenti ricevono l'assegnamento e lavorano direttamente sul PC. Un esame orale può venire richiesto in casi particolari.

L'esame è fatto per mettere in rilievo la capacità di ragionare dello studente e di esprimere in forma chiara il proprio ragionamento. In particolare si valuta la capacità di specificare il problema da risolvere e di realizzare un programma semplice per risolvere il problema specificato. Viene valutata anche la capacità di spiegare i motivi per cui la soluzione proposta effettivamente risolve il problema considerato. Sono apprezzate semplicità e chiarezza.

Gilberto Filè, Programmazione consapevole. Padova: Progetto, 2014

Il corso usa un sito moodle che raccoglie tutto il materiale del il corso: le slide delle lezioni, i test degli esami passati con e senza soluzioni e gli esercizi settimanali con il risultato ottenuto. Da questo sito sarà anche possibile accedere alle registrazioni di tutte le lezioni del corso.