Fondamenti di Informatica B 2011/2012

informazioni generali sul corso

Organizzazione del corso

Il corso è costituito da una prima parte di 3 crediti più una seconda di 6 crediti corrispondente al corso di Fondamenti di Informatica LB.

Esercitazioni

Materiale didattico

I lucidi delle lezioni, organizzati a moduli, sono pubblicati su AMS Campus.

Materiale relativo alla prima parte del corso

  • Presentazione del corso FINFB (9CFU) - blocco 00-presentazione.pdf
  • Modulo 1: ambienti, visibilità e tempo di vita delle variabili, funzioni e procedure, modello a run-time, complessità computazionale.
  • Esercizi di analisi di programmi in linguaggio C.

Materiale relativo alla seconda parte del corso

  • Modulo 2: introduzione alla progettazione di applicazioni software.
  • Modulo 3a: introduzione alla programmazione a oggetti. Codice presentato a lezione.
  • Modulo 3b: meccanismi di estensione e riuso. (Esempio: adventure)
  • Modulo 3c: eccezioni.
  • Modulo 3d: <i>generics</i>.
  • Modulo 4: strutture dati in Java. Codice presentato a lezione.
  • Modulo 5a: programmazione ad eventi. Codice presentato a lezione.
  • Modulo 5b: Java Swing.
  • Modulo 6: Java stream. Codice presentato a lezione.
  • Argomenti avanzati: <i>Decorator</i> pattern, <i>annotations</i>

Per approfondimenti, vedere i tutorial di Java.

Testi d'esame

Ringraziamenti

Si ringraziano i Proff. Alessandro Ricci, Paola Mello, Enrico Denti e Massimo Franceschet per aver reso disponibile il loro materiale didattico, parzialmente utilizzato -con rielaborazioni- in questo corso.

conoscenze e abilità da conseguire

Al termine del corso, lo studente possiede le conoscenze dei fondamenti della programmazione a oggetti e dispone delle metodologie di base per lo sviluppo di applicazioni software di medie dimensioni. In particolare, lo studente è in grado di:

  • sviluppare, modificare ed estendere programmi secondo il paradigma della programmazione a oggetti
  • utilizzare strutture dati avanzate e tecniche di programmazione ad eventi
  • realizzare semplici interfacce grafiche
  • progettare applicazioni di medie dimensioni in un linguaggio ad oggetti (Java, C++, C#)
contenuti
  • Funzioni e procedure:
    • legami, regole di visibilità e ambienti
    • trasferimento dei parametri
    • chiamata delle funzioni e modello a tempo di esecuzione
  • Algoritmi e strutture dati (rudimenti)
    • allocazione statica e dinamica
    • complessità computazionale
  • Elementi di progettazione e programmazione del software ad oggetti
    • dagli algoritmi ai sistemi
    • elementi fondamentali programmazione ad oggetti
    • riuso, estendibilità, composizione
    • eccezioni
    • sistemi ad eventi, interfacce grafiche
    • sistemi di I/O, gestione dei file
testi / bibliografia

Gli appunti e diapositive del docente costituiscono il materiale di riferimento principale del corso. Fra i testi che possono essere utili per approfondire i concetti del corso:

  • Linguaggio C, Kernighan & Ritchie, Jackson Libri.
  • C: Corso completo di programmazione, Deitel & Deitel, Apogeo.
  • Concetti di informatica e fondamenti di Java 2, Horstmann, Apogeo.
  • Progettazione del software e design pattern in Java, Horstmann, Apogeo.
metodi didattici

Il corso si sviluppa in un insieme bilanciato di lezioni di teoria e pratica in laboratorio, ove gli studenti svolgono esercizi, esercitazioni o progetti coadiuvati dal docente e dal tutor.

modalità di verifica e valutazione dell'apprendimento
  • Prova scritta (con esercizi di analisi e sintesi e domande di teoria)
  • Prova orale con domande sugli argomenti del corso e discussione di un progetto presentato in gruppo
strumenti a supporto della didattica

Pagina web del corso con PDF dei lucidi, altro materiale e link utili. Una parte delle lezioni sarà svolta in laboratorio.