Gabriele D'Angelo, PhD, ricercatore. Universita` di Bologna.   [Read in order to live] G. Flaubert
english version        home       
 
contatti | università | pubblicazioni | didattica | tesi
Ultimo aggiornamento:  19 Marzo, 2010      
[ Cibernetica | Algoritmi | Simulazione | Laboratorio di Programmazione | Sicurezza ]



Il corso di Laboratorio di Programmazione non è più attivo, questo significa che non ci sono più lezioni da seguire. Per quanto riguarda gli appelli d'esame questi continuano e continuerranno ad essere regolarmente fissati. Le date dei prossimi appelli sono indicate sul sito ufficiale del Corso di Laurea e nel seguito di questa pagina. Per quanto riguarda il progetto, parte obbligatoria dell'esame, rimangono valide le specifiche "RLE" descritte nell'apposita sezione di questa pagina.

Per l'anno accademico 2007/2008 sono stato titolare del corso di Laboratorio di Programmazione, per i dettagli specifici relativi all'edizione 2006/2007 fare riferimento alla vecchia 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 nella pagina ufficiale del corso, in particolare lezione 13;
    • risposte alle domande frequenti (FAQ), pubblicate in fondo a questa pagina.
Modalità d'esame:
  • 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:
  • Prossimi appelli (discussione del progetto + orale):
    • 23/06/2010, ore 9:30, aula D. Consegna obbligatoria del progetto entro mezzogiorno del 16/06/2010;
    • 21/07/2010, ore 9:30, aula D. Consegna obbligatoria del progetto entro mezzogiorno del 14/07/2010.

  • Nota bene: come indicato nelle specifiche, la consegna deve avvenire via e-mail, utilizzando la casella di posta ufficiale (@studio.unibo.it).
  • 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. Si consiglia caldamente di verificare il funzionamento del proprio elaborato utilizzando la suite test base messa a disposizione nella pagina contenente il materiale didattico del corso. Nota bene: il progetto "Huffman" non è più valido. A partire dai primi appelli dell'anno accademico 2007/2008 (giugno/luglio) è richiesta la consegna del progetto secondo le nuove specifiche che sono state illustrate durante la nuova edizione (2007/2008) del corso, in particolare lezione 13.


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 vengono integrati con altre risorse (slide, link, ecc)


Strumenti di base:

Lezioni svolte o da svolgere:
  • Lunedì 03/03/08 (Aula A).
  • Mercoledì 05/03/08 (Laboratorio 3).
    • Ambienti di sviluppo: dall'editor al compilatore.
    • Tipi elementari;
    • Materiale: slide+sorgenti.

  • Lunedì 10/03/08 (Laboratorio 3).
    • Installazione di cygwin in ambiente Microsoft Windows Vista.
    • Recupero argomenti lezione precedente.
    • Prove pratiche di utilizzo degli strumenti.
    • Materiale: documentazione aggiuntiva.

  • Mercoledì 12/03/08 (Aula A).
    • Compilazione di programmi C.
    • Esempi di programmi C.
    • Materiale: slide+sorgenti

  • Lunedì 17/03/08 (Aula A).
  • Mercoledì 19/03/08 (Laboratorio 3).
    • Uso dei puntatori, approfondimenti 2.
    • Argomenti del main.
    • Materiale: slide+sorgenti.

  • Mercoledì 26/03/2008: LEZIONE ANNULLATA

  • Lunedì 31/03/2008 (Aula A).
    • Organizzazione dei file e pulizia del codice.
    • Strumenti per la compilazione automatica (GNU make).
    • Materiale: slide+sorgenti+esempi.

  • Mercoledì 02/04/08 (Aula A).
  • Lunedì 07/04/08 (Laboratorio 3).
  • Mercoledì 09/04/2008: LEZIONE ANNULLATA.

  • Lunedì 14/04/08: LEZIONE ANNULLATA (causa elezioni)

  • Mercoledì 16/04/08 (Laboratorio 3).
  • Lunedì 21/04/08 (Aula A).
    • Strumenti per lo sviluppo cooperativo (cvs, subversion).
    • Esempi di utilizzo di Subversion.
    • Materiale: slide+sorgenti.

  • Mercoledì 23/04/08 (Aula A).
    • Tecniche e strumenti per il profiling di applicazioni.
    • Materiale: slide+sorgenti.

  • Lunedì 28/04/08 (Aula A).
  • Mercoledì 30/04/08 (Laboratorio 3).
    • Domande sul progetto finale.
    • Esempi di utilizzo di Make.
    • Utilizzo di Subversion.
    • Utilizzo degli strumenti per il profiling.
    • Materiale: slide+sorgenti.

  • Lunedì 05/05/08 (Aula A).
    • Ulteriori chiarimenti sulle specifiche del progetto finale.
    • Programmazione con thread.
    • Uso e creazione di librerie.
    • Materiale: slide+sorgenti.

  • Mercoledì 07/05/08 (Laboratorio 3).
    • Documentazione di progetti: doxygen.
    • Formattazione dei sorgenti: strumento indent, C++ code export
    • Esempi di uso e creazione di librerie.
    • Debug: utilizzo del debugger visuale ddd.
    • Software:
    • Materiale: slide+sorgenti.

  • Lunedì 12/05/08 (Aula A).
    • Elementi di programmazione sicura.
    • Utilizzo di librerie: dmalloc.
    • Strumenti: rats, flawfinder, splint.
    • Materiale: slide+sorgenti.

  • Mercoledì 14/05/08 (Aula A).
    • Lezione di preparazione alla prova orale: esempi di domande e risposte in aula.
    • Materiale: slide+sorgenti.

  • Lunedì 19/05/08 (Laboratorio 3).
    • Ricevimento collettivo, risoluzione dubbi sul progetto.


Domande frequenti:
  • GENERALI:
    • È possibile discutere il progetto in una sessione e sostenere l'orale in una delle successive?
      Sì è possibile, ma il progetto deve essere discusso nella sessione di consegna da tutti i membri del gruppo.

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

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

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

    • Nel progetto RLE, il file compresso deve essere leggibile (formato solo da caratteri stampabili a video)?
      No, non è richiesto che sia leggibile.

    • Posso aggiungere ulteriori parametri da linea di comando al file labprog.exe, oltre al nome del programma da comprimere / de-comprimere?
      Assolutamente no, le specifiche indicano chiaramente che l'unico parametro è il nome del file.

    • Durante l'esecuzione posso richiedere all'utente delle ulteriori indicazioni attraverso menu o domande?
      No, è vietato dalle specifiche.

    • Il file di testo contenente le 100 parole con frequenza maggiore deve essere generato tutte le volte che si effettua una compressione?
      Sì, tutte le volte.

    • Nella stampa delle 100 parole più frequenti, cosa devo fare se la 100 esima parola non è unica ma ne esistono altre con la stessa frequenza?
      In questo caso devono essere stampate tutte le parole che hanno frequenza uguale a quella della 100esima parola.

    • Per il calcolo delle 100 parole più frequenti, posso considerare una lunghezza massima delle singole parole?
      Sì, è permesso considerare solo le parole con lunghezza minore o uguale a 256 caratteri, ma questa limitazione può essere utilizzata solo ed esclusivamente per il calcolo delle 100 parole più frequenti e NON in altre parti dell'elaborato.

    • Posso inserire una limitazione sulla lunghezza dei file da dare in input al programma? Ad esempio, 256 MB.
      No, è esplicitamente vietato dalle specifiche.

    • Se il file da comprimere ha dimensione 0, è comunque necessario creare un file compresso?
      Sì, è necessario.

    • Se nel file da comprimere NON ci sono parole con lunghezza inferiore a 256 caratteri, è comunque necessario creare il file contenente le parole più frequenti?
      Sì, è necessario crearlo ma sarà vuoto.

    • Posso usare dei comandi esterni, del sistema operativo, per implementare alcune delle funzionalità richieste al progetto?
      No, non è permesso. Le funzionalità richieste devono essere tutte implementate per mezzo del codice del progetto.






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



1975 - 2010 Gd'A
Contattami! | Avviso