Deze website gebruikt cookies (en daarmee vergelijkbare technieken) om het bezoek voor u nog makkelijker en persoonlijker te maken. Met deze cookies kunnen wij en derde partijen uw internetgedrag binnen en buiten onze website volgen en verzamelen.
Hiermee kunnen wij en derde partijen advertenties aanpassen aan uw interesses en kunt u informatie delen via social media.
Klik op 'Ik ga akkoord' om cookies te accepteren en direct door te gaan naar de website of klik op om uw voorkeuren voor cookies te wijzigen. Bekijk onze privacyverklaring voor meer informatie.
$altText
Functioneel programmeren
Informatica en informatiekunde | 5 studiepunten (EC) | Voor dit product gelden ingangseisen
Code IB1602
Prijsindicatie € 324
Deze cursus heeft een vast startmoment. Kijk in het Jaarrooster wanneer de cursus van start gaat en wanneer de begeleiding is ingeroosterd.

Algemeen

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 komt 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 parametriseren 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 leert u 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 (lazy 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.

Aanmelden

Ingangseisen

Aanmelden voor deze cursus kan pas nadat u de cursus Objectgeoriënteerd programmeren (IB1102) heeft afgerond of daarvoor bent ingeschreven of vrijgesteld conform uw online studiepad.

Toelichting aanmelden

Deze cursus is reeds gestart. Aanmelden in het lopende academisch jaar is niet meer mogelijk.

De cursus wordt éénmaal per academisch jaar aangeboden.

Voorkennis

Enige ervaring met een andere programmeertaal, op het niveau van Geavanceerd objectgeoriënteerd programmeren in Java 1, is wenselijk. Elementaire kennis van functies en recursie, zoals dat wordt aangeboden in de cursus Logica, verzamelingen en relaties, komt van pas.

Begeleiding

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


Online bijeenkomsten
Kwartiel 1 - begeleider: dhr. T. van Laarhoven
1. di 03-09-2019 / 19.00-21.00 uur
2. di 17-09-2019 / 19.00-21.00 uur
3. di 01-10-2019 / 19.00-21.00 uur
4. di 15-10-2019 / 19.00-21.00 uur
5. di 29-10-2019 / 19.00-21.00 uur

Docenten

Dhr. dr. T.M. van Laarhoven.

Bereikbaarheidsoverzicht

Bereikbaarheidsinformatie docenten/examinatoren

Tentamen

Tentamenvorm

Regulier schriftelijk tentamen bestaande uit open vragen (ov) en een opdracht.

Tentamentoelichting

U dient zelf tijdig aan te melden voor een tentamen.

Tentamendata

Schriftelijk tentamen: 04-02-2020, 09-07-2020.
Opdracht: volgens afspraak.

Tentamenhulpmiddelen

Een 'schoon' verklarend Nederlands woordenboek (op eigen risico)
Een schoon exemplaar van het gedrukte cursusmateriaal

Meer info

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 digitale leeromgeving.

Digitale leeromgeving

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