Kursplan för Programspråk

Kursplan fastställd 2021-02-26 av programansvarig (eller motsvarande).

Kursöversikt

  • Engelskt namnProgramming language technology
  • KurskodDAT151
  • Omfattning7,5 Högskolepoäng
  • ÄgareMPALG
  • UtbildningsnivåAvancerad nivå
  • HuvudområdeDatateknik, Informationsteknik
  • InstitutionDATA- OCH INFORMATIONSTEKNIK
  • BetygsskalaTH - Mycket väl godkänd (5), Väl godkänd (4), Godkänd (3), Underkänd

Kurstillfälle 1

  • Undervisningsspråk Engelska
  • Anmälningskod 02133
  • Blockschema
  • Sökbar för utbytesstudenterJa

Poängfördelning

0112 Tentamen 6 hp
Betygsskala: TH
6 hp
  • 13 Jan 2022 fm J
  • 12 Apr 2022 fm J
  • 25 Aug 2022 em J
0212 Laboration 1,5 hp
Betygsskala: UG
1,5 hp

    I program

    Examinator

    Gå till kurshemsidan (Öppnas i ny flik)

    Behörighet

    Grundläggande behörighet för avancerad nivå
    Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från ovan krav.

    Särskild behörighet

    Engelska 6
    Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från ovan krav.

    Kursspecifika förkunskaper

    Kursen kräver:
    - Goda programmeringskunskaper i Haskell, Java, C eller C ++
    - God kännedom om något av programspråken Java, C eller C ++
    - Grundläggande färdigheter i Unix programmering (Shell-programmering)
    - Grundläggande kunskaper i datastrukturer och algoritmer

    Följande rekommenderas också:
    - Grundläggande kunskaper i logik (booleska operatorer, inferensregler)
    - Kännedom om funktionell programmering
    - Grundläggande kunskaper i assemblerprogrammering

    Syfte

    Syftet med kursen är att skapa förståelse för hur programmeringsspråk utformas, dokumenteras och implementeras. Kursen behandlar grundläggande tekniker och verktyg som behövs för att implementera interpretatorer (tolkar), och ger dessutom en introduktion till kompilatorer.

    Lärandemål (efter fullgjord kurs ska studenten kunna)

    • Använda reguljära uttryck för att definiera ett programmeringsspråks lexikala struktur, förklara hur ändliga automata fungerar, och implementera lexikala analysverktyg;
    • definiera syntaxen för programmeringsspråk med hjälp av kontextfria grammatiker, förklara principerna för LL och LR-parsning, samt implementera parsers med hjälp av standardverktyg;
    • definiera och implementera abstrakt syntax;
    • behärska tekniken för syntaxstyrd översättning och hur man implementerar för ett valfritt programmeringsspråk;
    • formulera typinferensregler och implementera typkontrollerare;
    • utforma regler för operativ semantisk och implementera interpreters (tolkar);
    • skriva enkla kodgeneratorer;
    • känna till grundläggande implementationsproblematik för både imperativa och funktionella språk;
    • Implementera polymorfa typkontroll med hjälp av unifiering;
    • Använda "closures" för att implementera funktionella programmeringsspråk.

    Innehåll

    Genom att implementera interpretatorer och kompilatorer lär du dig lösa praktiska implementationsproblem men även teori för formell semantik.
    Du kommer att lära dig om programspråkens grammatik när du implementerar syntaxanalys och om typsystem vid implementering av typkontrollerare.
    Genom att experimentera med språkutvidgningar får du en inblick i bra och dåliga sätt att konstruera programmeringsspråk.

    Organisation

    Undervisning ges i form av föreläsningar, övningar och laborationer med individuell handledning.

    Litteratur

    Information om litteratur ges på kursens hemsida före kursstart.

    Examination inklusive obligatoriska moment

    För att bli godkänd på kursen krävs godkänd skriftlig tentamen samt godkända laborationer. Baserat på tentamensresultatet ges betygen U,3,4 eller 5.

    Kursens examinator får examinera enstaka studenter på annat sätt än vad som anges ovan om särskilda skäl föreligger, till exempel om en student har ett beslut från Chalmers om pedagogiskt stöd på grund av funktionsnedsättning.