Department of Information and Computing Sciences

Departement Informatica Onderwijs
Bachelor Informatica Informatiekunde Kunstmatige intelligentie Master Computing Science Game&Media Technology Artifical Intelligence Human Computer Interaction Business Informatics

Onderwijs Informatica en Informatiekunde

Vak-informatie Informatica en Informatiekunde

Functioneel programmeren

Te lang geleden voor docent- en roosterinformatie
Website:website met extra informatie
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.

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. Eigenschappen bewijzen van programma's speelt een grote rol binnen dit vak. 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 en ook dit komt aan bod.
Literatuur:
  • Dictaat: Jeroen Fokker & Arjan van IJzendoorn, Functioneel programmeren (versie 2005-2006) Kosten: ongeveer 10 euro.
  • Haskell Report (toegangkelijk via web pagina)
  • Haskell Library Definities (idem)
  • Paper over Finger Trees (via website)
Werkvorm:Per week:
  • 2*2 uur hoorcollege
  • 2*2 uur werkcollege (voorafgaand aan hoorcollege)
  • 1*2 uur begeleid practicum
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. 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 vijf cijfers 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 4. De aanvullende toets (A) vindt plaats halverwege periode 4.

Inspanningsverplichting voor aanvullende toets:Om aan de aanvullende toets mee te mogen meedoen is moet:
  • ten minste aan een (1) eerdere toets zijn meegedaan
  • een mogelijk noodzakelijke aanvullende practicumopdracht voltooid zijn.
  • er aan de werkcolleges zijn deelgenomen (maximaal drie mogen gemist worden)
wijzigen?