Underviser: Lars Thorup, lars.thorup@acm.org.
Tider: Hver mandag. Normalt øvelser fra 9.00-12.00, forelæsning fra 13.00-16.00.
Lokaler: Mandag d. 4/2: 0.19 (9.00-12.00)
Derefter Formiddag: 3.16+3.17 Eftermiddag: 1.45.
|
Oversigt |
|---|
|
25. februar: Dobbelt forelæsning: Objekt Modellering, II og Design Patterns, I |
|
(1. april: Påskeferie) |
Formålet med kurset er at lære de studerende om "Programming in the Large". Programmering af et større system - hvordan griber man det an?
Hvordan finder man ud af hvordan "kagen skal skæres" - hvordan får man best muligt opdelt det samlede system i overskuelige enkelt-dele? Her fokuserer vi især på objekt-orienterede teknikker som use-cases, "class-mining", sekvens-diagrammer og design patterns.
Hvordan sikrer man sig fra starten af, at det system man bygger op kommer til at være robust og virke efter hensigten? Her fokuserer vi især på teknikker som design-by-contract, automatiseret test, fejlhåndtering og performance-målinger.
Hvordan programmerer man de dele, der kræver brug af avancerede programmeringsteknikker? Her gennemgår vi persistens og trådprogrammering.
For at sikre at de studerende også får praktisk erfaring med de præsenterede teknikker vil kursets øvelses-del komme til at bestå i udviklingen af et enkelt større system. Målet er at de studerende får lavet et godt design, får implementeret dette design som et program-skelet, samt får implementeret udvalgte detaljer af systemet i en sådan grad at de studerende får en fornemmelse af om designet er blevet godt, samt at systemet kan demonstreres.
OM: "Use Case Driven Object Modelling With UML", Rosenberg & Scott, ISBN: 0-201-43289-7
DP: "Design Patterns", Gamma. et.al, ISBN: 0-201-63361-2
SSH: "The 101 Uses of OpenSSH: Part I", Mick Bauer, fra linuxjournal.com/lj-issues/issue81. Også tilgængelig lokalt i html-format.
CVS: "A Day With CVS" fra "Open Source Development with CVS", Karl Fogel, fra cvsbook.red-bean.com. Også tilgængelig lokalt i html-format.
CVS-SSH: "CVS/SSH instructions for courses on ITU", Lars Thorup. Tilgængelig lokalt i html-format.
C++: "C++ Crash Course", Lars Thorup & Mikkel Fennestad. Tilgængelig lokalt i html-format.
TIJ: "Thinking in Java, second edition", Bruce Eckel. Tilgængelig i pdf-format (4Mb).
XP: "The Test/Code Cycle in XP", William Wake, fra users.vnet.net/wwake. Også tilgængelig lokalt i html-format: del 1 og del 2.
and "Continous Integration", Fowler & Foemmel, fra www.martinfowler.com/articles.html. Også tilgængelig lokalt i html-format.
JU: "JUnit Primer", Mike Clark. Fra www.clarkware.com/articles. Også tilgængelig lokalt i html-format.
DbC: "An Introduction to Design by Contract", Bertrand Meyer. Fra eiffel.com/doc/manuals. Også tilgængelig lokalt i html-format.
ErrWeb: "Error-Handling Techniques for Web Applications", J. J. Kuslich. Fra developer.netscape.com/viewsource/kuslich_jserror.html. Også tilgængelig lokalt i html-format
Timeout: "Handling network timeouts in Java", David Reilly. Fra www.javacoffeebreak.com/articles/network_timeouts/. Også tilgængelig lokalt i html-format
REFL: "Tutorial: The Reflection API", Dale Green. Fra http://java.sun.com/docs/books/tutorial/reflect/.
DDJ: "Automatic Detection of Potential Deadlock", John Mount. Fra Dr. Dobbs Journal, December 2000.
PERF: "Performance Features and Tools", tilgængelig i html-format. og "Performance Analysis". Også tilgængelig lokalt i html-format. Begge fra developer.java.sun.com/developer/onlineTraining/Programming/JDCBook.
Lars Thorups GUI & IPC eksempler i Java. Tilgængelig i zip-format eller tgz-format.
Lars Thorups junit eksempler i Java. Tilgængelig i zip-format.
Instruks i at bruge ant fra emacs. Tilgængelig i txt-format.
Lars Thorups RMI eksempler i Java. Tilgængelig i tar-format (kan også udpakkes af WinZip).
Lars Thorups Agent eksempler i Java. Kommer senere Tilgængelig i tar-format (kan også udpakkes af WinZip).
Dia. Værktøj til at tegne UML-diagrammer etc. Tilgængelig til Linux og Windows
Testværktøjet JUnit. Fra www.junit.org. Tilgængelig i zip-format (374kb).
HAT (Heap Analysis Tool). Fra developer.java.sun.com. Tilgængelig i zip-format (502k).
Opgaven bliver at udvkle hvad man kunne kalde et grafisk konferencesystem, eller et virtuelt white-board eller et distribueret tegneprogram: Fra flere forskellige maskiner skal man kunne tegne på den samme tegneflade. Nærmere præcisering af projektet blev givet på den anden forelæsning, hvor disse krav blev præsenteret.
Eksamen bliver en 30 minutters mundtlig eksamen med diskussion af et antal emner fra kursusforløbet med udgangspunkt i det udarbejdede projekt. Eksamen er planlagt til 10., 11. og 12. juni 2002, se eksamensplanen.
|
I ugen inden: |
Læs udleverede noter om elementerne i et udviklingsprojekt. Læs/skim artiklerne SSH og CVS (med vægt på det overordnede, ikke på detaljerne). |
|
Formiddag, forelæsning: |
Præsentation af hinanden og
kurset |
| Eftermiddag: | Introuge, og derfor ingen øvelser |
|
I ugen inden: |
Læs OM, kapitel 2 & 3, samt udleveret note om C++. Opsætning af SSH og CVS på hjemme-maskiner. |
| Formiddag, øvelser: | Opsætning af SSH og CVS. Installere Dia eller Together. |
|
Eftermiddag, forelæsning: |
|
I ugen inden: |
Udarbejd domæne-modeller og use-cases for projektet.
|
| Formiddag, øvelser: | Afslutte opsætning af SSH og CVS. Installere Dia. Eksperimentere med udleveret eksempelkode. eller Together. |
|
Eftermiddag, øvelser: (lokale 1.45 og 1.80) |
Domænemodellering, use-cases, class-mining |
|
I ugen inden: |
Læs
OM, kapitel 5 samt DP, kapitel 2 |
|
Formiddag, forelæsning: (i lokale 0.19) |
|
|
Eftermiddag, forelæsning: (i lokale 0.19) |
|
I ugen inden: |
Udarbejd klasse-diagrammer og sekvens-diagrammer for
projektet |
|
Formiddag, øvelser: |
Objektmodellering og sekvens-diagrammer. |
|
Eftermiddag, forelæsning: |
Hvordan man tænker test og effektivitet ind i et design. JUnit, Ant. |
|
I ugen inden: |
Udarbejd skelet til testprogrammer for projektet |
|
Formiddag, øvelser: |
Testprogrammer I |
|
Eftermiddag, forelæsning: |
|
I ugen inden: |
Udarbejd programskelet med alle klasser. Sørg for at det
kan bygges og testes. |
|
Formiddag, øvelser: |
Programskelet |
|
Eftermiddag, forelæsning: |
|
I ugen inden: |
Implementer enkelt-bruger funktionalitet for jeres projekt. |
|
Formiddag, øvelser: |
Testprogrammer II. |
|
Eftermiddag, forelæsning: |
Persistens. Java's serialization funktionalitet. |
|
I ugen inden: |
Implementer persistens for jeres projektet. |
|
Formiddag, øvelser: |
Persistens. |
|
Eftermiddag, forelæsning: |
Kasper Østerbye gæsteforelæser om refleksion. |
|
I ugen inden: |
Implementer interprocess-kommunikation for jeres projekt. |
|
Formiddag, øvelser: |
Fejlhåndtering II, håndtere afbrudt forbindelse. |
|
Eftermiddag, forelæsning: |
Programmering med samtidige tråde. Plancher. Sekvensdiagrammer: Sharing2 og Counter3. Interthread-kommunikation og deadlock. Plancher, Eksempler: WaitNotifyTest.java, Agent.java and AgentTest.java. |
|
I ugen inden: |
Projektfærdiggørelse |
|
Formiddag, øvelser: |
Projekt-færdiggørelse |
|
Eftermiddag, forelæsning: |
|
I ugen inden: |
Projektfærdiggørelse |
|
Formiddag, øvelser: |
Performance-måling |
|
Eftermiddag, forelæsning: |
Projekt-færdiggørelse |