From Agentgroup
Jump to: navigation, search

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.

Informazioni sui docenti

Docente.png

Prof. Franco Zambonelli

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



Docente.png

Prof. Marco Mamei

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


Battaglia Navale

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

Iscrizione.png

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

Textbook.png
  • 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

Lucidi.png

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.

  1. Presentazione del Corso
  2. Procedure Moduli in C
  3. Programmazione Ad Oggetti
  4. Java Intro Classi
  5. Ereditarietà
  6. Classi Astratte e Interfacce
  7. Java IO
  8. Eccezioni
  9. Java Swing
  10. Strutture Dati
  11. Code
  12. Liste
  13. Pile
  14. Applet



Esercizi

EserciziLezione.png






Strumenti Software

Strumenti.png

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