Presentazione

Organizzazione della Didattica

DM270
INFORMATICA ORD. 2011

Programmazione

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/201814/06/2019

Tipologia

TipologiaAmbitoSSDCFU
baseFormazione informatica di baseINF/0110


Responsabile Insegnamento

ResponsabileSSDStruttura
Prof. FILE' GILBERTOINF/01Dipartimento di Matematica

Altri Docenti

DocenteCoperturaSSDStruttura
Dott. TOLOMEI GABRIELEIstituzionaleINF/01Dipartimento di Matematica

Attività di Supporto alla Didattica

Esercitatore
DA ASSEGNARE
DA ASSEGNARE

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 definiti dall'utente, memoria dinamica, programmi su più file, ed 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 gli studenti sono invitati a risolvere. Gli esercizi sono resi disponibili attraverso unsito 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 fatti. La consegna di soluzioni corrette (rispetto ai test) per alcuni degli esercizi assegnati, è obbligatoria per accedere agli esami. Gli esami si svolgono nel laboratorio informatico e seguono le stesse modalità degli esercizi settimanali. 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 alcune domande teoriche ed un esercizio di programmazione. La parte di programmazione richiede di sviluppare un programma iterativo ed uno ricorsivo. Si richiede anche di specificare la correttezza delle funzioni prodotte. L'esame si svolge in laboratorio informatico e gli studenti ricevono l'assegnamento e lavorano direttamente sul PC. L'ammissione agli esami è condizionata dalla consegna di alcuni esercizi assegnati durante il corso.

L'esame è fatto per mettere in rilievo la capacità di ragionare e di esprimere in forma chiara il proprio ragionamento, da parte dello studente. In particolare, si valuta la capacità di specificare il problema da risolvere e 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 corso: le regole del corso, le slide delle lezioni, gli esercizi settimanali che gli studenti possono risolvere e testare interattivamente, e finalmente l'accesso alle registrazioni di tutte le lezioni del corso.