Inhoud introductie Talen en ontleders
Introductie tot de cursus 1 2
3 4
5
6
6
Plaats en functie van de cursus 7 Inhoud van de cursus 7 2.1 Voorkennis 7 2.2 Leerdoelen 8 2.3 Opbouw van de cursus 8 Leermiddelen en wijze van studeren 9 Practicum 10 4.1 Practicumopdrachten 10 4.2 Practicumbegeleiding 10 Tentaminering 10 5.1 Schriftelijk tentamen 10 5.2 Bijzondere verplichting 10 Samenwerking met Universiteit Utrecht 11
Introductie tot de cursus
Introductie tot de cursus
Voor u begint met het bestuderen van de cursus Talen en ontleders willen wij u in deze introductie informeren over de bedoeling van de cursus, de opzet van het cursusmateriaal, de manier waarop u de cursus kunt bestuderen en de wijze waarop de cursus kan worden afgerond. U vindt in deze introductie dus nog geen echte leerstof, maar praktische informatie die u inzicht geeft in de aard en opzet van de cursus. 1
Plaats en functie van de cursus
De cursus Talen en ontleders is een cursus van het derde niveau met een studielast van 100 uur (3 studiepunten, 4,3 EC). De cursus is een verplicht onderdeel van de bacheloropleiding Informatica. De theorie van formele talen houdt zich bezig met het beschrijven van de structuur van talen. Dit kunnen natuurlijke talen zijn (Nederlands, Engels), maar evengoed programmeertalen zoals de taal Java. Als iemand een zin uit bijvoorbeeld het Nederlands wil vertalen in een andere taal, zoals het Engels, dan heeft die een grondige kennis nodig van zowel de structuur (syntaxis) als de betekenis (semantiek) van de twee talen. Als een vertaling door een computer moet worden uitgevoerd, dan moeten de syntaxis en semantiek op de een of andere manier formeel worden vastgelegd. Dat is voor natuurlijke talen een zeer lastige zaak. Van programmeertalen ligt de structuur wel vast, die volledig wordt beschreven door een grammatica. Vanuit deze beschrijving kunnen ontleders gegenereerd worden. Dat zijn programma’s die deze structuur herkennen en die programmacode kunnen controleren op syntaxis. Deze controle vormt de eerste stap van de vertaling van een programma geschreven in een hogere programmeertaal naar een programma in machinecode. In deze cursus komt theorie van formele talen aan de orde en wordt aandacht besteed aan het zelf ontwerpen van grammatica’s en aan het construeren van ontleders. 2
Inhoud van de cursus
2.1
VOORKENNIS
De cursus Talen en ontleders veronderstelt wiskundekennis op het niveau van de cursussen Discrete wiskunde A en Discrete wiskunde B. Voorts wordt kennis verwacht van de programmeertalen Java en Haskell. Dit is nodig om de behandelde algoritmen te begrijpen, om de toepassingen van de theorie te kunnen waarderen en om de practicumopdrachten te kunnen uitvoeren. Voor Java wordt voorkennis verwacht op het niveau van de cursus Objectgeoriënteerd programmeren met Java en voor Haskell op het niveau van de cursus Concepten van programmeertalen.
7
Talen en ontleders
2.2
LEERDOELEN
Na het bestuderen van de cursus wordt verwacht dat u – kunt aangeven wat een taal is en de belangrijkste eigenschappen van reguliere talen kunt noemen en bewijzen – de belangrijkste eigenschappen van contextvrije talen kunt aangeven – een grammatica kunt interpreteren, construeren en transformeren – kunt aangeven hoe een eindige automaat werkt en het verband kunt uitleggen tussen automaten, talen en grammatica’s – de werking van een parsergenerator en van parsercombinatoren kunt uitleggen en hiermee een ontleder voor een taal kunt construeren – praktische toepassingen van de theorie kunt omschrijven. 2.3
OPBOUW VAN DE CURSUS
De cursus bestaat uit drie blokken. Doordat gebruik wordt gemaakt van twee verschillende bronnen, het cursusmateriaal van de cursus Formele talen en automatentheorie en het dictaat van een cursus van de Universiteit Utrecht, heeft de cursus een hybride karakter. Blokken 1 en 2 zijn theoretisch van aard. In blok 3 wordt meer het accent gelegd op de toepassing van de theorie. Blok 1 studielast 11 uur
Het eerste blok wordt gevormd door blok 1 van de cursus Formele talen en automatentheorie. In dit blok wordt een inleiding gegeven tot het vakgebied. U krijgt een indruk van wat bedoeld wordt met (formele) talen en op welke verschillende manieren talen gerepresenteerd kunnen worden. We gaan in op het begrip algoritme en we laten zien dat er goed gedefinieerde problemen bestaan waarvoor geen algoritmen (kunnen) bestaan. De laatste leereenheid is wat formeler van aard. Hierin worden op wiskundige wijze het begrip taal gedefinieerd alsmede operaties op talen en bijbehorende eigenschappen.
Blok 2 studielast 33 uur
Het tweede blok wordt gevormd door blok 2 van de cursus Formele talen en automatentheorie. In dit blok worden reguliere talen behandeld. Dat zijn talen met een relatief eenvoudige structuur. We maken kennis met dit type talen door middel van de eindige automaten. Ook andere representatievormen voor dezelfde (reguliere) talen komen in dit blok aan de orde: de reguliere expressie en de rechtslineaire grammatica. Technieken om de ene representatie om te zetten naar de andere worden uitvoerig behandeld. Het blok wordt afgesloten met een leereenheid waarin een aantal toepassingen van de behandelde theorie wordt beschreven.
Blok 3 studielast 51 uur
Het derde blok wordt gevormd door het dictaat Grammars and Parsing van Universiteit Utrecht, aangevuld met elektronisch studiemateriaal. In dit blok staan contextvrije talen centraal. Dat zijn talen met een complexere structuur dan reguliere talen, die erg geschikt zijn om de syntaxis van programmeertalen te beschrijven. In dit blok staan ook ontleders centraal die op basis van een formele beschrijving van een (contextvrije) taal gebouwd kunnen worden. Ontleders worden gebruikt om de structuur van programmacode te controleren. Over ontleders moet u twee practicumopdrachten uitvoeren: een waarbij een ontleder automatisch gegenereerd wordt en een waarbij u zelf een ontleder moet programmeren.
8
Introductie tot de cursus
3
Leermiddelen en wijze van studeren
Cursussite
Wij raden u aan om regelmatig de cursussite te raadplegen. Doe dit in ieder geval voordat u begint met het bestuderen van de cursus. De informatie in het schriftelijk materiaal kan verouderd zijn of er kunnen aanvullingen zijn; de informatie op de cursussite is altijd actueel en heeft altijd betrekking op het huidige en/of komende studiejaar. De cursussite is alleen toegankelijk voor studenten met een geldige inschrijving. Op de cursussite vindt u de meest actuele informatie over de cursus, de begeleiding en de tentaminering. Bij de cursussite behoort een discussiesgroep waarin u vragen kunt stellen aan de studiebegeleiders en aan andere studenten.
Cursusmateriaal
Het cursusmateriaal bestaat uit de blokken 1 en 2 uit het cursusmateriaal van de cursus Formele talen en automatentheorie, het dictaat Grammars and Parsing van Universiteit Utrecht en het elektronische cursusmateriaal.
Formele talen en automatentheorie
De blokken 1 en 2 uit het cursusmateriaal van de cursus Formele talen en automatentheorie zijn opgenomen in cursusdeel 1 (met terugkoppeling in deel 3). Een aantal onderwerpen, alsmede een aantal bewijzen en opgaven zijn geen verplichte leerstof van deze cursus. U herkent deze facultatieve delen aan het kleinere lettercorps. Voorbeelden hiervan zijn paragraaf 8.3.2, het bewijs van stelling 5.1 en opgave 3.6. Cursusdeel 2 met de blokken 3 en 4 maakt geen deel uit van de leerstof. Hierin worden contextvrije talen op theoretische wijze gepresenteerd op analoge wijze als reguliere talen in blok 2. Dit deel kan gebruikt worden als naslagwerk en wordt voor de volledigheid meegeleverd.
Dictaat Grammars and Parsing
Uit het dictaat Grammars and Parsing moeten een aantal hoofdstukken bestudeerd worden. Welke hoofdstukken dat zijn, staat beschreven op de cursussite. In het dictaat wordt minder het accent gelegd op theoretische bewijzen. Wie hierin geïnteresseerd is, kan cursusdeel 2 van Formele talen en automatentheorie raadplegen. In het dictaat zult u ook soms geconfronteerd worden met notaties die iets afwijken van wat bij Formele talen en automatentheorie is gebruikt. Wees er bewust van, dan zal het nooit tot misverstanden leiden.
Cursussite
Op de cursussite staan de practicumopdrachten en een klein gedeelte van het cursusmateriaal
Eindtoets
De eindtoets dient als oefening voor het tentamen en is ook representatief voor het schriftelijke tentamen. Voorlopig wordt de eindtoets via de cursussite aangeboden.
Ontwikkelomgeving
Bij het cursuspakket wordt een cd-rom meegeleverd met daarop een versie van de teksteditor EditPlus en van de Haskell-interpretator Hugs98. Dat zijn de programma’s die u ook gebruikt hebt bij de cursus Concepten van programmeertalen. Installeer deze programma’s alleen als ze nog niet op uw computer aanwezig zijn. Voor de installatiehandleiding, zie de cursussite.
9
Talen en ontleders
Studieadvies
Om de cursus binnen de geprogrammeerde periode te kunnen bestuderen, inclusief het uitwerken van de practicumopdrachten, raden we u aan om ten minste 10 uur per week daarvoor te reserveren. Op de cursussite staat een planning voor het bestuderen van de cursus die u als leidraad kunt gebruiken. 4
Practicum
4.1
PRACTICUMOPDRACHTEN
Bij de cursus horen twee practicumopdrachten die u zelfstandig moet uitvoeren; zie ook paragraaf 5.2. De tekst van de opdrachten staat op de cursussite. Op de cursussite staat ook de planning voor het inleveren van de opdrachten. Voor de studielast van de practicumopdrachten is ervan uitgegaan dat u over voldoende voorkennis beschikt, dat u voldoende programmeervaardigheid hebt en dat u de bijbehorende theorie van de cursus goed bestudeerd hebt. Wij raden u uitdrukkelijk aan om de practicumopdrachten uit te voeren tijdens het bestuderen van de cursus, op het op de cursussite voorgeschreven moment. Bij het schriftelijk tentamen zal ervan worden uitgegaan dat u de opdrachten reeds hebt gemaakt. 4.2
PRACTICUMBEGELEIDING
Een keer per jaar, in de periode waarin de cursus voor opleidingsstudenten in het studiejaar is geprogrammeerd, kunt u elektronisch begeleiding krijgen bij de uitvoering van de practicumopdrachten. Dan kunt u hulp en advies krijgen bij de uitvoering van de opdrachten. Informatie over de organisatie van het practicumbegeleiding vindt u op de cursussite. 5
Tentaminering
De cursus wordt afgesloten met een schriftelijk tentamen. Bij de cursus hoort ook een bijzondere verplichting. U bent geslaagd voor de cursus als uw cijfer voor het schriftelijke tentamen 6 of hoger is en als u voldaan heeft aan de bijzondere verplichting. 5.1
SCHRIFTELIJK TENTAMEN
Het schriftelijk tentamen is een open-boektentamen van drie uur. Het is toegestaan om tijdens het tentamen gebruik te maken van het cursusmateriaal. De tentamendata zijn te vinden op de betreffende webpagina’s en in de Studiegids. 5.2
BIJZONDERE VERPLICHTING
Als bijzondere verplichting geldt dat u de twee practicumopdrachten moet inleveren. Elke opdracht wordt beoordeeld met voldoende/onvoldoende. U hebt voldaan aan de bijzondere verplichting als elke opdracht met voldoende is beoordeeld.
10
Introductie tot de cursus
6
Samenwerking met Universiteit Utrecht
Deze cursus is ontwikkeld in het kader van een samenwerkingsverband tussen het Department of Information & Computer Sciences (ICS) van Universiteit Utrecht en de faculteit Informatica van de Open Universiteit Nederland waarbij het uitwisselen van cursusmateriaal centraal staat. Aansluitend op deze cursus zal, ook in samenwerking met Universiteit Utrecht, nog de cursus Taalimplementatie worden ontwikkeld. In de cursus Taalimplementatie komen vele aspecten van het implementeren van programmeer- of domeinspecifieke talen aan bod. De cursus bouwt voort op de cursus Talen en ontleders en zal onder andere gebruikmaken van de parser combinators die in het dictaat Grammars and Parsing worden geïntroduceerd.
11