Functioneel Programmeren 2

Inleiding

Functioneel programmeren is een stijl van programmeren die gebaseerd is op het wiskundige concept “functie”. Door gebruik te maken van (hogere orde) “pure” functies, algebraïsche datastructuren en een sterk maar tevens flexibel typeringssysteem ontstaat een krachtige programmeertaal waarin op compacte en inzichtelijke wijze berekeningen kunnen worden uitgedrukt. Het goed doordachte onderliggende wiskundige berekeningsmodel (lambda-calculus, term-herschrijven) maakt het mogelijk over programma’s te redeneren met behulp van eenvoudige wiskundige technieken zoals substitutie en volledige inductie.

Functionele talen spelen al decennia een vooraanstaande rol in het informaticaonderzoek naar nieuwe (programmeertaal)concepten. Vanwege hun grote uitdrukkingskracht worden ze in toenemende mate gebuikt voor het ontwikkelen van complexe software systemen.

In deze vervolgcursus worden technieken bestudeerd die in bovenstaande context relevant zijn: het construeren van programma's met zij-effecten middels uniqueness typering en monads; het mengen van statische en dynamische typering middels dynamics, de relatie met lambda-calculus en combinatorische logica, en de constructie van interactieve grafische programma's.

Leerdoelen

Aan het eind van de cursus kunnen studenten:

  • Een gegeven probleem oplossen door middel van programma geschreven in een moderne functionele taal zoals Clean of Haskell.
  • Voor een gegeven probleem een qua tijd- en ruimtegedrag geschikte datastructuur kiezen.
  • Moderne programmeertaalconcepten kennen en inzetten, zoals hogere-orde functies, polymorfie, overloading, recursieve algebraïsche datastructuren zoals lijsten en bomen, alsmede monads en uniqueness typing voor het integreren van zij-effecten, en dynamic types voor de combinatie van statische typering en dynamische typering.

Onderwerpen

file I/O; uniqueness typering; monads; state monad; type constructor classes; dynamic typing; lambda-calculus; combinatorische logica.

Werkvormen

  • 32 uur computerpracticum
  • 16 uur hoorcollege
  • 8 uur werkcollege
  • 28 uur zelfstudie

Toelichting werkvormen

In het hoorcollege wordt de stof behandeld en besproken.
Er is een practicum waarin de student zelf actief aan de slag gaat met de stof.
Bij het practicum is een begeleidend werkcollege waarin opdrachten behandeld worden, en vragen over de stof gesteld kunnen worden.
We maken gebruik van de state-of-the-art functionele programmeertaal Clean.

Deelname aan het practicum is verplicht. Opdrachten moeten serieus worden ingeleverd. Studenten krijgen feedback van student-assistenten over de kwaliteit van een deel van hun uitwerkingen. Deze beoordeling is niet in de vorm van een cijfer.

Toetsvorm

Verplicht practicum. Schriftelijk eindtentamen is gesloten boek.

Vereiste voorkennis

De programmeerlijn zoals die in de bachelor door informatica aangeboden wordt, of equivalente voorkennis, alsmede Functioneel Programmeren 1.

Literatuur


Vakcode
NWI-IBC030
Studiepunten
3 ec
Periode
vierde kwartaal

Docenten

Opgenomen in

  • Bachelor Informatica