Corso di Programmazione I - III canale (P-Z)
Anno Accademico 2005/2006
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
-
Lezioni: martedì e giovedì 16.00 - 18.00;
Aula V, Dip. Matematica (città universitaria).
-
Esercitazioni: venerdì 13.30 - 15.00;
Aula V, Dip. Matematica (città universitaria).
-
Laboratorio: lunedì e mercoledì 8.30 - 13.30;
laboratorio "Colossus" (ex Athlon), Via Salaria 113. Il lunedì
dalle 12.00 alle 13.00 ed il meroledì dalle 10.00 alle 11.00
è garantita la presenza del tutor.
-
Ricevimento studenti
- Cenciarelli: giovedì, ore 11.00 - 13.00, Via Salaria 317,
III piano, stanza 310.
- Salvo: mercoledì pomeriggio, Via Salaria 317,
III piano, stanza 310.
- Mastrogiovanni: martedì, ore 9.00 - 10.00, Via
Salaria 317, III piano, stanza dottorandi.
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).
- lunedì 10.00 - 13.00
- mercoledì 14.00 - 16.00
- giovedì 10.00 - 13.00
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 . 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
-
Selected Writings
on Computing: a Personal Perspective, E.W. Dijkstra, Springer-Verlag 1982.
-
Goedel,
Escher, Bach: un'Eterna Ghirlanda Brillante, Douglas R. Hofstadter, 1979.
- The Emperor's
New Mind: Concerning Computers, Minds, and the Laws of Physics,
Roger Penrose, 1989.
-
To Iterate is Human, to Recurse, Divine, James O. Coplien, 1998.
Prove scritte passate, esoneri, progetti
- Prova di esonero del 7 novembre 2005
(risultati,
errori,
punteggio).
- Prova di esonero del 21 novembre 2005
(risultati,
errori,
punteggio).
- Prova di esonero del 7 dicembre 2005
(risultati,
errori,
punteggio,
copiature sospette).
- Prova di esonero del 21 dicembre 2005
(risultati,
errori,
punteggio).
- Prova scritta del 12 gennaio 2006
(risultati,
errori,
punteggio).
- Prova scritta del 23 febbraio 2006
(risultati,
errori,
punteggio).
Esercitazioni e laboratorio
- Gruppi di laboratorio
- Pagina delle esercitazioni (a cura del Dott. Ivano Salvo)
-
Esercizi
-
26 ottobre 2005 - esercitazione di laboratorio
(risultati,
errori,
punteggio).
- Foglio 1
- consegna: giovedì 3 novembre (risultati,
errori,
punteggio)
- Foglio 2
- consegna: giovedì 10 novembre (risultati,
errori,
punteggio)
- Foglio 3
- consegna: giovedì 17 novembre (risultati,
errori,
punteggio)
- Foglio 4
- consegna: giovedì 24 novembre (risultati,
errori,
punteggio)
- Foglio 5
- consegna: giovedì 1 dicembre (risultati,
errori,
punteggio)
-
Soluzioni esonero 7 novembre 2005
(uno,
tre).
-
Soluzioni esonero 21 dicembre 2005
(due... che usa la
congettura di Goldbach).
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
-
Ricordate di
prenotarvi su twiki per le prove scritte.