|
[
Reti di Calcolatori |
Sicurezza |
Simulazione |
Cibernetica |
Laboratorio di Programmazione |
Appelli
]
Per l'anno accademico 2006/2007 sono stato titolare del corso di
Laboratorio di Programmazione. Tutor didattico: Dr.
Marco Vassura.
Per l'edizione 2007/2008 fare riferimento alla
nuova pagina del corso.
Materiale didattico:
- Tutto il materiale usato a lezione è stato messo a disposizione nella
pagina ufficiale del corso (richiede autenticazione).
Comunicazioni varie:
- RICEVIMENTO.
-
Il ricevimento deve essere utilizzato per chiarire dubbi / curiosità / argomenti poco chiari visti a lezione. NON è possibile richiedere la correzione del proprio progetto prima della consegna così come il debug di propri programmi.
- PROGETTO FINALE. Nella preparazione del progetto finale è necessario fare riferimento a:
- specifiche, pubblicate sulla pagina ufficiale del corso;
- suggerimenti, pubblicati sulla pagina ufficiale del corso;
- risposte alle domande frequenti, pubblicate in fondo a questa pagina.
Modalità d'esame:
- Prove parziali (FACOLTATIVE):
-
- prima prova: individuale, da svolgersi in laboratorio:
- seconda prova: di gruppo, consegna via e-mail una settimana dopo l'assegnazione;
- terza prova: di gruppo, consegna via e-mail una settimana dopo l'assegnazione.
- Progetto finale (OBBLIGATORIO) in gruppo (max 2 componenti);
- Discussione del progetto finale (OBBLIGATORIA);
- Orale su tutto il programma del corso (OBBLIGATORIO).
Date d'esame / Appelli:
- Prove parziali, favoltative:
- prima prova: 28/03/2007, consegna immediata.
- seconda prova: assegnata il 18/04/2007, consegna via e-mail entro il 25/04/2007;
- terza prova: assegnata il 27/04/2007, consegna via e-mail entro il 05/05/2007.
- Prossimi appelli (discussione del progetto + orale):
- Vedi edizione 2007/2008 del corso.
-
Nota bene: il progetto deve essere consegnato nella sua forma definitiva almeno una settimana prima dell'appello in cui si intende sostenere l'esame.
-
Nota bene: un progetto NON funzionante o funzionante in maniera limitata implica l'immediata esclusione dall'appello.
-
Nota bene: il progetto "Huffman" NON è più valido. A partire dal primo appello dell'anno accademico 2007/2008 (giugno) sarà richiesta la consegna del progetto secondo le nuove specifiche che saranno illustrate durante l'edizione 2007/2008 del corso.
Testi:
- Testo di riferimento: C Didattica e programmazione - quarta edizione. A. Kelley, I. Pohl. Pearson Education Italia. 88-7192-219-0
- Testi di supporto:
- Programmazione nella pratica. B.W. Kernighan, R. Pike. Addison-Wesley. 88-7192-072-4
- Linguaggio C. B.W. Kernighan, D.M. Ritchie. Jackson. 88-7056-4436
- Nota: parte degli argomenti trattati nel corso non sono presente nei testi, quindi verranno integrati con altre risorse (slide, link, ecc)
Strumenti di base:
Lezioni svolte:
- Mercoledì 28 Febbraio 2007 (Aula magna) [D'Angelo].
- Introduzione al corso;
- Ripasso generale di C.
- Materiale: slide+sorgenti.
- Venerdì 2 Marzo 2007 (Laboratorio 3) [Vassura].
- Ambienti di sviluppo: dall'editor al compilatore;
- Tipi elementari;
- Materiale: slide+sorgenti.
- Mercoledì 7 Marzo 2007 (Aula magna) [D'Angelo].
- Venerdì 9 Marzo 2007 (Laboratorio 3) [Vassura].
- Uso dei puntatori: approfondimenti.
- Materiale: sorgenti.
- Mercoledì 14 Marzo 2007 (Aula magna) [D'Angelo].
- Organizzazione dei file e pulizia del codice;
- Strumenti per la compilazione automatica (GNU make).
- Materiale: slide+sorgenti.
- Venerdì 16 Marzo 2007 (Laboratorio 3) [Vassura].
- Argomenti del main;
- Gestione stdin stdout stderr e redirezione;
- Gestione file: input / ouput.
- Materiale: slide+sorgenti.
- Mercoledì 21 Marzo 2007 (Aula Magna) [D'Angelo].
- Venerdì 23 Marzo 2007 (Laboratorio 3) [D'Angelo].
- Mercoledì 28 Marzo 2007 (Laboratorio 3) [D'Angelo, Vassura]
- Primo parziale (facoltativo).
- Venerdì 30 Marzo 2007 (Laboratorio 3) [D'Angelo]
- Correzione della prima prova parziale.
- Utilizzo del debugger visuale DDD.
- Strumenti per lo sviluppo cooperativo (cvs, subversion).
- Materiale: slide+sorgenti.
- Mercoledì 4 Aprile 2007
- LEZIONE ANNULLATA, sostituita da ricevimento.
- Mercoledì 11 Aprile 2007 (Aula Magna) [D'Angelo]
- Introduzione alle strutture dati avanzate (grafi, tabelle hash);
- Uso e creazione di librerie;
- Materiale: slide+sorgenti.
- Venerdì 13 Aprile 2007 (Laboratorio 3) [D'Angelo]
- Strutture dati avanzate nella pratica: tabelle hash.
- Esempi di utilizzo di Make.
- Esempi di uso e creazione di librerie.
- Esempi di utilizzo di Subversion.
- Materiale: slide+sorgenti.
- Mercoledì 18 Aprile 2007 (Aula Magna) [Vassura]
- Venerdì 20 Aprile 2007 (Aula Magna) [Vassura]
- Euristiche: 2-opt, greedy (commesso viaggiatore).
- Meta-euristiche: ILS (commesso viaggiatore)
- Materiale: slide;
- Risorse aggiuntive: TSP: improving solutions.
- Venerdì 27 Aprile 2007 (Aula Magna) [Vassura]
- Continuazione della lezione precente.
- Specifiche della terza prova parziale (facoltativa)
- Materiale: codice e specifiche del terzo parziale.
- Fare riferimento anche alle "Domande frequenti" in fondo a questa pagina.
- Mercoledì 2 Maggio 2007 (Aula Magna) [D'Angelo, Vassura]
- Venerdì 4 Maggio 2007 (Laboratorio 3) [D'Angelo]
- Tecniche e strumenti per il profiling di applicazioni
- Materiale: slide+sorgenti.
- Mercoledì 9 Maggio 2007
- Venerdì 11 Maggio 2007
- LEZIONE ANNULLATA, causa congresso Didamatica.
- Mercoledì 16 Maggio 2007 (Laboratorio 3) [D'Angelo]
- Chiarimenti sulle specifiche del progetto finale.
- Programmazione con thread.
- Documentazione di progetti: doxygen.
- Materiale: slide+sorgenti.
- Venerdì 18 Maggio 2007 (Laboratorio 3) [D'Angelo]
- Elementi di programmazione sicura.
- Utilizzo di librerie: dmalloc.
- Utilizzo di librerie: zlib.
- Materiale: slide+sorgenti.
Domande frequenti:
- GENERALI:
-
Come concorrono le prove parziali nella determinazione del voto?
Ad ogni prova parziale viene assegnata una valutazione compresa tra 0 ed 1, che va ad aggiungersi alla
valutazione del progetto finale. La somma costituisce il voto di presentazione all'orale.
-
È possibile partecipare a solo alcune delle prove parziali?
Sì, le prove parziali sono totalmente facoltative. è possibile partecipare anche solo ad una di esse.
-
Il voto di presentazione all'orale è vincolante o può essere modificato?
Il voto di presentazione non è in alcun modo vincolante, a seguito della discussione del progetto e delle
domande di teoria può liberamente crescere o calare fino alla bocciatura.
-
Ho installato cygwin ma non c'è il compilatore.
Cygwin segue la struttura a pacchetti tipica di molte distribuzioni Linux, nell'installazione di default non è
presente il compilatore gcc. Per installarlo è necessario eseguire nuovamente il tool di setup, andare nella sezione
Development e selezionare il compilatore gcc e procedere con l'installazione, automaticamente verranno selezionate le relative dipendenze.
- PROGETTO FINALE:
-
Posso usare il compilatore XYZ per lo sviluppo del progetto?
I progetti verranno corretti usando lo strumento ufficiale usato durante il corso: il compilatore gcc in ambiente cygwin. Visto che una parte rilevante della correzione consiste nella verifica di funzionamento, i progetti non in grado di funzionare nell'ambiente cygwin verranno considerati come NON FUNZIONANTI.
-
Ho sviluppato il progetto usando l'ambiente di sviluppo XYZ anche se era richiesto l'uso di cygwin/gcc. Ora non riesco a farlo funzionare con gli strumenti richiesti nel corso, posso consegnare lo stesso?
No, non sono ammesse deroghe alle specifiche sugli strumenti da utilizzare.
-
Posso assumere una dimensione massima per i file da comprimere e decomprimere?
No, non è permessa alcuna limitazione salvo quanto previsto dal sistema operativo.
-
Posso usare un heap per l'implementazione di una coda con priorità al posto della lista?
No, un heap è una struttura dati albero, viene richiesto l'uso di una lista ordinata.
-
Posso usare un array per implementare la lista ordinata?
No, è richiesto l'utilizzo di una lista ordinata implementata con puntatori.
-
Come faccio a gestire la codifica binaria nella compressione / decrompressione?
Fare riferimento al testo "Suggerimenti per il progetto finale" scaricabile dalla pagina ufficiale
del corso.
-
Quali librerie possono essere utilizzate?
Solamente quelle "standard" del linguaggio C (ad esempio stdlib, stdio, math, time), NON è
consentito basare il proprio codice su altre librerie "esterne".
-
Durante il procedimento di compressione/decompressione il file di input può essere modificato
o cancellato?
NO! Il file di input deve rimanere immutato.
-
Posso usare doxygen e quindi evitare di scrivere la relazione finale?
Ovviamente NO, è possibile (e apprezzato) utilizzare doxygen come strumento per scrivere parte della relazione finale. La relazione è parte integrante e fondamentale del progetto e quindi deve essere necessariamente presente.
-
Il mio progetto non funziona, posso richiedere una correzione parziale ed eventualmente anche un po' di debug?
Assolutamente NO, il ricevimento deve essere utilizzato per chiarire dubbi / curiosità / argomenti poco chiari visti a lezione. NON è possibile richiedere la correzione del proprio progetto prima della consegna così come il debug di propri programmi.
|
|
|
|
|