Questa pagina fornisce il materiale didattico e le informazioni relative all'insegnamento di Fondamenti di Informatica C per il Corso di Laurea in Ingegneria Informatica.
Contents
Informazioni sui docenti
Dipartimento di Scienze e Metodi dell'Ingegneria
Universita' di Modena e Reggio Emilia
Via G. Amendola 2 - 42122 Reggio Emilia - ITALY
Ph.: +390522522215 -- Fax +390522522312
E-Mail: franco.zambonelli@unimore.it
Homepage: http://www.dismi.unimo.it/Zambonelli
Ricevimento: Lunedì dalle 14:30-16:30
Dipartimento di Scienze e Metodi dell'Ingegneria
Universita' di Modena e Reggio Emilia
Via G. Amendola 2 - 42122 Reggio Emilia - ITALY
Ph.: +39052222333 -- Fax: +390522522312
E-Mail: marco.mamei@unimore.it
Homepage: http://www.didattica.agentgroup.unimo.it/mamei.html
Ricevimento: Lunedì dalle 15:30-17:30
Finalità Del Corso E Consigli Utili
L'informatica odierna non consiste solo nel definire algoritmi e programmi che realizzano tali algoritmi, ma anche nel comporre architetture software e hardware sulla base di componenti software o hardware. Partendo da questo motivo dominante, il corso affronta i seguenti argomenti:
- Programmazione ad Oggetti: verranno illustrati i concetti generali, quali incapsulamento, ereditarietà e polimorfismo; verranno accennati i concetti di riusabilità e di composizione dei componenti software, illustrando il passaggio dalla programmazione modulare alla programmazione ad oggetti.
- Il linguaggio Java: verrà utilizzato come esempio di linguaggio ad oggetti, spiegando come i concetti generali sono implementati in Java; verrà inoltre spiegato come Java può essere sfruttato per lo sviluppo di interfacce grafiche.
- Dati strutturati in Java: verrà illustrata l'implementazione di strutture dati complesse come liste, pile, code, alberi e grafi in Java; su tali strutture verrà introdotto il problema della complessità e il relativo studio.
Per superare agevolmente l'esame si consiglia agli studenti di seguire con continuitá le lezioni e le esercitazioni del corso. Inoltre, si consiglia di non focalizzare la preparazione dell'esame esclusivamente sullo studio dei libri e degli appunti, ma piuttosto di preparare l'esame sperimentando direttamente i concetti presentati a lezione sul calcolatore. Puó risultare estremamente difficile superare con successo l'esame senza una conoscenza di tipo sperimentale, ottenuta con esercitazioni in laboratorio.
Ambienti di Programmazione Utilizzati: Borland C, Java 1.3 di pubblico dominio (disponibili in laboratorio).
Programma Del Corso
Programmazione ad Oggetti
- Concetti Generale
- Il Linguaggio Java
- Classi ed Ereditarietà in Java
- Interfacce grafiche in Java
- Programmazione basata sugli eventi
Strutture dati
- Liste
- Alberi
- Code
- Altre strutture dati
Modalità D'Esame
L'esame si comporra' di una discussione di un programma in Java che lo studente deve presentare all'esame (e la cui proposta di progetto deve essere stata preventivamente approvata dal docente). Per maggiori dettagli, vedere il seguito di questa pagina.
Modalità di Sviluppo del Progetto Java
All'esame si deve presentare e discutere un programma realizzato in Java e che presenti le seguenti caratteristiche:
- Sia dotato di interfacce grafiche con cui interagire con il programma stesso.
- Sfrutti i meccanismi di ereditarieta` e, se necessario, le classi astratte e le interfacce, per la definizione delle classi del sistema (si considerano escluse le relazioni di ereditarieta` diretta da classi di libreria Java).
- Sfrutti le classi di sistema Java per la gestione dell'input/output.
- Utilizzi una struttura dati tra quelle presentate a lezione o derivate.
Il programma deve essere eseguito da linea di comando; non devono essere usate librerie proprietarie (ad es. quelle degli ambienti integrati) a meno di averlo concordato con il docente. È opportuno provare il proprio programma al laboratorio BASE prima di presentarlo in sede d'esame.
Il software deve essere accompagnato da pagine di documentazione HTML (ivi incluse le pagine generate tramite Javadoc) che descrivano le scelte di progetto effettuate e la struttura del sistema software. A progetto realizzato, si valutera` il progetto (e il voto conseguente), ferma restando la possibilita` del docente (e dello studente) di richiedere l'integrazione nel progetto di ulteriori funzionalita`/caratteristiche.
È possibile presentare progetti di gruppo (2 persone), posto che l'ampiezza del progetto sia tale da giustificare il suo sviluppo cooperativo. In tale caso, comunque, la discussione sara` esplicitamente volta a valutare, per ciascuno dei componenti del gruppo, l'effettiva padronanza d'uso dei concetti di base della programmazione ad oggetti, del linguaggio Java e delle sue librerie Java, oltre naturalmente all'apporto individuale dato al progetto globale da ogni singolo membro del gruppo.
Alcune Proposte
Gli studenti possono svolgere una tesina su una traccia proposta dal docente, oppure possono proporre e farsi approvare un progetto di loro interesse.
Tetris
Realizzare il gioco del Tetis in Java.
- Il gioco deve prevedere almeno 3 tipi di pezzi e gestire i relativi incastri.
- Deve essere possibile salvare e ripristinare la partita.
- Ovviamente deve essere gestita l'interfaccia grafica del gioco
- Si devono usare delle strutture dati per memorizzare lo stato di accatastamento dei pezzi
Realizzare il gioco delle battaglia navale in Java.
- Il gioco deve prevedere diversi tipi di navi.
- Deve essere possibile salvare e ripristinare la partita.
- Il computer deve adottare diverse strategie per la ricerca delle navi nemiche.
- Deve essere gestita la modalità 2 giocatori in cui si alternano le schermate dei 2 giochi in modo da consentire a un utente di non vedere lo schieramento dell'avversario
- Ovviamente deve essere gestita l'interfaccia grafica del gioco
- Si devono usare delle strutture dati per memorizzare lo stato delle navi
Appelli
La sessione è aperta. Le date degli appelli sono disponibili sul sito di facoltà all'indirizzo
http://www.ing.unimo.it/campusone/appelli/PreSelection.asp
Dall'AA 2006/07 viene usata la verbalizzazione elettronica; chi vuole sostenere l'esame DEVE quindi iscriversi tramite il sito di ESSE3.
Testi Consigliati
Testo Del Corso
- G. Cabri, F. Zambonelli, "Programmazione a oggetti in Java: dai fondamenti a Internet", Pitagora editrice, 2003.
Altri Testi
- B. Eckel, "Thinking in Java", 4 edizione italiana, Pearson, (scaricabile gratuitamente da Internet la versione inglese http://www.BruceEckel.com).
- Arnold, Gosling, Holmes, "Il linguaggio Java. Manuale ufficiale", Pearson.
- C.S. Horstmann, G. Cornell, "Java 2: i Fondamenti", Mc Graw Hill, The Sun Microsystems Press.
Per chi vuole approfondire:
- Mazzanti, Milanese, "Programmazione di applicazioni grafiche in Java", Apogeo.
- Gamma, Helm, Johnson, Vlissides, "Design Patterns", Addison-Wesley.
- J.R. Hubbard, "Strutture dati in Java", McGraw-Hill.
- M.A. Weiss, "Data Structures And Problem Solving Using Java", 2nd Edition, Addison Wesley.
Lucidi del Corso
Il materiale dei corsi di Fondamenti di Informatica C e Complementi di Informatica è contenuto nel libro "Programmazione a oggetti in Java: dai fondamenti a Internet", Pitagora editrice, 2003.
- Presentazione del Corso
- Procedure Moduli in C
- Programmazione Ad Oggetti
- Java Intro Classi
- Ereditarietà
- Classi Astratte e Interfacce
- Java IO
- Eccezioni
- Java Swing
- Strutture Dati
- Code
- Liste
- Pile
- Applet
Esercizi
- Esercizio_Classi_Java
- Esercizio_Parsing_JavaIO
- Esercizio Grafica (Dataset)
- Esercizio Grafica
- Esercizio Pacman
- Esercizio Code Ingresso Discoteca
Strumenti Software
Si indicano di seguito gli strumenti software che si utilizzano durante il corso e si indica dove e' possibile reperirli.
- Per sviluppare programmi in Java si utilizza il JDK (Java Development Kit). È di pubblico domino e si puo' scaricare dal sito The Java Sun Site.
- NOTA: Si consiglia di usare la versione 1.5 o la 1.6. È comunque necessario utilizzare Java2, che corrisponde alle versioni del jdk dalla 1.2 alla 1.6.
- Molte riviste di informatica e libri su Java allegano il CD con Java in omaggio
- Come ambiente integrato (IDE) è possibile utilizzare quello che si preferisce. Quello consigliato è Eclipse.
- È possibile, per la parte C soltanto, usare un ambiente di programmazione integrato per il C disponibile qui: Il compilatore Dev CPP