Corso di Programmazione I - III canale (P-Z)

Anno Accademico 2005/2006
Docenti: Dott. Pietro Cenciarelli (lezioni)
Dott. Ivano Salvo (esercitazioni)
Tutor: Dott. Michele Mastrogiovanni (laboratorio)

Ultima modifica: 12 gennaio 2006


Introduzione

Obiettivo del corso è fornire le basi della programmazione. Queste comprendono non soltanto la conoscenza di un linguaggio di programmazione (nella fattispecie il linguaggio C), ma anche la capacità di analizzare un problema, pensare un algoritmo per risolverlo ed implementare l'algoritmo attraverso un programma che sia corretto, efficiente e mantenibile. Viene pertanto introdotto un modello preciso della computazione, ancorché intuitivo, che comprenda alcuni aspetti fondamentali nell'implementazione dei linguaggi imperativi. Viene inoltre studiato il metodo delle invarianti per lo sviluppo di programmi corretti. Per quanto riguarda efficienza e mantenibilità viene posta particolare enfasi sulla nozione di programmazione struturata.

Orario

Attenzione! Gli account personali per il laboratorio vengono attivati presso lo studio della S.ra G. Cavallo (Via Salaria 113, III piano, stanza 317) che riceve nel seguente orario (cui siete pregati di attenervi). Per ricevere un account è necessario portare un documento ed il certificato di iscrizione (o l'ultimo bollettino pagato).

Programma

Organizzazione del corso

Il corso consiste in un programma di lezioni, uno di esercitazioni ed uno di laboratorio. Le lezioni sono tenute dal Dott. Cenciarelli, docente del corso, mentre esercitazioni e laboratorio sono a cura rispettivamente del Dott. Salvo e del Dott. Mastrogiovanni. Le esercitazioni, che si svolgono in aula, completano ed approfondiscono gli argomenti trattati a lezione. Il laboratorio è parzialmente assistito dal tutor. Gli studenti, divisi in gruppi, vi svolgono un programma di esercizi. Questi vengono assegnati settimanalmente e vanno riconsegnati dopo sette giorni per la correzione, che avviene mediante test automatici. I risultati della correzione sono pubblicati periodicamente nella pagina del corso. Lo svolgimento degli esercizi è facoltativo, ma l'assiduità nell'attività di laboratorio costituisce un elemento di giudizio per il voto finale.

Modalità d'esame

Per superare l'esame lo studente deve sostenere una prova scritta, una prova orale, consegnare un progetto e tenere un seminario di fronte alla classe. Vi sono delle scorciatoie: gli esoneri ed il torneo. Ecco i dettagli.

Progetto. Eccone le specifiche. Il progetto viene svolto in gruppi di due, tre o quattro persone e deve essere consegnato (elettronicamente) entro l'ultimo giorno di lezione. È incoraggiata la comunicazione tra gruppi.

Seminario. Ciascun gruppo sceglie dalla letteratura (aiutato eventualmente dal docente) un articolo sul tema della programmazione e ne espone il contenuto di fronte alla classe. Viene valuta la scelta dell'articolo, la qualità dell'esposizione e la competenza nel rispondere ad eventuali domande della classe.

Prova scritta. Dura 30 minuti e si svolge in laboratorio (è perciò tassativamente richiesta la prenotazione all'esame da parte dello studente). La prova consiste nella soluzione di tre problemi di programmazione. Per superarla lo studente deve consegnare programmi funzionanti per almeno due di essi. È necessario superare questa prova per essere ammessi all'orale. Ci si può presentare ad al più due dei tre appelli previsti per la sessione gennaio/febbraio (vi sono poi altri due appelli, uno nella sessione estiva ed uno in quella autunnale). Una prova scritta vale solo per un appello: chi non si presenta, o non dovesse superare, la relativa prova orale deve ripetere lo scritto.

Prova orale. Oltre agli argomenti trattati nel corso, vengono discussi il risultato della prova scritta ed il progetto.

Prove di esonero. Durante il corso si tengono tre "prove di esonero", che si svolgono secondo le stesse modalità di uno scritto. Il superamento di tutte e tre le prove esonera da scritto ed orale, ma non dal consegnare un progetto funzionante, né dal tenere il seminario. Chi ha fatto gli esoneri può comunque decidere di sostenere l'orale per migliorare il voto.

Torneo. I gruppi di progetto possono iscrivere i loro programmi (ovvero il loro progetto) al torneo dei labirinti, che si svolge alla fine del corso, con tabellone ad eliminazione diretta. Ai membri del gruppo vincitore viene verbalizzato seduta stante il voto di 30/30. Per avere la lode devono scontrarsi col programma Minotauro, quello del professore.

Attenzione! La consegna di esercizi, esoneri e prove scritte avviene elettronicamente attraverso la pagina delle consegne di twiki, alla quale si può accedere anche da casa. È pertanto necessario registrarsi sul sistema, fornendo nome e password (seguite le istruzioni). Su twiki trovate anche i fogli per la prenotazione alle prove scritte (menù a sinistra).

Materiale e testi di consultazione

Altri testi

Letture consigliate

Prove scritte passate, esoneri, progetti

Esercitazioni e laboratorio

Seminari degli studenti

Potete scegliere, ad esempio, dai selected writings on computing (in inglese, disponibile in biblioteca) di E.W. Dijkstra, l'inventore della programmazione strutturata. Di Dijkstra leggetevi anche le citazioni, tipo ''Computer Science is no more about computers than astronomy is about telescopes.''

Torneo dei labirinti

I concorrenti si sfidano presentando all'avversario un labirinto. Vince chi ne esce più velocemente. Si vince un 30. Per la lode bisogna sfidare il professore (e vincere).

Avvisi