Nada

Kursanalys för Artificiella språk och syntaxanalys, Läsåret 01/02

Författare: Lars Engebretsen, NADA

Nedan följer en kursanalys av kursen Artificiella språk och syntaxanalys. I texten refereras till en webbaserad enkät gjord med ACE. Enkäten har hittills fyllts i av 30 personer, vilket tyvärr är för få för att man ska kunna dra säkra slutsatser. Det finns en länk till enkätresultaten i slutet av detta dokument.

Kursdata

Kurs2D1373, Artificiella språk och syntaxanalys, 4p
ExaminationTentamen (2p), Laboration (2p)
Kursen genomfördVT 2002
Föreläsningar 24 timmar (12 tillfällen à 2 timmar)
Bokad terminalsalstid 12 timmar (6 tillfällen à 2 timmar)
Kurslitteratur Introduction to compiler construction (Parsons) + kursbunt
Antal studenter 63 (varav 5 varken har gått upp på någon tentamen eller redovisat laborationsuppgiften)
Kursansvarig/föreläsareLars Engebretsen

Sammanfattning

De studenter som svarat på enkäten är nöjda med vad de betraktar som en medelsvår till ganska lätt kurs. Jämfört med tidigare år är relativt många studenter klara även med laborationsdelen.

Studenter

Studenterna går i huvudsak tredje eller fjärde året av sin utbildning. De 63 som registrerat sig är fördelade enligt

Linje DEFIMT MD/SUFRIST/SU
Antal 4823112 24

Nyckeltal

Totalt har 63 studenter registrerat sig genom att köra res. Av dessa hade 5 sedan hoppat av (varken gått upp på ordinarietentan eller första omtentan eller redovisat laborationsuppgiften) och räknas inte med i statistiken nedan.

Datum #TEN1 #LAB1 #Klara Prestationsgrad Examinationsgrad
2002-03-07 40 4 438% 7%
2002-03-28 40352265%38%
2002-04-02 53353376%57%
2002-04-12 53403880%66%
2002-08-15 56403983%67%
2002-08-29 56484790%81%
Ordinarie tentamen ägde rum 2002-03-07 och påskperiodens omtentamen 2002-04-02. Den sista dagen för att få bonus för sin projektuppgift var 2002-03-28 och dag för restredovisningar i påskperioden var 2002-04-12. Omtemtamen i augustiperioden ägde rum 2002-08-15 och restredovisningar ägde rum 2002-08-29.

Mål

Kursens mål är att

för att studenterna

Jag ägnade halva första föreläsningen åt att motivera kursinnehållet med återkoppling till kursens mål ovan. Det verkar ha fallit väl ut eftersom 90% av de som svarat på enkäten anser att de från början fått målen klara för sig.

Nytt för i år

Bonussystemet reviderades ännu en gång. Det som tidigare var labb 1 till 4 blev nu frivilliga uppgifter, och de som redovisade en väl godkänd laboration senast tre veckor efter ordinarietentan fick som slutbeyg på kursen sitt tentamensbetyg plus ett givet att de hade klarat antingen ordinarietentan eller första omtentan (SU-studenter fick VG istället för G). Syftet med detta system var dels att motivera studenterna att bli klara i tid med kursen och dels att premiera de studenter som är duktiga implementatörer men presterar svagt på tentamen. Denna nymodighet togs i stort sett emot väl av studenterna, som både uppskattade att få frihet under eget ansvar och att prestationen på laborationen kunde påverka slutbetyget på kursen. Några studenter uttryckte osäkerhet över begreppet "väl godkänd laboration" vilket jag har full förståelse för. I kurs-pm skrev jag

Betyget »väl godkänd» på projektuppgiften utdelas till lösningar som är väl strukturerade, väl genomtänkta och väl genomförda. Det är alltså i första hand excellens inom uppgiften som premieras och inte mängden producerad kod eller uppgiftens svårighet.
Kanske borde detta göras mer tydligt om samma bonussystem används igen nästa år.

Det är fortfarande såpass många studenter som arbetar i C att man inte kan ta bort C-versionen av laborationerna helt och hållet, men förmodligen bör man till nästa år i princip enbart prata om Java-versionen på föreläsningarna.

Jag gjorde om sista föreläsningen och berättade då om en helt annan tillämpning av delar av kursmaterialet: Grammatiker som datakomprimeringsmetod.

Undervisning

Förutom den sista föreläsningen (se ovan) har föreläsningarna har haft samma disposition som tidigare år, och har fungerat bra. Det har i allmänhet varit gott om tid. OH-bilder har använts ganska sparsamt till förmån för svarta tavlan.

Några studenter saknade papperskopior på de exempel jag visade på hur verktygen Bison/Cup och Flex/JFlex användes. Detta bör nog ingå i kursbunten till nästa år, eller så drar man helt enkelt ner på den delen av undervisningen till förmån för självstudier.

Jag var ensam handledare på den schemalagda terminalsalstiden. Belastningen var såpass låg att jag kunde hjälpa alla direkt utom någon enstaka gång.

Examination

Kursen examineras med en skriftlig tentamen och en laborationsuppgift. På tentamen tillåts inga hjälpmedel. Den är avsedd att kontrollera de teoretiska kunskaperna medan de praktiska examineras på labbarna.

Kurslitteratur

Kurslitteraturen består av kursboken av Parsons (nämnd ovan) och en kursbunt bestående huvudsakligen av ett kompendium med lösta exempel och handledningar till verktyg för parserkonstruktion. Kompendiet innehåller också peken för de fyra inledande frivilliga laborationerna.

De flesta tycker Parsons bok är ganska bra och den fungerar relativt väl i kursen. Det finns några områden där boken lämnar en del att önska, framför allt i kapitlet om "Bottom-up parsing". Den kritik som framkommer i enkäten handlar mest om att man vill ha en mer avancerad bok. Ett alternativ är i så fall den så kallade "drakboken" av Aho, Sethi och Ullman, men den är onödigt detaljerad och väl svårläst för många kursdeltagare, även om en del är mycket förtjusta i den. Tyvärr kom kursboken mycket sent till bokhandeln. Jag var dessutom ute lite väl sent med att annonsera kurslitteratur på kursens webbsida och därför fanns det i praktiken begränsad möjlighet för studenterna att själva beställa boken via internet.

De flesta som använder exempelsamlingen tycker den är bra och nästan alla tycker att den är bra eller hyffsad. Eftersom Java-versionen av laborationerna var nya för i år var det tyvärr en del fel i peken; dessa fel är nu åtgärdade.

Det är något fler som antingen inte har använt eller inte uppskattat det övriga materialet i kurbunten (manualer till verktyg för lexikal och syntaktisk analys). Å andra sidan är de flesta kommentarer om manualerna positiva i enkäten. Kanske borde man till nästa kursomgång dela upp kursbunten i två delar: övningshäfte samt manualer?

Studenternas arbetsbelastning

Någon tidsstudie har inte gjorts, men genom enskilda samtal har jag fått uppfattningen att den obligatoriska labbuppgiften kan ta väldigt olika tid för olika studenter. Kanske är det delvis en fråga om programmeringsvana, men det kan också vara så att vissa studenter kommer in rätt i uppgiften direkt medan andra hamnar på fel spår. Det är dessutom ganska stor skillnad i svårighet på de föreslagna uppgifterna (studenten väljer själv en uppgift), och kanske bör det markeras tydligare vilka uppgifter som är rejält arbetskrävande. Uppgifterna har också varit med ett tag vid det här laget och ett antal nya uppgifer skulle behövas. Jag lade till en ny och en nygammal uppgift i år, men ett par till skulle inte skada.

Många tycker att kursen är lätt men samtidigt tycker i princip alla att den passar ganska bra som fyrapoängskurs. En del studenter efterfrågar en fortsättningskurs i formella språk.

Att projektuppgiften kommer ganska sent i kursen är ett problem eftersom mycket få personer hinner börja på den i period 3. Samtidigt är det svårt att tidigarelägga projektet eftersom det bygger på sådant man lär sig ganska sent i kursen.

Förkunskaper

Nästan alla studenter har full tillräckliga förkunskaper. En del är lite ovana att programmera men de kommer igång kanska bra ändå. Ett mycket litet antal har svårt att självständigt producera ett välskrivt och fungerande program, och några har svårt att föra ett teoretiskt resonemang, men på det stora hela är de som börjar på kursen väl förberedda.

Verkligt kursinnehåll

Vi har i stort sett hållit oss till föreläsningsplaneringen i kursbeskrivningen (se bilaga). Följande saker kan de flesta studenterna bra efter genomgången kurs:

En del studenter lär sig även att bevisa att ett givet språk inte är reguljärt samt att föra matematiskt sunda resonemang kring formella språk. Pumping-lemmat för reguljära språk har behandlats som hastigast (vi har ofta använt skräddarsydda varianter för det lilla fåtal språk vi visat vara icke-reguljära), och motsvarande lemma för kontext-fria språk har inte berörts alls.

Kommande förändringar

Till nästa år bör man nog prata mycket lite om C på föreläsningarna och koncentrera sig på Java.

En annan sak som förmodligen vore bra för studenterna är att lägga upp dokument på nätet som illustrerar torrkörning av de olika algoritmerna i kursen. På detta sätt skulle studenterna få stöd vid läsningen av kursboken.

Bilagor

Exempel på tentor finns på kursens hemsida.
Enkätsvar
Kursbeskrivning

^ Upp till kurssidan.


Sidansvarig: <enge@nada.kth.se>
Senast ändrad 18 april 2002
Tekniskt stöd: <webmaster@nada.kth.se>