Declaratieve talen (B-KUL-G0Q45B)
Doelstellingen
De studenten maken grondig kennis maken met declaratieve talen. Hierbij ligt de nadruk op het praktisch gebruik van een drietal representanten van declaratieve talen. De studenten verwerven tevens inzichten in de basisprincipes van de uitvoeringsmechanismen van declaratieve talen.
Begintermen
- Logica, in het bijzonder eerste-ordepredicatenlogica.
- Kunnen programmeren.
Aard van het studiemateriaal
Presentatiesoftware
Handleiding
Handboek
Toledo
Plaats in het onderwijsaanbod
Onderwijsleeractiviteiten
1.0 sp. Declaratieve talen: verdieping (B-KUL-G0K93a)
Inhoud
Deze ola hoort samen met de ola van de hoorcolleges. In dit deel komt de derde declaratieve taal aan bod.
- Studie van een recente puur declaratieve programmeertaal die logische en functionele aspecten integreert, bv. Mercury
- Basisconcepten: modes, instantiaties, types, determinisme, parametrisch polymorphisme, declaratieve input / output, existentiële types
- Exploitatie van eigenschappen van Mercury voor het ontwerp van stabiele en betrouwbare software
- Implicaties voor een meer efficiente uitvoering
- Inzicht in de geschiedenis en de evolutie van declaratieve talen
Doelstellingen
Verdiepend inzicht in declaratieve talen.
3.25 sp. Declaratieve talen (B-KUL-G0Q45a)
Inhoud
Er komen een 3-tal representanten van declaratieve programmeertalen aan bod in deze cursus. De eerste 2 worden beschreven in deze ola en de derde in de verdiepende ola.
1. een logische programmeertaal
- basisconcepten: unificatie, procedurale en declaratieve lezing van een logisch programma, backtracking, selectiestrategie, negatie
- specificatie met behulp van Hornclauses
- Prolog: zuivere Prolog, ingebouwde predicaten, exceptions, modules
- programmeertechnieken: structuren met open einde, door falen aangedreven iteratie, continuaties, metavertolkers, definite clause grammars, cyclische datastructuren, delay, memoizatie
- bespreking van andere LPtalen: logische programma's met constraints zoals bijvoorbeeld beperkingen op eindige domeinen, optimalisatietechnieken in de context van CLP, constraint handling rules, Guarded Horn Clauses, Mercury, ...
2. een functionele programmeertaal, b.v. Haskell
- basisconcepten: functie, reductiestrategieën, call-by-need, lui/strikt
- Haskell: hogere-ordefuncties, mono- en polymorfe types, type classes, (un)currying
- programmeertechnieken: oneindige processen, closure, list comprehension, monaden, metavertolkers
- type-inferentie
- andere functionele talen: LISP, Scheme, ML ...
3. het schrijven van een uitgebreid programma in die talen
4. het plaatsen van de aangeleerde talen t.o.v. andere representanten van hetzelfde paradigma
Beschrijving leeractiviteit
Tijdens de lessen wordt gewerkt aan de hand van voorbeelden en worden de studenten aangezet om de inhoud van dit vak actief te verwerken onder andere door zelf kleine oefeningen op te lossen.
Studiemateriaal
Als aanvulling op de slides van de cursus kan bijkomend studiemateriaal geraadpleegd worden:
In de campusblibliotheek (didactische cluster van de CBA) kunnen de volgende handboeken geraadpleegd worden:
- PROLOG Programming for Artificial Intelligence, Ivan Bratko Addison Wesley, third edition 2001.
- Programming in Haskell, Graham Hutton, University of Nottingham, Cambridge University Press, January 2007.
Op Toledo worden links gegeven naar de officiele sites van de programmeertalen met inbegrip van links naar online-tutorials.
1.25 sp. Declaratieve talen: oefeningen & practica (B-KUL-G0Q46a)
Inhoud
De oefeningen worden afgestemd op het programmeren in de aangeleerde declaratieve talen.
Beschrijving leeractiviteit
Een tiental oefenzittingen waarin de studenten de aangeleerde stof verder verwerken door zelf programma's te schrijven in de aangeleerde talen. Ze doen dat in PC-labo's en onder begeiding van een assistent.
0.5 sp. Declaratieve talen: project (B-KUL-G0Q47a)
Inhoud
De practica worden afgestemd op het programmeren in de aangeleerde declaratieve talen.
Beschrijving leeractiviteit
De student maakt na elke oefenzitting individueel een oefening die hij binnen de 24 uur indient. Eenmalig wordt de oefening vervangen door een practicum (in te dienen na 2 weken). Omvang: 12 u voor de oefeningen en 12 u voor het practicum.
Er worden vanaf de tweede week van het semester 10 oefenzittingen gepland. Bij de opgave van een Prolog practicum kan de opgave normaal gezien uitgedeeld worden in week 5 of 6 (in te dienen na 2 weken). Bij de opgave van een Haskell practicum kan de opgave normaal gezien uitgedeeld worden in week 8 of 9 (in te dienen na 2 weken).
Evaluatieactiviteiten
Evaluatie : Declaratieve talen (B-KUL-G2Q45b)
Toelichting
De evaluatie bestaat uit 2 delen:
- Na elke oefenzitting krijgen de studenten een oefening die ze individueel maken en binnen de 24u indienen. Eenmalig wordt de oefening vervangen door een practicum. Dit deel telt mee voor 5 van de 20 punten.
- Schriftelijk examen van 4 uur tijdens de zittijd: gesloten boek, schrijven van programma's op een PC. Dit deel telt mee voor 15 van de 20 punten.
Niet tolereerbare tekorten: het schriftelijk examen tijdens de zittijd.
Voor de tweede zit telt het eerste deel van de evaluatie enkel mee als het voordelig is voor de student.
