Orario di lezione (a.a. 2014-15)

  • Martedì 11.00-14.00 – Aula B (piano terra)
  • Giovedì 12.00-14.00 – Aula B (piano terra)
  • Giovedì 15.00-17.00 – Laboratorio (terzo piano, solo previo avviso docente)

Propedeuticità consigliate

  • Architettura degli elaboratori
  • Programmazione
  • Conoscenza del linguaggio C

Modalità d’esame – Regolamento

  1. L’esame consiste in due prove, A e B. La prima prova è di tipo pratico, la seconda prova è scritta.
    La prova pratica può essere svolta in due modalità alternative.
    La prima modalità (A.1) consiste nello svolgimento di due casi di studio assegnati dal docente durante le lezioni. Questa modalità è fortemente consigliata per gli studenti che hanno frequentato le lezioni. I casi di studio devono essere consegnati entro i termini prescritti dal docente. La prova pratica si intende sostenuta se lo studente consegna entrambi i casi di studio.
    La seconda modalità (A.2) di prova pratica consiste in una prova in laboratorio, durante la quale occorrerà implementare un programma assegnato. Questa modalità è disponibile per gli studenti che non sostengono o non superano la prova pratica secondo la prima modalità.
    (B) La seconda prova è scritta e consiste nella risposta a una serie di domande attinenti il programma dell’insegnamento.
  2. Il voto conseguito dalla prova pratica è mantenuto per l’intero anno accademico. Il voto conseguito dalla prova scritta è mantenuto per l’intero anno accademico. Le prove possono essere svolte indipendentemente, in ordine qualsiasi, in qualunque appello. L’esame si intende superato quando sono superate entrambe le prove.
  3. I voti della prova pratica e della prova scritta sono espressi in trentesimi. Il voto finale si ottiene pesando il voto della prova pratica per 5/9, e il voto della prova scritta per 4/9. La Commissione d’esame ha comunque autonomia di variare il voto in base a valutazioni complessive sulle prove. I casi di studio consegnati a sostenimento della prova pratica secondo la prima modalità sono valutati con peso 2/5 per il primo caso di studio, e 3/5 per il secondo caso di studio.
  4. La prova pratica si intende superata con un voto pari ad almeno 16/30. La prova scritta si intende superata con un voto pari ad almeno 16/30. L’esame si intende superato con un voto pari ad almeno 18/30.
  5. Chi riununcia al voto finale, dovrà ripetere interamente l’esame (sia la parte scritta sia la parte pratica).
  6. Durante lo svolgimento della prova pratica in laboratorio è ncessario avere un documento di identità. È altresì consigliato portare un manuale sul linguaggio C. Non si può accedere alla rete internet, né comunicare in alcun modo con altre persone.  Non si possono distribuire le tracce.

Per ogni ulteriore informazione, si rimanda all’art. 30 del Regolamento Didattico di Ateneo.

Software utilizzato in laboratorio

  • Eclipse CDT
  • CUnit test framework

Testi consigliati

  • Deitel P. & H. – Il linguaggio C – Fondamenti e tecniche di programmazione, ed. marzo 2013 – Pearson (ISBN: 9 788871 929378).
  • B.W. Kerninghan, R. Pike, ”Programmazione nella pratica”, Addison Wesley, 1999.
  • Jeri R. Hanly, Elliot B. Koffman, “Problem solving e programmazione in C”, Apogeo, 2013.

Programma (provvisorio)

  • Testing e Debugging
    • Bug
    • Tecniche di debugging
    • Strumenti per il debugging
    • Generalità sul testing
    • Il test di unità
    • Tecniche di testing
    • cUnit
  • Programmazione modulare
    • Modularizzazione e strutturazione dei programmi
    • Strutturazione dei file sorgente
    • Strutturazione di progetti in Eclipse CDT
  • Stili di programmazione
    • Motivazioni
    • Uso appropriato dei nomi
    • Scrittura appropriata di espressioni e istruzioni
    • Consistenza ed espressioni idiomatiche
    • Commenti
    • Convenzioni di programmazione
  • Documentazione automatica del codice
    • Generalità sulla documentazione di codice in linea
    • Documentazione automatica di codice
    • Doxygen
  • Puntatori in C
    • Puntatori
    • Memoria statica vs. Memoria dinamica (cenni)
    • Uso di puntatori con procedure e funzioni
  • Strutture
    • Struct ed Enum (con typedef)
    • Array di strutture e strutture con array
    • Tipo lista con puntatori
  • File
    • Stream
    • Testuali e Binari
    • Operazioni su file
    • Argomenti di un programma (argc, argv)

Dispense (Disponibili dal giorno prima delle lezione)