Göm menyn

TDP007 Konstruktion av datorspråk

Kursinformation läsåret 2013/2014


1. Syfte och mål

Det övergripande målet är att studenterna ska bli bättre på att använda olika programmeringsspråk och även konstruera egna språk. För att uppnå detta kommer vi att titta på olika typer av datorspråk, hur man definierar dem och hur man bygger verktyg för dem. Genom att studera principer för hur datorspråk är uppbyggda blir man bättre på att utnyttja de språk man redan kan, men också bättre på att i framtiden välja ett språk som passar det problem man arbetar med.


2. Innehåll

Kursen introducerar och använder det objektorienterade scriptspråket Ruby. Det är ett modernt språk som innehåller flera intressanta konstruktioner, men det ger oss också goda möjligheter att illustrera hur man kan bygga olika typer av verktyg för att hantera språk.

Kursen kan grovt delas in i fyra delar. Till varje del hör en uppsättning laborationsuppgifter som ska redovisas vid ett seminarium.

  • Den första delen behandlar programspråket Ruby och de grundläggande konstruktionerna. Genom att lösa några mindre uppgifter bekantar vi oss med språket och arbetssättet vid seminarierna.
  • Den andra delen behandlar datorspråk som inte i första hand används för program, utan mestadels för att märka upp information. Vi kommer att titta på hur man använder reguljära uttryck för att hitta information i text, samt vad XML är och hur man kan använda det.
  • Den tredje delen behandlar tekniker för att skapa så kallade domänspecifika språk (DSL) i Ruby. Vi tittar också på hur man mer generellt kan parsa språk, dvs hur man analyserar och tolkar källkod.
  • Den fjärde och sista delen behandlar olika mindre vanliga konstruktioner. Framför allt kommer vi att titta på en typ av deklarativ programmering där man arbetar med constraints.

3. Organisation

Kursen kommer löst att samordnas med TDP019 Projekt: Datorspråk, eftersom de behandlar samma område. Det kommer dock inte funka helt och hållet så att TDP007 är en teorikurs och TDP019 en kurs där man tillämpar teorin. Snarare kommer det vara så att vi i starten av båda kurserna kommer att försöka ge så mycket teori som behövs för att man inom ramen för projektkursen ska kunna börja arbeta med att utveckla ett helt eget språk. TDP007 kommer att följa ett delvis annat spår där vi tittar på olika typer av språk och aspekter av att implementera dem.

Kursen Konstruktion av datorspråk bedrivs huvudsakligen genom att studenterna i en serie laborationer får analysera och lösa problem relaterade till konstruktion av datorspråk. Föreläsningar och seminarier hålls i vanliga laborationssalar för att underlätta dialog och direkt kommunikation.

Vi kommer att dela in er i grupper om två som kommer att utföra laborationsmomenten. Det är inte kritiskt att ni fullt ut löst uppgifterna ni får ut, men huvudsaken är att era lösningar ska fungera väl som grund för seminarierna, vilket innebär välstrukturerad och välkommenterad kod. Vi kommer att underkänna lösningsansatser som är illa strukturerade och inte går att förstå. Inför varje seminarie kommer ni att lämna in lösningar i ett webbaserat system där ni ska ladda upp alla de filer ni arbetat med inför seminariet. Ni kommer även få tillgång till filer från andra grupper som ni själva kan ladda ner för att opponera på.

Ni kommer att föras in i WebReg-systemet för att vi ska kunna bokföra era resultat under seminarierna och även ha underlag för att distribuera lösningar inför seminarierna. Gruppindelningen kommer att vara slumpmässig för att ni ska få möjlighet att arbeta med flera olika sorters människor. Era betyg sätt dock individuellt efter datortentamina.

Genom hela kursen läggs stor vikt vid den egna reflektionen kring de program man har skrivit. Det är i vissa avseenden viktigare att kunna prata om sitt program än att det är fullständigt korrekt.


3. Omfattning

Undervisningen består av 8 föreläsningar, 14 laborationer och 4 seminarier. Därutöver tillkommer två duggor (två timmar vardera), alternativt en tenta (fyra timmar). Duggorna och tentan görs vid dator.


4. Examination

Kursen består av två poänggivande moment. LAB1 (2hp) utgörs av laborations- och seminarieserien med tillhörande uppgifter. DAT1 (4hp) utgörs av duggorna eller tentan. Betyget baseras endast på det senare momentet. Mer information om förutsättningarna för examinationen finns på examinationssidan.


5. Kurslitteratur

Som huvudbok för Ruby kommer vi att använda följande bok:

  • Thomas, Dave (2013) Programming Ruby 1.9 & 2.0: The Pragmatic Programmers' Guide The Pragmatic Bookshelf, ISBN 9781937785499

Vi kommer inte att följa den särskilt noga, utan den tjänar mest som referensbok för språket Ruby. Det innebär att alternativa böcker om Ruby säkert funkar lika bra. Den föregående versionen av samma bok funkar alldeles utmärkt. Om du skaffar en äldre begagnad bok, se åtminstone till att den täcker version 1.8 av Ruby.


6. Personal


7. Information

Kursens webbplats har adressen http://www.ida.liu.se/~TDP007 och där kan man hitta mer information om de olika delmomenten. Kompletterande information kommer att skickas till kursens e-postlista som har adressen tdp007-vt2014@student.liu.se. Alla studenter som är registrerade är automatiskt med på en av dessa listor.

Alla studenter förväntas läsa sin e-post och besöka kurswebben regelbundet.


Sidansvarig: Peter Dalenius
Senast uppdaterad: 2014-01-19