6 ECTS credits
150 u studietijd

Aanbieding 2 met studiegidsnummer 4021363FNR voor alle studenten in het 2e semester met een gespecialiseerd master niveau.

Semester
2e semester
Inschrijving onder examencontract
Niet mogelijk
Beoordelingsvoet
Beoordeling (0 tot 20)
2e zittijd mogelijk
Ja
Onderwijstaal
Nederlands
Faculteit
Faculteit Wetenschappen en Bio-ingenieurswetensch.
Verantwoordelijke vakgroep
Computerwetenschappen
Onderwijsteam
Wolfgang De Meuter (titularis)
Onderdelen en contacturen
26 contacturen Hoorcollege
26 contacturen Werkcolleges, practica en oefeningen
150 contacturen Zelfstudie en externe werkvormen
Inhoud

AANBEVOLEN VOORKENNIS

Naast kunnen programmeren op voldoende hoog niveau is er voor deze cursus in principe geen voorkennis vereist. Basiskennis over hogere orde programmeren zoals dat gebeurt met first-class functies in Scheme, Ruby, Clojure, Python, Prolog, Erlang, Scala of Lisp is echter een groot pluspunt. Bovendien wordt een basiskennis "theorie van programmeertalen" verondersteld zoals die in een standaard cursus “Logica en Formele Systemen” en “Automaten en Berekenbaarheid” aangeboden wordt.

 

INHOUD

  • Introductie tot Haskell en Functioneel Programmeren, Hogere-orde functies.
  • Algebraïsche Datatypes, Getallen, Strings, Tupels, Lijsten.
  • Type Classes: definitie in instantiatie.
  • Equational Reasoning: Inductiebewijzen over functionele programma’s, fusie-wetten.
  • Type Classes: implementatie en variaties
  • Invoer en uitvoer in de IO-monad, random getallen.
  • Functors, Applicative Functors, Monoids.
  • Monads en Monad Transformers: definitie, wetten ,implementatie, taxonomie van monads, de IO monad.
  • Parsers, Parser Combinators: definitie en gebruik.
  • Concurrent Programmeren: de par-functie, threads in de IO monad, STM.
  • Hindley-Milner typering: definitie en inferentie
Studiemateriaal
Digitaal cursusmateriaal (Vereist) : All transparencies and all the code will be provided to the students, Canvas
Praktisch cursusmateriaal (Aanbevolen) : Functional Programming, Many standard textbooks on functional programming are available. They will be referred to during the lectures.
Bijkomende info

Alle transparanten en besproken code zijn via het Canvas systeem beschikbaar gesteld voor de studenten. Er zijn verschillende standaardwerken voorhanden. Grote stukken van de cursus zijn echter gebaseerd op "Introduction to Functional Programming using Haskell" van Miran Lipovaca.

 
Leerresultaten

Algemene competenties

Kennis en inzicht: In deze cursus wordt een voortgezette studie van functioneel programmeren behandeld. Functionele programmeertalen zijn programmeertalen zonder toekenningen (t.t.z. = of set!), zonder sequentie (t.t.z. begin of { }) en zonder standaard I/O faciliteiten aangezien deze laatste niets anders zijn dan toekenningen op globale invoer- en uitvoertoestandsvariabelen. Door deze beperkingen hebben functionele programmeertalen een aantal wetenschappelijke voordelen t.o.v. imperatieve talen. Langs de andere kant eisen deze beperkingen een radicaal verschillende manier van programmeren. Het doel van de cursus bestaat er enerzijds in van een overzicht te geven over de programmeertechnieken die gebruikt worden om in zulke "pure" talen toch realistische software te schrijven. Anderzijds is het de bedoeling een inzicht te verschaffen in de wetenschappelijke voordelen die voortvloeien uit de restricties van deze talen. 

Toepassing van kennis en inzicht: Studenten moeten de opgedane kennis concreet kunnen toepassen bij het schrijven van software in een functionele programmeertaal. Het vak toetst dit a.d.h.v. een programmeerproject.

Oordeelvorming: Studenten dienen een correct oordeel te kunnen vormen over de toepasbaarheid van functioneel programmeren in een concrete situatie. Eenmaal toepasbaar, moet de rol van (de afwezigheid van) sterke typering in de keuze van hun programmeertaal kunnen verantwoord worden.

Communicatie: Studenten dienen de keuzes die ze gemaakt hebben tijdens de uitvoering van een project mondeling te kunnen verdedigen en toelichten op een beredeneerde wijze.

Leervaardigheden: Bedoeling is om de student vertrouwd te maken met twee functionele programmeertalen die voldoende representatief zijn opdat hij/zij gewapend is om andere talen te kunnen classificeren en opdat hij/zij voldoende programmeerervaring heeft om geavanceerde topics in FP te kunnen begrijpen.

Beoordelingsinformatie

De beoordeling bestaat uit volgende opdrachtcategorieën:
Examen Mondeling bepaalt 50% van het eindcijfer

Examen Schriftelijk bepaalt 50% van het eindcijfer

Binnen de categorie Examen Mondeling dient men volgende opdrachten af te werken:

  • Oral theorical examination met een wegingsfactor 1 en aldus 50% van het totale eindcijfer.

    Toelichting: The theoretical part consists of an oral exam about the topics discussed.

Binnen de categorie Examen Schriftelijk dient men volgende opdrachten af te werken:

  • Written practical exam met een wegingsfactor 1 en aldus 50% van het totale eindcijfer.

    Toelichting: The practical part consists of a written exam in which the Haskell programming skills of the students are tested.

Aanvullende info mbt evaluatie

Het examen bestaat uit een theoretisch en een praktisch gedeelte. Het theoretische gedeelte omvat een mondelinge overhoring van de behandelde onderwerpen. Het praktische gedeelte bestaat uit het uitvoeren van een programmeerproject waarin de student zijn programmeervaardigheid Haskell moet aantonen. Beide delen zijn even belangrijk in de eindbeoordeling. Afwezigheid bij 1 van de delen impliceert afwezigheid op het vak.

 
Toegestane onvoldoende
Kijk in het aanvullend OER van je faculteit na of een toegestane onvoldoende mogelijk is voor dit opleidingsonderdeel.

Academische context

Deze aanbieding maakt deel uit van de volgende studieplannen:
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Artificiële Intelligentie
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Multimedia
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Software Languages and Software Engineering
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Data Management en Analytics
Educatieve master in de wetenschappen en technologie: computerwetenschappen (120 ECTS, Etterbeek)