Fondamenti di Informatica B 2011/2012
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
- Pagina dedicata alle esercitazioni del corso.
- Istruzioni per lo sviluppo e la consegna del progetto.
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
- Testi di esame degli anni scorsi (e soluzioni) sono disponibili alla pagina del corso tenuto negli A.A. 2008/2009 FINFB0809, 2009/2010 FINFB0910 e 2010/2011 FINFB1011
- Testo e soluzioni dell'esame del 6 Giugno 2012.
- Testo e soluzioni dell'esame del 26 Giugno 2012.
- Testo e soluzioni dell'esame del 16 Luglio 2012.
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.
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#)
- 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
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.
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.
- 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
Pagina web del corso con PDF dei lucidi, altro materiale e link utili. Una parte delle lezioni sarà svolta in laboratorio.