Functioneel programmeren

Functioneel programmeren

  • Informatica
  • IB1602
  • 5 EC
  • Vanaf € 352
  • Voor dit product gelden ingangseisen
Deze cursus heeft een vast startmoment. Kijk in het Jaarrooster wanneer de cursus van start gaat en wanneer de begeleiding is ingeroosterd.

Inhoud

In de cursus wordt de tweede editie van het Engelstalige tekstboek Programming in Haskell van Graham Hutton gebruikt. De programmeertaal wordt stapsgewijs geïntroduceerd en er wordt stilgestaan bij de belangrijkste concepten van de taal. Aan bod komen onder andere functies die recursief zijn (een functie die zichzelf aanroept), hogere-ordefuncties (een functie die een andere functie als parameter heeft) en functies waarin patroonherkenning wordt gebruikt om gevallen te onderscheiden. Het principe van currying en het partieel toepassen van functies met meerdere parameters wordt behandeld. Verder komen allerlei functies over lijsten langs en worden lijstcomprehensies geïntroduceerd; dit is een speciale taalconstructie om berekeningen met lijsten op een korte en intuïtieve manier op te schrijven.

Haskell heeft een krachtig typesysteem dat statisch de types van een programma controleert zonder dit programma uit te voeren. Met dit typesysteem kunnen vele soorten fouten in een programma vroegtijdig worden gedetecteerd. Alle types van een programma kunnen automatisch worden afgeleid, wat betekent dat het aantal verplichte typeannotaties voor een programmeur minimaal is. Toch is het wel een goede gewoonte om functietypes expliciet op te schrijven. Parametrische polymorfie (vergelijkbaar met Java Generics) en overloading van functies via typeklassen worden aan de orde gesteld. Ook leer je om via datatype-declaraties en typesynoniemen zelf nieuwe types te definiëren.

In de latere leereenheden komen nog enkele meer geavanceerde onderwerpen langs. Zo wordt gekeken naar de manier waarop input-output gerealiseerd kan worden in een taal waarin neveneffecten, zoals het wegschrijven van een bestand of het inlezen van een toetsaanslag, op een speciale manier plaatsvinden. In Haskell gebeurt dit met het wiskundige concept monad.
Verder wordt bestudeerd hoe expressies pas op het laatste moment uitgerekend worden (luie evaluatie) en waarom dit het mogelijk maakt om te werken met oneindige datastructuren. Als laatste wordt het principe van inductie uitgelegd om te redeneren over een programma en om simpele bewijzen mee op te stellen.

Naast het tekstboek is er een uitgebreid werkboek waarin de belangrijkste onderwerpen nog eens worden samengevat, moeilijke onderwerpen extra worden uitgelegd en waarin een veelheid aan opdrachten staat om zelf met de materie te oefenen. De cursus kent een bijzondere verplichting die bestaat uit twee practicumopdrachten. Beide opdrachten moeten met een voldoende worden afgesloten. Deze opdrachten maken het mogelijk om zelf aan de slag te gaan met de onderwerpen die zijn bestudeerd. De cursus wordt afgesloten met een schriftelijk openboektentamen over de hele stof van de cursus.

Ingangseisen

Aanmelden voor deze cursus kan pas nadat je de cursus Objectgeoriënteerd programmeren (IB1102) conform je online studiepad hebt afgerond, dan wel hebt vrijgesteld gekregen dan wel daarvoor bent ingeschreven (en je die cursus grotendeels bestudeerd hebt).

Toelichting aanmelden

De cursus wordt eenmaal per academisch jaar aangeboden.

Voorkennis

Enige ervaring met een andere programmeertaal, op het niveau van Objectgeoriënteerd programmeren (IB1102), is wenselijk. Elementaire kennis van functies en recursie, zoals dat wordt aangeboden in de cursus Logica, verzamelingen en relaties (IB0402), komt van pas.

Begeleidingsvorm

Deze cursus heeft een vast startmoment. Kijk in het Jaarrooster wanneer de cursus van start gaat en wanneer de begeleiding is ingeroosterd.

Bij de cursus worden online bijeenkomsten aangeboden in de periode van september t/m november.

Begeleidingsbijeenkomsten



Studiedag Informatica en Informatiekunde, Utrecht, onder voorbehoud
Kwartiel 1 - begeleider: dhr. N. Naus
vr 08-09-2023 / tijd ntb

Online-bijeenkomsten
Kwartiel 1 - begeleider: dhr. N. Naus
1. di 19-09-2023 / 19.00-21.00 uur
2. di 03-10-2023 / 19.00-21.00 uur
3. di 17-10-2023 / 19.00-21.00 uur
4. di 31-10-2023 / 19.00-21.00 uur

Docenten

dhr. dr. N. Naus (examinator).

Tentamenvorm

Digitaal groepstentamen met open vragen en een opdracht.

Tentamentoelichting

U dient zelf tijdig aan te melden voor een tentamen.

Tentamendata

Digitaal groepstentamen: 11-07-2024 14:00.
Opdracht: volgens afspraak.

Tentamenhulpmiddelen

'Schoon' tekstboek Programming in Haskell (G. Hutton)
'Schoon' werkboek Functioneel programmeren
Het online woordenboek
De online rekenmachine
Het online woordenboek t.b.v. ANS

Meer informatie

Meer informatie over de programmeertaal Haskell is te vinden op www.haskell.org.

Cursusmateriaal

De cursus bestaat uit een werkboek en een Engelstalig tekstboek: Programming in Haskell van Graham Hutton (2016, 2e editie).

Mediagebruik

Bij de cursus wordt uitgegaan van de GHC-compiler die makkelijk te installeren is met het Haskell-platform. Deze software is beschikbaar voor diverse besturingssystemen. Verder zijn er bouwstenen voor de cursus beschikbaar via de online leeromgeving.

Digitale leeromgeving

Bij de cursus hoort een cursussite in de online leeromgeving. Je vindt daar actuele studie-informatie, aanvullend cursusmateriaal en voorzieningen voor communicatie en discussie met docenten en medestudenten.