IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Funktionelt design og programmering 
Kursusnavn (engelsk):Functional design and programming 
Semester:Efterår 2002 
Udbydes under:cand. it, softwareudvikling (swu) 
Omfang i ECTS:7,50 
Kursussprog:Dansk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:
Forventet antal deltagere:25 
Maks. antal deltagere:65 
Formelle forudsætninger:Du skal have kendskab til programmering og
kunne udvikle mindre programmer, f.eks. svarende til det niveau der
kan opnås på kurset Grundlæggende Programmering.
 
Læringsmål:

Gennemførelse af kurset vil give dig følgende kvalifikationer:


  • Du skal kunne forklare og udvikle programmer i
    programmeringssproget Standard ML.

  • Du skal kunne forstå og anvende rekursive datatyper og funktionsdefinitioner; højere-ordens funktioner; sammensatte data som for
    eksempel: tupler, lister, træer og vektorer.

  • Du skal kunne forklare parametrisering og polymorfi.

  • Du skal kunne anvende dovne datastrukturer.

  • Du skal kunne forstå programmeringssprogsbegreberne binding,
    omgivelse, type samt typeinferens.

  • Du skal kunne forstå og udføre basale ræsonnementer om et programs
    korrekthed ved hjælp af transformation og induktion.

  • Du skal kunne opdele et større system i separate komponenter med
    funktionelt beskrevne grænseflader.
 
Fagligt indhold:

I traditionelle programmeringssprog foregår beregninger ved at man
destruktivt ændrer værdien af variable og af felter i objekter osv.
Dette kan være effektivt men gør det unødig vanskeligt at kombinere
generelle løsninger på delproblemer til løsninger på større problemer.

I funktionsprogrammering, som vi skal se på i dette kursus,
benytter man i stedet en værdi-orienteret programmeringsstil. Det vil
sige at beregninger foregår ved at værdier analyseres og ny værdier
skabes, frem for at individuelle bidder af hukommelsen modificeres.

Dette gør det nemmere at lave robuste programmer, og at
vedligeholde dem, for de kan opdeles i separate komponenter med klart
beskrevne funktionelle grænseflader.

Funktionelt design og programmering går således ud på udtrykke
programmers virkemåde ved sammensætning af passende funktioner. Hver
funktion har en veldefineret virkemåde: Den tager et argument, udfører
en beregning og giver et resultat. Vægten er således lagt på
hvad en funktion gør i modsætning til hvordan den
gør det.

Kurset er baseret på funktionsprogrammeringssproget Standard ML.
De to hovedemner i kurset er:


  1. Programming in the small. Hvordan kan et specifikt
    problem løses ved at sammensætte simple funktioner.
  2. Programming in the large. Hvordan kan et stort system
    opsplittes i programbiblioteker med funktionelt beskrevne grænseflader.


Kurset er naturlig efterfølger til Grundlæggende Programmering og
er en god opvarmning til kurset Programmeringssprog: Fortolkere og
oversættere.


Der stilles ugentlige obligatoriske opgaver, som består af både
programmerings- og papir-og-blyant-opgaver. Du skal aflevere og
besvare 8 ud af 11 ugentlige opgavesæt tilfredsstillende for at du kan
gå op til eksamen. 

Læringsaktiviteter:

Ugentlige forelæsninger, øvelser med øvelsesvejleder og obligatoriske opgaveafleveringer. 

Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam), 13-skala, Intern censur

Fire timers skriftlig eksamen med alle hjælpemidler, undtaget computer og andet elektronisk udstyr. Bedømmelse sker efter 13-skalaen. Ekstern censur.


Tilmelding til eksamen kræver godkendelse af mindst 8 ud af 11 obligatoriske opgavebesvarelser.  

Litteratur udover forskningsartikler:Introduction to Programming using SML. Michael R. Hansen & Hans Rischel. Addison-Wesley. 1999. ISBN NR.: 0-201-39820-6