Voorbehoud: deze pagina is regelmatig in bewerking.
Schrijf je zo spoedig mogelijk via ProgressWWW in voor deze cursus, zodat je aan de Nestor cursus wordt toegevoegd.
Versie: 23 maart 2004.
Docent: Wim
H. Hesselink, IWI 111 (wim@cs.rug.nl).
Werkcollegedocenten: Sybren Deelstra.
Studentassistent: Jaap Duursma (csg1103@wing.rug.nl).
Nieuw:
Uitwerking tentamen 6 april. Het tentamen is nagekeken. De
cijfers staan op nestor.
Links:
Het
rooster voor deze
periode
Mijn onderwijspagina
Wat wordt er van
verslagen
verwacht?
Programma's:
De zip-file
gamebase als basis voor LIFE, een zip-file met een package lees dat de drie Lees klassen bevat. Deze klassen
staan klaar in het package ~csg102/java/local. Neem ~csg102/java dus
op in je CLASSPATH.
Een bruikbare maar verouderde zip-file primexp met de programma's Scanner, Numexp en
Prefexp uit de hoofdstukken 5 en 6. Een nieuwe versie hiervan is
primexp04.
Een experimentele C-versie is primexp.tgz.
Het programma Partities.java bij Hoofdstuk 9.
Colleges: maandag 11.15-13.00 (ZG 119) en
donderdag 9.15-10.00 (ZG 119).
Werkcolleges: dinsdag 11.15-13.00 en donderdag 10.15-11.00 (RC 59).
Terminals zijn gereserveerd op maandag 13-14, dinsdag 13-14 en donderdag
11-13-15. De studentassistent is beschikbaar op donderdag tijdens de genoemde
uren, en verder via de email (zie boven).
We gebruiken het boek:
E.B. Koffman, U. Wolz: Problem Solving with Java (2nd ed.). Addison Wesley
2002, ISBN 0-201-72214-3
en een aanvullend dictaat
"Objectgeorienteerd Programmeren A" (jan. 2004),
verkrijgbaar bij het Onderwijsbureau van Wiskunde en Informatica.
De cursus bestaat uit vier onderdelen: college, werkcollege, practicum en tentamen. Het college en het werkcollege bereiden voor op het practicum en het tentamen. Programmeren kun je alleen leren door het zelf te doen.
Het practicum gebeurt in tweetallen. Zoals dat ook bij "extreme
programming" gebeurt, zijn beide partners verantwoordelijk voor de
kwaliteit van het programma en het verslag. Het practicum bereidt
tevens voor op het tentamen. Zorg dus dat je er veel van leert!
Het is misschien nodig je java class path in je ".bashrc" te zetten
met:
export CLASSPATH=.:~csg102/java
Je kunt nagaan of dit effect heeft met de opdracht
"echo $CLASSPATH". Als je dit gedaan hebt, moet Java de klassen uit gamebase
en de leesklassen zelf kunnen vinden als je "import local.*;" in de
file hebt staan.
Je kunt submitten met het commando 'submissionclient'. De
resultaten staan daarna op http://wing6.wing.rug.nl:8080/login.xml
Zie voor het gebruik van Javadoc de
handleiding.
Het eerste practicum bestaat uit de opdracht Life
waarvoor je een aanzet krijgt in de vorm van
de opdracht LIFE.
Haal dit op en plaats het in een directory voor deze opdracht.
Pak het uit, onder Linux met unzip spel.zip, onder DOS met
Wunzip. Bekijk de inhoud ervan. Zie het wekenprogramma hieronder voor de
practicumdeadlines.
De cursus heeft een omvang van 6 EC. Het eindcijfer wordt bepaald op grond van het tentamencijfer (T) en het practicumcijfer (P). Het practicum telt voor een derde mee. Het tentamen telt voor twee derde. Het eindcijfer is dus een afronding van (P+2T)/3. Als 7 < P < T, wordt T als eindcijfer gegeven.
Week 7: 9 februari - 13 februari.
College maandag: subtypering met de klassen
Klas0
en Klas1,
voorts H3 (hoofdstuk 3 van het aanvullend dictaat OOA) en de opdracht Life.
Werkcollege dinsdag: H3: 1, 2, 3, 4, 5.
College donderdag: H2 (lees uit het boek 8.1 en 8.2).
Werkcollege donderdag: H2: 1, 2, 3, 4, 5.
Week 8: 16 februari - 20 februari.
College maandag: H4 (1, 2, 3) en H5 (1, 2, 3, 4).
Werkcollege dinsdag: H4: 1, 2, H5: 1, 5, 6, (7).
College donderdag: H5.7 en de
bepaling
van de vrije variabelen in lambdaexpressies.
Werkcollege donderdag: H5: 2, 3.
Practicum donderdag: aftekenen werking Life.
Te laat aftekenen (of te laat inleveren verslag) leidt tot een lager
cijfer!
Week 9: 23 februari - 27 februari.
Deadline maandag 23 februari, 17.00 uur. Inleveren eindverslag Life
inclusief code van de eigen klassen op papier. Submissie in Athena met
Life.java als naam voor de run-klasse.
College maandag: H6.
Werkcollege dinsdag: H6: 1, 2, 3, 4.
College donderdag: H6.
Werkcollege donderdag: H6: 5, 6, 9, (7, 8).
Week 10: 1 maart - 5 maart.
College maandag: H4 (5, 6) en H7.
Werkcollege dinsdag: H6: 12, 13, 14; H4: 3, 5.
Deadline woensdag 3 maart 16.00 uur. Submissie Expressies A,
zonder verslag. De runklasse moet MainexpA.java heten, de parser ExpA.
College donderdag: Bespreking van de uitwerkingen van Life. Verder over
hoofdstuk 7.
Werkcollege donderdag: H4: 7, 9.
Week 11: 8 maart - 12 maart.
College maandag: H7 (4, 5) en H8: graafalgoritmen.
Werkcollege dinsdag: H4: 6, 8, 9, 10.
College donderdag:
Dijkstra's
kortste pad algoritme.
Werkcollege donderdag: H7: 1 en:
Opgave: Gegeven drie stijgende arrays a, b, c van integers, die tenminste een
getal gemeenschappelijk hebben. Bepaal op efficiente wijze een drietal indices
i, j, k met a[i]=b[j]=c[k]. Geef zo mogelijk een invariant.
Week 12: 15 maart - 19 maart.
Deadline maandag 15 maart, 17.00 uur. Submissie Expressies B,
zonder verslag. De runklasse moet MainexpB.java heten, de parser ExpB.
College maandag: H9 met ondermeer
partities.
Werkcollege dinsdag: H8: 1, 2; H9: 1.
Woensdag: submissie Expressions wordt opengezet.
College donderdag: H9 vervolg,
permutaties.
Werkcollege donderdag: H9: 2, 3.
Week 13: 22 maart - 26 maart.
College maandag: Uitbreiding van H9.2: het probleem een verzameling personen
in een zo klein mogelijk aantal conflictvrije teams te verdelen met een
oplossing.
Werkcollege dinsdag: H9: 4, 5.
College donderdag: stof voor het tentamen, gelegenheid voor vragen.
Werkcollege donderdag: H9: 6.
Deadline vrijdag 26 maart, 17.00 uur. Submissie Expressies en inleveren
eindverslag met volledig programma op papier. De runklasse moet
Mainexp.java heten, de parser Expressions.
Week 14: 29 maart - 2 april. Eventuele uitloop.
Tentamen: dinsdag 6 april in de Examenhal.