Roberto, Margherita and Beatrice

Home

Personal Info

Papers

Teaching

Interests

People

Links

About

Programmazione 3

 

 

 

Under construction

Under Construction

 

 

 

Docente: Roberto Bagnara
Collaboratore didattico: Enea Zaffanella
Collocazione: CC.d.LL. in ``Matematica'', ``Mat. e Informatica'', ``Mat. per la Tecnologia e la Finanza'', III anno, I semestre.
Durata: 60 ore.
CFU: 6.

Dal predecessore di questo corso ha avuto origine la Parma Polyhedra Library

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

  • S. Lippman, J. Lajoie, ``C++: Corso di programmazione'', terza edizione, Addison-Wesley, 2000.
    ISBN 88-7192-071-6.

    Fondamentale.

  • B. Stroustrup, ``C++: Linguaggio, libreria standard, principi di programmazione'', terza edizione, Addison-Wesley, 2000.
    ISBN 88-7192-078-3.

    Per chi desideri approfondire ulteriormente la conoscenza del linguaggio C++. Può essere utile come strumento di consultazione.


Collegamenti Utili

C++

[Page last updated on September 26, 2011, 07:58:37.]

© Roberto Bagnara
bagnara@cs.unipr.it

Home | Personal | Papers | Teaching | Interests | People | Links | About