Gabriele D'Angelo, PhD, ricercatore. Universita` di Bologna.   [For every complex problem, there is an answer that is short, simple and wrong] H. L. Mencken
english version        home       
 
contatti | università | pubblicazioni | attività | didattica | tesi
Ultimo aggiornamento:  2 Marzo, 2008      
[ 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].
  • 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
    • LEZIONI ANNULLATA.

  • 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.






Orario di ricevimento
Su appuntamento, da concordare via e-mail.

Appelli
Lista completa dei prossimi appelli d'esame.

Qualità della didattica
Opinioni degli studenti sulla qualità della didattica.



empty spacer
1975 - 2012 Gd'A
Contattami! | Avviso