From Agentgroup
Revision as of 12:06, 24 July 2009 by Letizia (Talk | contribs) (New page: <!-- <div style="float:right;"> {{/box-testata|News|}} {{/Evidenza}} {{/box-fondo|Leggi la voce...}} </div> --> <!-- {{Userboxtop | align = right | backgroundcolor = lightyellow...)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Questa pagina fornisce il materiale didattico e le informazioni relative all'insegnamento di Principi di Sistemi Operativi (9 CFU) per il Corso di Laurea Magistrale in Ingegneria Informatica.


News

Ultime news

 L'appello scritto del 15 luglio 2009 non si terrà in quanto non c'è nessun iscritto

Vecchie news

 Venerdì 12 e sabato 13 giugno 2009 il sistema ESSE3 non sarà disponibile per iscriversi agli esami e neanche per compilare il questionario di valutazione
 Sono stati pubblicati i risultati del pre-appello scritto del 15/12/08
 Sono state pubblicate le date degli appelli della sessione straordinaria 2008/2009
 Sono disponibili alcuni esercizi per l'appello scritto
 Lunedì 15 dicembre 2008 si terrà un pre-appello scritto alle ore 11 in aula V a Matematica; per iscriversi contattare il docente
 I giorni 18 e 19 novembre 2008 non si svolgeranno le lezioni
 La prima esercitazione si terrà mercoledì 8 ottobre; quindi mercoledì 1 ottobre non ci sarà lezione
 Le lezione dell'AA 2008/09 inizieranno lunedì 29 settembre 2008

Informazioni sul docente

Docente.png

Prof. Giacomo Cabri

Dipartimento di Ingegneria dell'Infomazione

Università di Modena e Reggio Emilia, Via Vignolese 905 - 41100 Modena

Telefono 0592056190 - Fax 0592056129

giacomo.cabri@unimore.it


Orario delle Lezioni

Le lezioni si tengono dal 29 settembre al 19 dicembre 2008 con il seguente orario:

  • Lunedì dalle 11 alle 13 in aula VI presso il dipartimento di Matematica
  • Martedì dalle 11 alle 13 in aula VI presso il dipartimento di Matematica
  • Mercoledì dalle 14 alle 17 nel Laboratorio Zironi presso il dipartimento di Matematica


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.


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: Compilatore C, Java 1.5 di pubblico dominio (disponibili in laboratorio).


Programma Del Corso

Programmazione ad Oggetti

  • Concetti generali
  • Il Linguaggio Java
  • Classi ed ereditarietà in Java
  • I/O in Java
  • Interfacce grafiche in Java
  • Programmazione basata sugli eventi


Modalità D'Esame

L'esame si compone di uno scritto e 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.

Esame scritto

L'esame scritto serve a verificare che lo studente abbia acquisito le nozioni di astrazione, classificazione, ereditarietà e polimorfismo.

L'esame consiste nella modellazione di alcune entità e la relativa implementazione in Java.

È possibile vedere il testo di alcuni esercizi.

NOTE:

  1. l'esame scritto è solo per l'insegnamento da 9 CFU;
  2. per l'iscrizione all'esame scritto è necessario inviare una email al docente entro 2 giorni prima dell'appello scritto stesso;
  3. è necessario aver superato lo scritto per presentare il progetto;
  4. la presentazione del progetto può avvenire anche in un appello diverso da quello dello scritto;
  5. la consegna di uno scritto cancella il voto precedente; la partecipazione ad uno scritto senza consegnare non cancella il voto precedente.

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 interfaccia grafica tramite cui interagire con il programma stesso.
  • Sfrutti i meccanismi della programmazione ad oggetti:
    • incapsulamento;
    • ereditarietà e, se necessario, le classi astratte e le interfacce (si considerano escluse le relazioni di ereditarietà diretta da classi di libreria Java);
    • polimorfismo.
  • Sfrutti le classi di sistema Java per la gestione dell'input/output (Reader, Writer, InputStream, OutputStream).

Il programma deve essere una applicazione Java e NON una applet. 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 in laboratorio prima di presentarlo in sede d'esame.

Il software deve essere accompagnato da pagine di documentazione HTML (tipicamente le pagine generate tramite Javadoc) che descrivano le scelte di progetto effettuate e la struttura del sistema software.

A progetto realizzato, si valuterà il progetto (e il voto conseguente), ferma restando la possibilità del docente (e dello studente) di richiedere l'integrazione nel progetto di ulteriori funzionalità/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 sarà 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.


Problemi DA EVITARE in sede di esame:

  • Il programma non funziona
  • Manca qualcosa (di solito, la documentazione)
  • Il progetto è diviso su più programmi (eventualmente da concordare con il docente)
  • L’ereditarietà è usata male
  • "Non mi ricordo perché ho fatto il programma tempo fa"


Appelli

Iscrizione.png

La sessione è aperta. Le date degli appelli sono disponibili sul sito del corso di laurea all'indirizzo

http://informatica.scienze.unimore.it/calendario_esami.shtml

Dall'AA 2006/07 viene usata la verbalizzazione elettronica; chi vuole sostenere l'esame DEVE quindi iscriversi tramite il sito di ESSE3.

NOTA: sul sito di ESSE3 sono presenti le date degli appelli orali, per la presentazione dei progetto. Per l'iscrizione agli appelli scritti è necessario inviare una email al docente entro 2 giorni prima dell'appello scritto stesso, usando l'indirizzo email universitario e specificando nome, cognome e matricola.



Risultati

Risultati degli appelli scritti:

  • 15 dicembre 2008
  • 14 gennaio 2009
  • 19 febbraio 2009
  • 10 giugno 2009
  • 22 giugno 2009

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 Programmazione ad Oggetti e Introduzione alla Programmazione ad Oggetti è 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.

  1. Presentazione del corso
  2. Classi di memorizzazione in C
  3. Classi Astratte e Interfacce in Java
  4. Tabelle con JTable
  5. Novità di Java 2 SE 5



Esercizi presentati a lezione

EserciziLezione.png

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

Le Classi File
Download.png
Counter.java, Esempio0.java, Esempio1.java, Esempio2.java, Esempio2bis.java, Esempio3.java, Esempio4.java, Esempio5.java, Esempio5bis.java, Esempio6.java, Esempio7.java, Point.java

Java: Classi Astratte e Interfacce

Java: Ereditarietà

Java: Le Eccezioni

Java: Input e Output

Java: Programmazione Grafica e ad Eventi

Grafica File
Download.png
CalcButton.java, CalcPanel.java, Calculator.java, Es10Panel.java, Es11Panel.java, Es12Panel.java, Es13Panel.java, Es14Panel.java, Es15Panel.java, Es16Panel.java, Es7Panel.java, Es8Panel.java, Es9Panel.java, EsSwing1.java, EsSwing10.java, EsSwing11.java, EsSwing12.java, EsSwing13.java, EsSwing14.java, EsSwing15.java, EsSwing16.java, EsSwing2.java, EsSwing3.java, EsSwing4.java, EsSwing5.java, EsSwing6.java, EsSwing7.java, EsSwing8.java, EsSwing9.java, EsSwingCalculator.java, FunctionPanel.java, ImgPanel.java, MyFrame.java, MyPanel.java, Terminator.java

Java: Le Applet

Le Applet File
Download.png
Applet1.java, Applet2.java, Applet2Listener.java, Applet3.java, Applet3Listener.java,

Applet4.java, Applet5.java, Application2.java



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 DJGPP



Esercitazioni di laboratorio

Gli esercizi di laboratorio si possono trovare nella seguente pagina: Esercizi di Programmazione ad Oggetti.