Kursusplan, VOOP, ITU, forår 2002

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

4. februar: Et udviklingsprojekt

11. februar: Objekt Modellering, I

18. februar: (Dobbelt øvelser - ingen forelæsning)

25. februar: Dobbelt forelæsning: Objekt Modellering, II og Design Patterns, I

4. marts: Test og Effektivitet

11. marts: Design Patterns, II

18. marts: Design by Contract, Fejlhåndtering

25. marts: Persistens

(1. april: Påskeferie)

8. april: Refleksion

15. april: Tråde og Synkronisering

22. april: Måle effektivitet

29. april: Projektafslutning

Kursusformål

Litteratur

Værktøjer

Projektbeskrivelse

Eksamen




Kursusformål

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?

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.



Litteratur



Værktøjer



Projektbeskrivelse

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

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.



4. februar: Et udviklingsprojekt

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
Overordnet gennemgang af elementerne i et udviklingsprojekt.
Gennemgang af CVS over SSH

Eftermiddag: Introuge, og derfor ingen øvelser



11. februar: Objekt Modellering, I

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:

Domænemodellering, use-cases, class-mining C++ crash kursus



18. februar: Dobbelt øvelsesgang

I ugen inden:

Udarbejd domæne-modeller og use-cases for projektet.
Opsætning af SSH og CVS på hjemme-maskiner.

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



25. februar: Objekt Modellering, II og Design Patterns, I

I ugen inden:

Læs OM, kapitel 5 samt DP, kapitel 2
Læs DP: Composite, Visitor, Iterator, Singleton, Abstract Factory, Observer

Formiddag, forelæsning: (i lokale 0.19)

Objektmodellering og sekvens-diagrammer

Eftermiddag, forelæsning: (i lokale 0.19)

Design Patterns



4. marts: Test og Effektivitet

I ugen inden:

Udarbejd klasse-diagrammer og sekvens-diagrammer for projektet
Udarbejd forslag til brug af design patterns for projektet.
Læs de to XP-artikler samt JU-artiklen.

Formiddag, øvelser:

Objektmodellering og sekvens-diagrammer.
Design Patterns
Første delaflevering.

Eftermiddag, forelæsning:

Hvordan man tænker test og effektivitet ind i et design. JUnit, Ant.



11. marts: Design Patterns, II

I ugen inden:

Udarbejd skelet til testprogrammer for projektet
Læs DP: Command, Strategy, Decorator, Flyweight, Builder, Proxy

Formiddag, øvelser:

Testprogrammer I

Eftermiddag, forelæsning:

Design Patterns, fortsat



18. marts: Design by Contract, Fejlhåndtering

I ugen inden:

Udarbejd programskelet med alle klasser. Sørg for at det kan bygges og testes.
Læs DbC-artiklen, ErrWeb-artiklen og Timeout-artiklen.

Formiddag, øvelser:

Programskelet

Eftermiddag, forelæsning:

Design-by-contract. Fejlhåndtering



25. marts: Persistens

I ugen inden:

Implementer enkelt-bruger funktionalitet for jeres projekt.
Læs TIJ, kapitel 11, afsnittet om "Object serialization", kapitel 15, afsnittet om "RMI".

Formiddag, øvelser:

Testprogrammer II.

Eftermiddag, forelæsning:

Persistens. Java's serialization funktionalitet.



8. april: Refleksion

I ugen inden:

Implementer persistens for jeres projektet.
Læs REFL-artiklen.

Formiddag, øvelser:

Persistens.
Anden delaflevering indeholdende testkode, byggescripts, evt diagrammer, samt kode der afspejler brug af design patterns, design by contract og fejlhåndtering.

Eftermiddag, forelæsning:

Kasper Østerbye gæsteforelæser om refleksion.



15. april: Tråde og Synkronisering

I ugen inden:

Implementer interprocess-kommunikation for jeres projekt.
Læs TIJ, kapitel 14 og kapitel 15, afsnittet om "Network programming". Læs DDJ-artiklen.

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.



22. april: Måle effektivitet

I ugen inden:

Projektfærdiggørelse
Læs PERF-artiklerne.

Formiddag, øvelser:

Projekt-færdiggørelse

Eftermiddag, forelæsning:

Peformance-målinger, profiling.



29. april: Projektafslutning

I ugen inden:

Projektfærdiggørelse

Formiddag, øvelser:

Performance-måling
Projekt-færdiggørelse

Eftermiddag, forelæsning:

Projekt-færdiggørelse
Endelig projekt-aflevering