![]() |
Università
|
Diploma in Ingegneria Informatica
|
A.A. 2001/2002
Versione 1.00 19/09/2000
Il corso di Fondamenti di Informatica 2, come riassume il titolo stesso, si configura come il naturale approfondimento di quanto affrontato nel corso di Fondamenti del primo anno. Pertanto gli argomenti principali sono, in estrema sintesi, l'introduzione alle strutture di dati, elementari e complesse, la teoria degli algoritmi fondamentali e la misura della loro complessità. A ciò si affiancherà l'approfondimento del linguaggio di programmazione Java e la conseguente pratica d'uso attraverso l'applicazione della teoria sviluppata. Si cercherà inoltre di introdurre una visione più 'professionale' nella risoluzione dei problemi, sfruttando le caratteristiche object-oriented del linguaggio e un approccio di tipo 'progettuale'.
Si è cercato di disegnare un percorso coerente tra i corsi che sviluppano particolarmente la programmazione (FI1, FI2, Sist. Oper., FI3) attorno ad un paradigma comune costituito dal linguaggio Java, in modo che il corso di FI1 sia a carattere introduttivo, quello di FI2 di approfondimento, SO curi gli aspetti relativi alla multiprogrammazione e al software di sistema, FI3 gli argomenti avanzati (programmazione di rete, interfacciamento a database, applicazioni distribuite). Grazie a questa articolazione gli studenti possono sperimentare un linguaggio moderno, evoluto ed object oriented come Java e le sue innumerevoli applicazioni (si pensi solamente alle applicazioni grafiche interattive in World Wide Web), anche se in FI2 l'enfasi maggiore sarà comunque data all'apprendimento della tecnologia di programmazione ad oggetti e alla conoscenza degli algoritmi fondamentali.
L'osservazione delle competenze richieste dal mercato del lavoro ai diplomati informatici indurrebbe a a mantenere una certa attenzione anche per il linguaggio C++, che viene tuttora largamente utilizzato, assieme ai linguaggi 'visuali', per lo sviluppo di applicazioni in ambiente office e industriale. La scelta di limitarsi in questo corso alla sola illustrazione dei principali aspetti che differenziano Java da C++ è dovuta alla pratica impossibilità, per mancanza di tempo, di sviluppare un serio laboratorio per entrambi i linguaggi. Nel corso di SO, soprattutto per lo stretto legame esistente tra UNIX e C, si potrà affrontare alcuni aspetti particolari di questo linguaggio (e, da questo, di C++) nonché del suo ambiente di programmazione.
Diversamente dagli anni iniziali del diploma, nel corso di studi non è presente una parte culturalmente interessante quale lo studio della formalizzazione dei linguaggi di programmazione e della costruzione dei compilatori. Nel corso di FI2 si darà breve cenno di questi argomenti ed in particolare dell'analisi lessicale, come problema di string matching.
Per l'apprendimento della base teorica, lo studente è invitato ad esaminare con attenzione le varie tipologie di strutture dati e di algoritmi suggeriti, tenendo sempre presente l'applicazione pratica dello studio effettuato: a tale scopo, nel caso dei teoremi, lo studente può limitarsi agli enunciati, saltando le dimostrazioni (a meno che non siano assolutamente necessarie per la comprensione); egualmente si faccia per la valutazione della complessità, limitandosi a ricordare il risultato finale (tale risultato è spesso richiesto in sede d'esame per confrontare algoritmi alternativi).
Un prodotto dello sviluppo delle classi che implementano le strutture di dati e gli algoritmi del testo consigliato è una libreria abbastanza ampia e di uso generale. Allo studente è richiesto di esaminare questo materiale da due punti di vista:
Riassumendo, gli argomenti principali del corso, che ne costituiscono gli obiettivi irrinunciabili, sono:
Per quanto riguarda i prerequisiti, abbiamo cercato un più stretto collegamento tra FI1 e FI2, per cui gli argomenti trattati nel corso del primo anno vengono ripresi e ampliati nel corso di FI2. Per evitare inutili perdite di tempo, si dà per scontata la conoscenza già acquisita dei seguenti argomenti:
Le tecniche acquisite saranno valutate attraverso la realizzazione di un progetto software che verrà assegnato a ciascuno studente (si veda Modalità d'esame).