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 Dicembre, 2010      
[ Sicurezza delle Reti | Programmazione di Reti | Appelli ]



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 indicati nella pagina relativa agli appelli d'esame. 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.

Materiale didattico:
  • Tutto il materiale usato a lezione e in laboratorio è a disposizione in questa pagina. È necessario richiedere al docente (via e-mail) le credenziali di accesso.

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 nel materiale relativo alla lezione 13, compreso il generatore di test per verificare la validità di base del proprio progetto;
    • 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): vedi.
  • Nota bene: è obbligatorio iscriversi all'esame utilizzando AlmaEsami.
  • 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:
  • 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.






Altre edizioni del corso
Le pagine delle altre edizioni del corso (se disponibili) si trovano in questa pagina.
Orario di ricevimento
Su appuntamento, da concordare via e-mail.
Appelli
Lista completa dei prossimi appelli d'esame.
Screencast
Servizio di screencast delle lezioni.


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