Funktionell programmering

Syfte:
Efter genomgången kurs ska deltagaren självständigt kunna lösa programmeringsmässiga problem i ett funktionellt språk. Deltagaren ska också ha kunskaper om de viktigaste teoretiska frågeställningarna kring funktionell programmering.

Innehåll:
Funktionell programmering i Lisp. Abstrakta Datatyper. Valfri fördjupningsuppgift.

Omfattning:
5 poäng

Lärare:
Anders Berglund (föreläsningar, fördjupningsuppgifter, examination)
tel 018-471 31 67 (arb), 070-582 45 80 (nalle) 08-652 45 80 (hem)
e-mail: Anders.Berglund@docs.uu.se

Kjell Post (handledning programmeringsuppgifter i Lisp, uppgiftsrättning, fördjupningsuppgifter)
e-mail: kpt@idt.mdh.se

Litteratur:
Kompendium

För den intresserade:
Henderson, "Functional Programming. Application and implementaion", Prentice-Hall

Fördjupningslitteratur enligt överenskommelse

Undervisnings och examinationsformer:

Basblock

På kursens första två avsnitt, basblocket: funktionell programmering i Lisp och dataabstraktion ges undervisning i form av föreläsningar, uppgiftshandledning och en laboration enligt separat schema.

Dessa avsnitt examineras med fyra (eller fem) mindre inlämningsuppgifter samt en tenta. Tentamen ger endast betygen underkänt eller godkänt. Gränsen för godkänt resultat kommer att vara 60% totalt samt 50% vardera för de två avsnitten funktionell programmering och dataabstraktion.

De ordinarie uppgifterna på basblocket ska redovisas senast vid tentamenstillfället. För försent inlämnade gäller att rättning av uppgifter görs vid ett tillfälle, vid läsårets slut.

Fördjupningsblock

Kursens återstående avsnitt väljes efter önskat betyg.

Preliminärt kommer följande fördjupningsavsnitt att finnas:

Den definitiva listan över projekt meddelas i samband med sista föreläsningen på basblocket.

Antalet platser på varje avsnitt är begränsat. Tid när anmälningslistor anslås meddelas senare.

För betyget 3 krävs två enheter fördjupningsavsnitt, för betyget 4 tre enheter, för betyget 5 fyra godkända enheter fördjupningsavsnitt. Varje fördjupningsuppgifter ger 2 till 4 enheter enligt senare meddelande.

Redovisningen av ett fördjupningsavsnitt består av

Två redovisningstillfällen kommer anordnas för fördjupningsavsnitten: ett i slutet av terminen, ett vid ett senare tillfälle. För studenter som som redovisar sina fördjupningsuppgifter senast under höstterminen ska göra fyra programmeringsuppgifter på basblocket, övriga fem.

Undervisning på fördjupningsavsnitten ges enbart i form handledning.

Totala kurskrav

För godkänt resultat på kursen krävs

Samtliga moment på kursen ska slutföras inom samma läsår. Det är således inte möjligt att "spara" delresultat mellan två läsår.

Kursens moment ska lösas individuellt eller i grupper om två, förutom tentamen som är individuell. Vid arbete i grupp gäller att gruppens båda medlemmar ska aktivt delta i hela arbetet och allt arbete ska vara gemensamt. Att fördela uppgifter mellan sig inom en grupp är inte tillåtet.

Förhör kommer att hållas på inlämnade uppgifter eller under arbetets gång. Eventuella förekomster av fusk, kommer, såsom högskoleförodningen fastställer, att anmälas till rektor.

Preliminär föreläsningsplan
(varje undervisningstillfälle omfattar 3 lektioner ā 45 minuter)

1. Inledning. Introduktion till funktionell programmering.
Anders Berglund: Anteckningar om Lisp som funktionellt programmeringsspråk.
Kia Höök: Arbetsmetod för små program föreläsningsanteckningar
2.Funktionell programmering i Lisp, forts
Litteratur som Föreläsning 1.
Laboration.
3.Funktionell programmering i Lisp, forts
Litteratur som Föreläsning 1.
4,5



Abstrakta datatyper.
Lisp-implementeringar. Formella definitioner av ADTer.
Abelsson-Sussman
Kia Höök: Arbetsmetod för stora program
Cleaveland
6.Genomgång av fördjupningsavsnitt.


Anders Berglund			       Office: Room 1254
Department of Computer Systems	       E-mail: Anders.Berglund@docs.uu.se
Box 325				       Phone (work): +46 18 471 31 67
S-751 05 Uppsala		       Mobile phone: +46 70 582 45 80
Sweden				       Fax (work):   +46 18 55 02 25