bild
Skolan för
datavetenskap
och kommunikation

2D1373 Artificiella språk och syntaxanalys

Kursanalys, VT 2005

Författare: Mikael Goldmann, NADA

Kursdata

Kurs 2D1373, Artificiella språk och syntaxanalys 6p
Examination Tenta (2p), Labb (2p)
Genomförd Period 3, 2003/04
Föreläsningar 24 timmar (12 st)
Labbar 18 timmar (9 st)
Kurslitteratur En exempelsamling samt någon av
  1. Parsons: Introduction to compiler construction
  2. Appel: Modern compiler implementation (2a upplagan)
  3. Aho et al: Compilers -- principles, techniques and tools
Antal studenter 59
Ansvarig/
föreläsare
Mikael Goldmann
Gästföreläsare/
labbassistent
Lars Engebretsen

Sammanfattning

I år har huvudprojektet varit syntax- och typkontroll i Minijava (Appels exempelspråk). Detta innebär att den tydligare anknyter till 2D1375 genom att använda samma kursbok och de labbuppgifter som den kursen. Det tycks fungera ganska bra men det är även i år så att flera studenter inte genomfört denna del av kursen i tid. Detta projekt är betydligt mer allsidigt än i stort sett alla projekt från tidigare år, men också ganska omfattande. Många av de tidigare projekten krävde i och fär sig ocks˚ ganska mycket programmernade men av en mer repetitiv karaktär.

Studenter

Studenterna går i huvudsak tredje eller fjärde året av sin utbildning, huvudsakligen på D-linjen. Det finns också deltagare som går på SU, F-linjen eller är doktorander.

Nyckeltal

Av de som inte klarat tentan har 10 varken gjort labben eller gått upp på något tentatillfälle. 47 har klarat tentan, 33 är klara med labben och 31 är klara med hela kursen.

Prestationsgrad och Examinationsgrad (2004-05-24) är 68% respektive 53%.

Förmodligen beror detta till en del på att många tidigt valt att inte fullfölja kursen. Räknar man med att de 10 som inget gjort hoppat av kursen får man istället 82% respektive 63%. Liksom förra året är huvudproblemet att många inte redovisat labbuppgiften. Det finns ett bonussystem som belänar den som gör labben i tid (och dessutom gör en mindre extrauppgift). Tyvärr visar kursenkäten att vissa studenter inte känt till detta trots att det framgår av kursprogrammet.

Mål

Kursens mål är att ge
  • ge de teoretiska grunderna för definition och analys av programspråk och andra artificiella språk
  • ge förmåga att utveckla lämpliga notationer för beskrivning av olika typer av problem
  • ge förmåga att konstruera översättare från en notation till en annan
för att studenterna
  • ska känna till kraftfullheten och begränsningarna hos automater och formella språk
  • i praktiska situationer ska kunna specificera lämpliga inmatningsnotationer för datorprogram och konstruera analysatorer för dem.

Nytt för i år

Anpassningen till 2D1375 som inleddes förra året har nu genomförts fullt ut. Därmed har vi övergått till att använda Appel som enda kursbok. I år har vi också nöjt oss med att ta upp två uppsättningar verktyg snarare än fyra.

Undervisning

Undervisningen bygger på traditionella föreläsningar och frivilliga laborationer med handledarstöd.

Enkätsvaren tyder på att föreläsningarna fungerar bra. Någon har efterlyst att man ägnar lite mer tid åt att gå igenom de vertyg som används på kursen.

På många av labbtillfällena har det varit ganska glest. Men det har varit mer välbesökt än tidigare år. Det vore bra om ännu fler utnyttjade möjligheten att få handledning, men då skulle det eventuellt behövas en labbassistent (hittills har jag varit ensam).

Examination

Kursen har två delmoment: en tenta och en större labbuppgift. Om man gör en extrauppgift på labben och dessutom redovisar i tid så höjer det tentabetyget vid ordinarie tenta eller första omtenta.

Kurslitteratur

I år har vi helt övergått till att använda Appels bok (samma bok som 2D1375). Några studenter har använt tidigare års bok vilket leder till vissa problem eftersom notation och definitioner av vissa begrepp inte är exakt lika i de båda böckerna. Detta problem är antagligen övergående och bara av betydelse vid tentarättning.

Det finns också en Exempelsamling som innehåller problem med lösningar, men också ett kapitel med teori för formella språk. Tyvärr är det inte alla som inser hur användbart häftet är.

Studenternas arbetsbelastning

Inget tyder på att kursen skulle vara alltför omfattande, men tidigare omgångar erbjöd möjligheter att göra andra projekt som var enklare (men inte alls lika intressanta eller mångsidiga).

Förkunskaper

De formella förkunskapskraven verkar tillräckliga. Det skadar naturligtvis inte att även ha gått en kurs i stil med Algortimer, datastrukturer och komplexitet för att få en viss vana vid formella resonemang, men det går mycket bra att följa denna kurs ändå. I praktiken har dessutom nästan alla studenterna gått ADKn eller liknande kurs.

Verkligt kursinnehåll

Kursen har i stort sett följt den föreläsningsplanering som fanns på kurshemsidan.

Kommande förändringar

Det finns långt g˚ngna planer på att slå ihop 2D1373 och 2D1375 till en kurs i kompilatorkonstruktion. Därför går sannolikt 2D1373 för sista gången VT 2006. En tanke kan dock vara att ersätta applexen 2--4 med programmeringsuppgifterna i de fyra första kapitlen i Appels bok. Det skulle ge en bra start på projektet eftersom man då skulle kommit mer än halvvägs genom att lösa applexen.

Enkät

Sammanställning av svar.
Sidansvarig: Mikael Goldmann <migo@kth.se>
Uppdaterad 2005-12-19