|
[
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).
- Introduzione al corso.
- Ripasso generale di C.
- Materiale: slide+sorgenti.
- 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).
- Test di programmi e debug (terza parte).
- Materiale: slide+sorgenti.
- Software:
- 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.
|
|
|
|
|