Descrizione e finalità del corso
Il corso si propone di iniziare lo studente alle tecniche
programmazione avanzata. L'obiettivo è quello di realizzare un
salto di qualità nella comprensione dei problemi di
programmazione e nella capacità dello studente di risolverli.
Dai piccoli esercizi di programmazione a progetti quasi professionali
(nella qualità se non nell'estensione).
Sebbene il linguaggio di programmazione utilizzato nel corso sia il C++,
molte delle tecniche introdotte nel corso sono applicabili anche
in ambienti differenti.
Gli studenti apprenderanno diverse tecniche raffinate di programmazione
mentre imparano le caratteristiche avanzate di C++.
Per mezzo delle lezioni e delle sessioni di laboratorio,
si cercherà di fornire un'esperienza profonda e duratura
delle metodologie di programmazione e della potenza espressiva di C++.
Nelle sessioni di laboratorio, gli studenti lavoreranno su esercizi
e su piccoli progetti di gruppo con l'obiettivo di rafforzare
la comprensione delle tecniche discusse.
Gli esercizi includeranno la pratica di nuove tecniche di programmazione,
la lettura critica e la correzione di codice esistente,
la scrittura di nuovo codice,
la modifica di codice esistente per venire incontro a nuovi requisiti,
e il riutilizzo di codice in nuovi ambienti.
I due moduli sono seriali.
In altre parole, il II modulo è pensato per gli studenti
che abbiano già seguito il I modulo.
Nel I modulo saranno illustrate e sperimentate in laboratorio
gran parte delle caratteristiche (avanzate e non) del linguaggio.
Nel II modulo si completerà lo studio del linguaggio e,
soprattutto, si passerà alla fase di approfondimento
delle capacità progettuali e realizzative degli studenti.
Per entrambi i moduli, il lavoro di laboratorio prevede l'utilizzo
di sofisticati strumenti di sviluppo in ambiente Linux
e il lavoro di gruppo.
Nel II modulo, una volta che si sia determinato il numero di partecipanti,
verrà scelto un progetto di programmazione realistico
cui lavoreranno tutti gli studenti.
In questo modo si intende iniziare gli studenti alla programmazione
professionale, al lavoro di gruppo e al coordinamento tra sviluppatori
software.
La parte fondamentale dell'esame viene svolta nelle sessioni di laboratorio
svolte durante l'anno, con l'unica integrazione di un breve colloquio finale.
Ne consegue che la frequenza è strettamente obbligatoria
e che tutto il lavoro (agli studenti viene richiesto un serio impegno
di studio individuale) viene svolto durante il corso.
La (triste) pratica di ``seguire'' il corso per prendere appunti
da studiare poi chissà quando, nel caso di questo corso,
non ha alcuna speranza di riuscita.
Gli studenti lavoratori o che comunque fossero impossibilitati
a frequentare le lezioni e/o le sessioni di laboratorio,
sono invitati a
prendere contatto con il docente
per l'individuazione di modalità alternative per lo svolgimento
del programma del corso.
Propedeuticità
Il corso segue logicamente i corsi di ``Fondamenti di Informatica''
e ``Linguaggi di Programmazione''.
In particolare, si suppone che gli studenti conoscano il frammento
imperativo del linguaggio C++ (già studiato
nel corso di Linguaggi di Programmazione).
Quando questo non fosse il caso, gli studenti sono invitati,
entro le prime due settimane di corso, a far sí che detti
presupposti si avverino.
La lista dei collegamenti utili
contiene alcuni riferimenti che potrebbero agevolare
questo lavoro di ripasso.