Laboratorio di Programmazione

Novità

Orario e aule - Ricevimento - Annunci su lezioni

Inizio lezioni a.a. 2015-2016: 22 Aprile 2016.
Termine lezioni: 10 Giugno 2016.
Il laboratorio è diviso su due turni: dalle 15:00 alle 16:30, dalle 16:30 alle 18:00. Gli studenti sono divisi in due gruppi (quelli con cognome che comincia da A ad Gi, quelli con cognome che comincia da Gl a Z).

Vacanze: -

Ricevimento: Giovedì dalle 17:00 alle 19:00 presso il MICC in Viale Morgagni 65 - fissare comunque l'appuntamento per email: marco.bertini@unifi.it

Assenze:

Date esame

È necessario prenotarsi mediante il modulo web disponibile all'indirizzo: http://sol.unifi.it/prenot/prenot

L'esame è svolto presso i locali del MICC in Viale Morgagni 65. Le modalità di superamento dell'esame sono riportate sotto.

Le date d'esame sono visibili sul sito ufficiale dell'Università http://sol.unifi.it/docprenot/docprenot:

Lucidi lezioni e materiale collegato

I collegamenti sono generalmente fatti a materiale scritto in inglese, a meno di diversa indicazione. I lucidi sono in formato PDF. I lucidi preceduti dalla scritta "OLD" sono quelli dell'A.A. precedente e devono ancora essere aggiornati - se ne sconsiglia la stampa. I programmi fatti durante le lezioni sono riportato nella pagina web: Registro lezioni 2015-2016 e sul sito di e-learning dell'Università.

Sito e-Learning Unifi con materiale del corso: http://e-l.unifi.it. Tutti gli studenti dell'A.A. 2015-2016 devono iscriversi.

Lucidi e materiale a.a. 2015 - 2016

Lucidi e materiale anni precedenti:

Modalità di svolgimento dell'esame

L'esame consiste in un elaborato di programmazione in C++ da concordare col docente. Durante lo sviluppo dell'elaborato verranno usati gli strumenti visti a lezione, come sistemi di versionamento del codice e unit testing. L'elaborato può essere combinato con quello da svolgere per il corso "Programmazione", previo accordo col docente.

Una volta selezionato il tema verranno effettuati incontri per discutere e rivedere lo stato di avanzamento del progetto; è necessario effettuare questi incontri: non si può svolgere l'esame senza averci partecipato. Una volta completato l'elaborato questo verrà discusso il giorno dell'esame. Nel corso della discussione finale lo studente può essere interrogato sia su argomenti riguardante l'elaborato che su temi del corso ad esso collegati.

E' preferibile sviluppare un proprio progetto, in alternativa possibili idee di elaborato sono 1) un'applicazione per la gestione di agende come iCal, senza tutta la parte di gestione di calendari multipli e rete, usando WxWidgets (o QT) per la GUI. Un'altra opzione è gestire un task manager semplice (http://lifehacker.com/tag/todo-manager/ per ispirarsi) o un programma per prendere note (come Tomboy). Niente campi minati/gioco della scopa, altri giochi a piacere sono OK.

Link utili

Il Model/View/Controller è un design pattern utile nella programmazione di sistemi dove c'è un'interfaccia grafica. A lezione si studia il design pattern Observer che è la parte principale di MVC.

MVC:

Game Loop pattern (usato nella visualizzazione dei videogame)

Observer pattern nei videogame

Come librerie per disegnare GUI grafiche si possono usare wxWidgets o QT (consigliata), oppure NCurses per interfacce testuali.

wxWidgets:

QT:

NCurses / PDCurses (per Windows): libreria per gestiure GUI e input/output su terminale.

SDL: semplice libreria multimediale cross-platform e open source adatta per i videogame

Ambienti di sviluppo/compilatori consigliati

I due ambienti di sviluppo (IDE) consigliati sono CLion ed Eclipse.
Gli studenti sono comunque liberi di usare qualsiasi strumento gli risulti più comodo.

Clion è un ambiente i sviluppo integrato multipiattaforma con licenza gratuita per gli studenti. Durante il corso verrà usata questa IDE. I software sviluppati durante il corso DEVONO essere forniti come progetti CLion o Eclipse.

Eclipse CDT (richiede l'installazione di Eclipse e di un compilatore come G++ o clang++) - multipiattaforma.
Tutorial sulla configurazione di Eclipse+CDT su OSX, Linux e Windows (Video tutorial: installare Eclipse, MINGW e MSYS - per Windows). Eclipse ed i diagrammi UML: tutorial in inglese - tutorial in italiano.
Plugin utili per Eclipse: Linuxtools, cppcheclipse.
Tutorial sull'installazione di Eclipse/CDT e MSYS/MingW (Windows, mostra anche come installare WxWidgets). Wiki wxWidgets per l'uso di Eclipse + wxWidgets (EN); Tutorial sull'installazione di wxWidgets per Eclipse (Windows e Linux, EN); Tutorial sull'uso di wxWidgets (EN, molto semplice, adatto per principianti).
Da OSX Mavericks non è più disponibile il debugger GDB, che è usato da Eclipse. Si deve installare usando Macports o Homebrew. In alternativa si consiglia l'uso di XCode o CLion.

Altri ambienti di sviluppo che si possono usare sono:


Compilatori

Windows: GCC nella distribuzione MinGW

Linux: G++

OSX: In OSX si devono installare gli strumenti di programmazione a command line (necessari per usare CLion/Eclipse/Codelite/Code::Blocks), scaricando XCode da App Store e quindi dando il comando xcode-select --install in una finestra del terminale (tutorial).

Editor per diagrammi UML:

Libri di testo

Copertina VicarioE. Sink, "Versioning Control by Example", disponibile gratuitamente sul web: http://ericsink.com/vcbe/

 

 

 

 

 

 

 

Libri consigliati

Martin Fowler et al., "Refactoring: Improving the Design of Existing Code", Addison-WesleyCopertina Sedgewick

 

 

 

 

 

 

 

 

 

Kent Beck, "Test-Driven Development: By Example", Addison-WesleyCopertina Design Patterns