Senaste nytt

Syfte och förkunskapskrav

Kursen skall
  1. befästa och fördjupa de kunskaper i funktionell och objektorienterad programmering som förvärvats i delarna A och B,
  2. ge bättre förståelse för likheter och skillnader mellan ett imperativt/objektorienterat och ett funktionellt synsätt på programmering,
  3. ge övning i att angripa icke-triviala programmeringsproblem.
Kursen bygger direkt vidare på delarna A och B. Den som inte har kläm på stoffet i dessa kurser gör klokast i att vänta med att läsa del C; den som någorlunda behärskar stoffet, men hade otur på någon av tentorna kan (om inte utan möda) göra laborationerna som en förberedelse inför nästa tenta-försök.

Laborationer

Kursens ryggrad är fyra tämligen omfattande laborationer: Laborationerna 3 och 4 har det gemensamma att de behandlar program vars användargränssnitt presenteras i en webbläsare. I Java skriver vi en applet (som exekverar i webbläsaren) och i Haskell ett antal cgi-script (som exekverar på webbservern).

Anledningen till att uppgifterna behandlas i den ordning som anges ovan är att det den 14 april ges omtenta i del B; som hjälp till dem som ska tenta om ägnar vi kursdelen före påsk åt Java och den efter påsk åt Haskell.

Laborationerna utförs och redovisas i grupper om två. Labgrupperna skall bildas inom den enhet om fyra faddergrupper som har gemensam handledare.

I Laboration 1/2 skall ni också jämföra Haskells och Javas lämpligheter för det givna problemet och skriva en kort rapport om era erfarenheter; mer information ges i labinstruktionen för lab 1/2.

Den undervisning som ges är i huvudsak till för att hjälpa er med laborationerna: föreläsningarna introducerar de nödvändiga baskunskaperna; gruppmötena diskuterar hur problemen kan lösas; på handledningspassen kan ni få hjälp med programmeringsverktygen, och med att leta buggar i era program.

Lärare

Handleder grupper med nummer
Oscar Lindbergf96osli@dd.chalmers.se2-5
Erik Norvelld00ean@dtek.chalmers.se6-9
Magnus Larssonmd9larma@mdstud.chalmers.se10-12
Anders Höckerstenchucky@dtek.chalmers.se13-17, 1 (Haskell)
Andreas Olssonf97anol@dd.chalmers.se13-17, 1 (Java)

Kursansvarig och föreläsare: Magnus Carlsson magnus@cs.chalmers.se. Notera att Anders och Andreas delar grupper: Anders kommer att leda övningar och rätta laborationer med Haskellinnehåll, medan Andreas tar Javadelen.

Föreläsningar

Kursens sex föreläsningar ansluter direkt till laborationerna och ger stöd inför arbetet med dessa. Föreläsningarna äger rum i VR enligt följande schema (notera att det är två föreläsningar i vecka 1):
Vecka Tidpunkt Ämne
1Måndag 15/3 kl 13Lab 1; Objektorienterad versus funktionsorienterad programmering; Java: I/O, undantag. (miniatyrer)
1Tisdag 16/3 kl 15Lab 1; Datastrukturer i Java, binära sökträd, tidskomplexitet, balansering. The Java Collections Framework. (miniatyrer)
2Måndag 22/3 kl 13Lab 3, Java: Ramverk, händelsestyrd programmering. (miniatyrer)
4Måndag 19/4 kl 13Lab 2, Haskell: I/O; binära sökträd i Haskell. (miniatyrer)
5Måndag 26/4 kl 13Monader och effekter i Haskell. (miniatyrer)
6Måndag 3/5 kl 13Lab 4, CGI-programmering i Haskell. (miniatyrer)

Föreläsningarnas innehåll kommer efterhand att dokumenteras på denna sida.

Gruppmöten

Läsveckorna 1, 2, 4, 5, 6, 7 och 8 hålls ett gruppmöte på tisdag förmiddag eller måndag eftermiddag enligt följande schema:
Grupp Tid Rum Handledare
1Må 15-17Idéläran 11Andreas/Anders
2Ti 8-10Idéläran 2Oscar
3Ti 8-10Idéläran 3Oscar
4Ti 10-12Idéläran 4Oscar
5Ti 10-12Idéläran 5Oscar
6Ti 8-10Idéläran 6Erik
7Ti 8-10Idéläran 7Erik
8Ti 10-12Idéläran 8Erik
9Ti 10-12Idéläran 9Erik
10Ti 8-10ED5209Magnus L
11Ti 10-12ED5211Magnus L
12Ti 10-12ED5213Magnus L
13Ti 8-10Idéläran 10Andreas/Anders
14Ti 8-10Idéläran 11Andreas/Anders
15Ti 10-12Idéläran 12Andreas/Anders
16Ti 10-12Idéläran 13Andreas/Anders
17Må 15-17Idéläran 10Andreas/Anders
Gruppmötena är till för gemensam diskussion om de förelagda uppgifterna och därtill hörande material men däremot inte för kodning vid datorer. Handledarna utgör en resurs för att hjälpa er vid diskussionerna, men kommer normalt inte att hålla några genomgångar.

Det är därför förstås tillåtet att sedan utnyttja de gemensamma lösningsidéer som presenterats på mötet (förutsatt att man varit med på mötet). Det är däremot inte tillåtet att kopiera eller skriva av hel- eller halvfärdiga programdelar som utvecklats av andra labgrupper. Här är en utförligare diskussion om akademisk ärlighet.

Gruppmötena vecka 1, 2, 4 och 6 introducerar arbetet med de fyra laborationerna och bör därför vara till god hjälp för samtliga labgrupper. Mötena övriga veckor utgör ytterligare tillfällen till diskussion om tidigare ämnen och kan därför vara överflödiga för de grupper som är säkra på sin design.

Diskussionsunderlag för gruppmöte vecka 1 (lab 1).

Diskussionsunderlag för gruppmöte vecka 2 (lab 3).

Diskussionsunderlag för gruppmöte vecka 4 (lab 2).

Diskussionsunderlag för gruppmöte vecka 6 (lab 4).

Labhandledning

Utöver gruppmötena erbjuds handledning till laborationerna i labsalar. Dessa tillfällen är av två slag:

Kommunikation

Meddelanden som berör kursen meddelas under "Senaste nytt" på denna sida; man bör därför regelbundet titta här för att hålla sig uppdaterad om eventuella förändringar. Kursens fyra programmeringsmoment liksom den obligatoriska rapporten redovisas m.h.a liknande webbgränssnitt som använts i del A i höstas.

Det går bra att skicka frågor per email till handledarna, som gör sitt bästa för att svara på frågorna innan nästa handledningspass. För att systemet skall fungera måste dock frågorna vara välformulerade och rimliga till antalet. Frågor om till exempel webbsidorna och saknade filer skickas till kursansvarig.

Kurslitteratur

Examination

Ingen skriftlig tentamen ges på denna delkurs; för att bli godkänd på del C måste man
  1. ha fått de fyra programmeringsmomenten godkända
  2. ha redovisat en rapport.
På laborationerna 3 och 4 kan man få betyget "Pass" eller "Excellent". Om man har fått "Excellent" på båda dessa får man "Excellent" som slutbetyg på del C.

Då samtliga tre delkurser (del A, B och C) godkänts ges slutbetyg på kursen. Slutbetyget baseras på betygen i tentamina i delarna A och B och på laborationerna. Dock har tentamensresultaten större betydelse för slutbetyget än labresultaten.

Observera att