====== Modulo: Laboratorio di Programmazione Sistema 2015/16 corsi A e B ====== Motto: //Talk is cheap. Show me the code// Linus Torvalds (2000-08-25). Message to linux-kernel mailing list. ===== Informazioni pratiche ===== * Vedi il [[informatica:sol:laboratorio:programma|il programma del corso]] per lo scopo, i prerequisiti consigliati e il programma di massima. * Docenti: * (Corso A) [[http://www.di.unipi.it/~torquati/|Massimo Torquati]], stanza 287/DE, dip. Informatica * (Corso B) [[http://www.di.unipi.it/~susanna/|Susanna Pelagatti]], stanza 346/DE, dip. Informatica * Assistenti: Damiano Di Francesco Maesa, Manuele Sabbadin * Orario del corso * Lezione: Martedi 11:00 -- 13:00 **(aula C -- corso B)** Venerdì 9:00 -- 11:00 **(aula A -- corso A) ** * Esercitazioni in Laboratorio: Mercoledi 16:00--18:00 **(aula H -- corso A)** e Mercoledi 14:00--16:00 **(aula H -- corso B)** * **Ricevimento elettronico**: (raccomandato per problemi sul codice) contattate il docente o gli assistenti per posta elettronica **inviando un tar completo della directory di lavoro ed indicazioni chiare su come riprodurre l'errore**. * Ricevimento tradizionale : * (Corso A) Martedi 10:00--13:00 (fino al 30 Giugno) o per email/appuntamento (dopo) * (Corso B) Martedi 9:00--11:00 (fino al 30 Giugno) o per email/appuntamento (dopo) * La frequenza del corso **non e' obbligatoria** ma parte della valutazione finale e' legata all'attivita' svolta durante il corso (vedi prossima sezione **Lezioni ed esercitazioni**). ===== Lezioni ed esercitazioni ===== Vedete la pagina delle * [[informatica:sol:laboratorio16:esercitazioniA:|lezioni ed esercitazioni (Corso A)]] * [[informatica:sol:laboratorio16:esercitazioniB:|lezioni ed esercitazioni (Corso B)]] per i materiali relativi a ogni lezione ed esercitazione. ===== Avvisi urgenti ===== Per tutti gli avvisi urgenti vedete nella pagina degli [[informatica:sol:laboratorio16:avvisi|avvisi]].\\ E' possibile richiedere di essere avvisati automaticamente via e-mail ogni volta che un nuovo avviso viene postato. Seguire le istruzioni indicate nella pagina stessa. ===== Materiale didattico ===== ==== Libro di testo ==== Marc J. Rochkind. **Advanced UNIX Programming 2nd Edition**, Addison-Wesley Professional Computing Series, 2004.\\ Vedi anche [[http://www.basepath.com/aup/|il sito web del libro con sorgenti, esercizi e altre informazioni]]. ==== Virtual Machine (VirtualBox) ==== E' disponibile un disco virtuale (formato .vmdk) contenente una installazione completa di [[http://xubuntu.org|XUbuntu]] con tutti gli strumenti di sviluppo richiesti per il corso, che può essere fatta partire utilizzando (ad esempio) il sistema di virtualizzazione [[http://www.virtualbox.org|VirtualBox]]. [[http://calvados.di.unipi.it/storage/teaching/LinuxVM/README.pdf| Qui]] è possibile scaricare alcune semplici note (in formato pdf) che descrivono come creare una macchina virtuale (VM) sotto VirtualBox partendo da un disco esistente. Il disco virtuale compresso (.zip) della VM è scaricabile seguendo il [[http://calvados.di.unipi.it/storage/teaching/LinuxVM/xubuntu.vmdk.zip| link]] (circa 3GB !). ==== Accesso alle macchine del polo Fibonacci ==== [[http://didawiki.di.unipi.it/doku.php/fisica/informatica/201516/primoanno/cdcfibonacci|Accesso usando la propria home]] Accesso macchina con account studente password studente FIXME ==== FAQ ==== Per avere risposte alle domande piu' frequenti, vedere la pagina relativa alle [[informatica:sol:laboratorio16:FAQ|FAQ]]. ==== Altro materiale ==== * (su Unix con introduzione alla programmazione di shell) G. Glass, K. Ables. **UNIX for Programmers and Users**, Prentice Hall, 1999.\\ In particolare per la introduzione ai comandi Unix si possono consultare i capitoli 2 e 3 e per la programmazione bash servono i capitoli 4 e 5. * (su C) Kelley, Pohl. **C: Didattica e Programmazione** (seconda edizione), Addison-Wesley, 2004. * Kernighan & Pike //Programmazione nella pratica// Addison-Wesley, 1999. ISBN 8871920724.\\ Un ottimo libro per migliorare lo stile di programmazione: insieme di consigli su come organizzare i programmi in modo ragionevole con esempi C e Java. * Richard W. Stevens. [[http://www.kohala.com/start/apue.html| Advanced Programming in the UNIX Environment]] Addison-Wesley, 1992, ISBN 0-201-56317-7.\\ Il libro piu' completo e chiaro sulla programmazione con SC in ambiente Unix. * [[http://www.lilik.it/~mirko/gapil/gapil.html|GaPiL]]: Guida alla Programmazione in Linux * Manuali in linea dei tool di sviluppo GNU: [[http://www.gnu.org/software/make/manual/make.html|make]] [[http://www.gnu.org/software/gcc/onlinedocs/|gcc]] [[http://www.gnu.org/software/emacs/manual/|emacs]] [[http://www.gnu.org/software/ddd/manual/|ddd]] [[http://www.sunsite.ualberta.ca/Documentation/Gnu/gdb-4.18/html_chapter/gdb_toc.html|GDB]] * {{:lcs:lcs09:gdb-commands.pdf|Sommario GDB commands}} * [[lcs:lcs07:emacs_commands|Un sommario di comandi di emacs]] * [[lcs:lcs07:bash_commands|Un sommario basico di comandi bash]] * [[http://www.tldp.org/LDP/abs/html/|Advanced Bash Scripting Guide]], la guida piu' completa e aggiornata sulla bash. * [[http://lowfatlinux.com/|Low fat linux]] * {{:lcs:lcs07:bashquickreference.pdf|Un sommario completo di comandi bash}} * [[http://www.digilife.be/quickreferences/quickrefs.htm|Un sito di 'sommari' (quick references)]] su tutto! * Manuali in linea delle funzioni di libreria standard e delle SC: //man nomefunzione man -k argomento// * Altre informazioni in linea (bash, make tec.) //ESC-X info// da emacs. * Il sito di riferimento per le specifiche standard di tutte le funzioni SC e librerie [[http://www.unix.org/version3/online.html|Open Group SUS (Single Unix Specification)]]. E' gratuito (basta registrarsi). * [[http://pauillac.inria.fr/~xleroy/linuxthreads/faq.html|LinuxThreads Frequently Asked Questions (with answers)]] * Alcuni tool utili: [[http://valgrind.org|valgrind]], [[http://www.doxygen.org|doxygen]], [[http://gcc.gnu.org/onlinedocs/gcc/Gcov.html|gcov]], [[http://ltp.sourceforge.net/coverage/lcov.php|lcov]], [[http://www.splint.org/|splint]] [[http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html|gprof]] * Confronto fra bash e dash: [[http://princessleia.com/plug/2008-JP_bash_vs_dash.pdf| trasparenze con le differenze principali]] ==== Enjoy ==== * Attenzione ad usare i ''goto'' possono succedere strane cose \\\ {{:informatica:sol:goto.png?700|}} * [[http://www.cs.rochester.edu/~kparkins/C-command.html|The ten commandments for C programmers]] edizione annotata dei dieci comandamenti per programmatori C. * Kernighan e Ritchie di fronte a un PDP-11, inventando il C:\\ {{lcs:lcs07:ken2.jpg|Kernighan e Ritchie di fronte a un PDP-11, inventando il C}} * ([[http://imgs.xkcd.com/comics/real_programmers.png|molte altre]] su [[http://www.xkcd.com]])\\ {{http://imgs.xkcd.com/comics/compiler_complaint.png}} * [[http://www.osnews.com/images/comics/wtfm.jpg|Good code vs. bad code]] ===== Esame ===== L'esame prevede lo svolgimento di un **[[informatica:sol:laboratorio16:progetto|progetto]] ** ed una **prova orale**. **Si ricorda che per sostenere l'esame (sia teoria che laboratorio) e' indispensabile iscriversi entro la data prevista per l'appello.** ===== Comments ===== Per tutto il resto mandate una email ai docenti. \\ **NOTA**: L'indirizzo della mailing list [[ lso.di@listgateway.unipi.it|lso.di]] deve essere usato esclusivamente per la consegna dei frammenti del progetto e la consegna del progetto stesso. Non e' necessario iscriversi alla lista, basta semplicemente mandare una e-mail con il tarball del progetto (o frammento) come da istruzioni specificate nel progetto stesso. Entro 1 o al massimo 2 giorni verrà inviata una e-mail di conferma di avvenuta ricezione del progetto da parte dei docenti del corso. Nel caso l'e-mail di avvenuta ricezione non dovesse arrivare, si prega di contattare direttamente il docente.