Descrizione e finalità del corso
Il corso si propone di iniziare lo studente alle tecniche di
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.
Le sessioni di laboratorio prevedono il lavoro di gruppo
e l'utilizzo di sofisticati strumenti di sviluppo in ambiente Linux.
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 sostenuta 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'',
``Programmazione 1'' e ``Programmazione 2''.
In particolare, si suppone che gli studenti conoscano
il frammento imperativo del linguaggio C++ (già studiato
nel corso di ``Programmazione 1'') e le basi della programmazione
orientata agli oggetti (studiate nel corso di ``Programmazione 2'').
Quando questo non fosse il caso, gli studenti sono invitati
a contattare il docente per organizzare un piano di recupero.
La lista dei collegamenti utili
contiene alcuni riferimenti che potrebbero agevolare
questo lavoro di ripasso.
Programma del corso
-
Richiami sul linguaggio C++:
-
Tipi di dato.
-
Espressioni.
-
Istruzioni.
-
Funzioni.
-
Campo d'azione e ciclo di vita.
-
Funzioni sovraccaricate.
-
Classi.
-
Tipi contenitori astratti.
-
Inizializzazione, assegnamento e distruzione.
-
Operatori sovraccaricati e conversioni definite dall'utente.
-
Template di funzione.
-
Gestione delle eccezioni.
-
Algoritmi generici.
-
Template di classe.
-
Ereditarietà semplice.
-
Ereditarietà multipla e virtuale.
-
La libreria standard.
-
Tecniche per la gestione dinamica della memoria.
-
Ambiente di sviluppo:
-
Il compilatore
g++.
-
Il debugger
gdb.
-
Automazione del processo di compilazione:
make.
-
Version control:
cvs.
Testi consigliati
Collegamenti Utili
C++
[Page last updated on September 26, 2011, 07:58:37.]