Functioneel programmeren

Website:website met extra informatie
Vakcode:INFOFP
Studiepunten:7.5 ECTS
Periode:periode 1 (week 36 t/m 45, dwz 9-9-2010 t/m 12-11-2010; herkansing week 1)
Timeslot:A
Deelnemers:tot nu toe 111 inschrijvingen
Rooster:Let op: m.i.v. het collegejaar 2008/2009 is het rooster te vinden in Osiris
Docenten:Dit is een oud rooster!
vormgroeptijdweekzaaldocent
college   ma 9.00-10.4537-44 AARD-KLEIN Doaitse Swierstra
 
wo 9.00-10.4537-44 AARD-GROOT
practicum groep 1 ma 11.00-12.4538-44 BBL-103 CLZ Jan Rochel
Jeroen Goudsmit
  
wo 11.00-12.4537-44 BBL-103 CLZ
groep 2 ma 11.00-12.4538-44 BBL-106 CLZ Jan Rochel
Denise Tonissen
  
wo 11.00-12.4537-44 BBL-106 CLZ
groep 3 ma 11.00-12.4538-44 BBL-109 CLZ Doaitse Swierstra
Bram Schuur
  
wo 11.00-12.4537-44 BBL-109 CLZ
groep 4 ma 11.00-12.4538-44 BBL-112 CLZ Doaitse Swierstra
 
wo 11.00-12.4537-44 BBL-112 CLZ
Tentamen:
week: 40ma 30-9-20138.30-10.30 uurzaal: EDUC-BETA
week: 45ma 4-11-20138.30-10.30 uurzaal: EDUC-BETA
week: 1do 2-1-20148.30-10.30 uurzaal: EDUC-GAMMAaanvullende toets
Inhoud:In het vak imperatief programmeren hebben jullie kennis gemaakt met de taal Java. In die taal bestaat een programma uit opdrachten: doe dit, doe dat. In een functionele taal bestaat een programma uit functies zoals je die kent uit de wiskunde. Programma's schrijven in zo'n taal vergt een andere manier van denken en dat is precies waar we het in dit vak over gaan hebben. In concreto gaan we problemen oplossen met behulp van de functionele taal Haskell. Deze taal kent uitgebreide abstractiemogelijkheden waardoor programma's vaak bijzonder compact zijn. Over veel details, zoals berekeningsvolgorde en geheugenallocatie, hoef je je geen zorgen te maken. De nadruk ligt op wat en niet op hoe. Verder kent Haskell een uitgebreid typesysteem waarvan steeds meer elementen ook in andere talen worden opgenomen.

Recursie in functionele talen is de evenknie van lusconstructies (for, while) in Java. Het is de manier om programma's te schrijven die over een datastructuur wandelen of herhaalde berekeningen doen. Omdat functionele programma's geen variabelen kennen die van waarde kunnen veranderen tijdens de verwerking van het programma is het gemakkelijk redeneren over zulke programma's. We zullen laten zien hoe we op een systematische wijze programma's kunnen afleiden en transformeren, en hoe we eigenschappen kunnen bewijzen. Die eigenschappen kunnen we gebruiken om uitspraken te doen over de correctheid of om programma's te herschrijven. Als het programma recursieve functies bevat dan is tijdens bewijzen het begrip inductie nodig.
Literatuur:
  • Dictaat: Jeroen Fokker & Doaitse Swierstra, Functioneel programmeren (versie 2010-2011)
  • Haskell Report (toegankelijk via web pagina)
  • Haskell Library Definities (idem)
  • Happstack tutorial (via web)
  • Website van vak
Werkvorm:Per week:
  • 2*2 uur hoorcollege
  • 2*2 uur begeleid praktium/werkcollege (direct na hoorcollege)
Toetsvorm:Het vak wordt beoordeeld aan de hand van twee toetsen (T1,T2) en drie practica (P1,P2,P3). Het totaalcijfer voor de toetsen (T) is max (T2, (0.4*T1 + 0.6*T2), A) en het cijfer voor de practica (P) is (P1 + 2*P2 + 2*P3)/5 `max` 10. Het eindcijfer voor het vak is dan (T+P)/2 onder de voorwaarde dat P>=5 en T>=5.

Afronding gebeurt op halven boven de zes en op helen onder de zes, dus 5.5 wordt 6 en 5.4 wordt 5. Als een van de practikumcijfers ontbreekt, blijft het vak 'onvoltooid'. Er kan een aanvullende practicumopdracht worden gemaakt, die je kunt inzetten voor een van P1, P2 en P3 (om een onvoldoende of een ontbrekend cijfer te vervangen).

Aanvullend practicum vindt plaats aan het begin van periode 2. De aanvullende toets (A) vindt plaats halverwege periode 2. Deelresultaten van voorgaande jaren zijn niet inzetbaar.

Voor het overige zijn de regels zoals vermeld in het Onderwijs en Examenreglement van kracht.
Inspanningsverplichting voor aanvullende toets:Om aan de aanvullende toets te mogen meedoen mogen ten hoogste 4 werkcolleges gemist zijn.
wijzigen?