Fondamenti di Informatica C
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 sul docente
Dipartimento di Ingegneria dell'Infomazione
Università di Modena e Reggio Emilia, Via Vignolese 905 - 41100 Modena
Telefono 0592056190 - Fax 0592056126
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.A. 2007-2008: Gli studenti devono svolgere una tesina proposta dal docente, di difficoltà commisurata gli argomenti presentati a lezione ed alle esercitazioni in laboratorio.
Anni precedenti: Lo studente deve proporre e farsi approvare un progetto.
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.
Esempi Di Progetti java
Alcuni esempi di applet realizzate dagli studenti dell'anno accademico 1999/2000 come Progetto di fine corso
NOTA: Ho riportato solo alcuni dei progetti (quelli per cui e' risultata veloce la loro pubblicazione in forma di applet), anche se sono stati presentati moltissimi alti progetti di grande qualita' e originalita'. La pubblicazione (o non pubblicazione) di questi pochi progetti non deve quindi essere considerata come particolare motivo di merito (demerito). Qualunque studente gradisca avere il proprio progetto pubblicato su questa pagina Web, mi puo' inviare per posta elettronica il corrispondente file zip.
- Il Gioco della Dama (di Francesco Fera)
- Il Gioco Forza 4 Contro il Computer (di Marco Cavoli)
- Tetris (di Alberto Caccia)
- Pac Man (di Mauro Anceschi)
- Scacchi (di Luca Onnis)
- Scacchi (di Barbari)
- Milionario (di Omar Barbolini)
- Videonoleggio (di Barbolini)
- Mail reader (di Marco Catellani)
- Briscola (di Michele Gravina)
Tesina per l'anno accademico 07-08
E' disponibile il testo Media:tesina07-08.pdf della tesina da svolgere per l'anno accademico 07-08.
Alla pagina FAQ tesina sono disponibili alcune indicazioni riguardo alla tesina. Esse vengono aggiornate sulla base delle vostre domande al docente ed ai tutor.
Il tutorato si svolge presso il Laboratorio Lica nei seguenti orari:
- Lunedì: 9.00-13.00
- Martedì: 14.00-18.00
- Mercoledì: 14.00-18.00
- Venerdì: 9.00-13.00
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.
In questa pagina sono riportati alcuni lucidi non presenti nel libro.
- Presentazione del corso
- Classi di memorizzazione in C
- Astratte e Interfacce in Java
- Tabelle con JTable
Esercizi presentati a lezione
Gli esercizi sono forniti alcuni in formato pdf, visualizzabili e stampabili con il programma Adobe Acrobat, di pubblico domino, altri in semplice formato testo. Tutti gli esercizi sono stati realizzati in collaborazione con la Prof. Letizia Leonardi.
Programmazione ad Oggetti e Java
Gli esercizi sono gli stessi contenuti nei lucidi della parte teorica, ma da qui e' possibile salvare su un file (facendo "salva link con nome") il sorgente della gran parte degli esercizi.
Java: Le Classi
Java: Classi Astratte e Interfacce
Java: Ereditarietà
Java: Le Eccezioni
Java: Input e Output
Java: Programmazione Grafica e ad Eventi
Java: Le Applet
Le Applet | File |
File:Download.png | |
Applet1.java, Applet2.java, Applet2Listener.java, Applet3.java, Applet3Listener.java, |
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 DJGPP
Esercitazioni di laboratorio
Gli esercizi di laboratorio si possono trovare nella seguente pagina: Esercizi di fondamenti di informatica C.