NDAB16006U  Implementering af programmeringssprog (IPS)

Årgang 2017/2018
Engelsk titel

Implementation of Programming Languages (IPS)

Uddannelse

Bacheloruddannelsen i datalogi

Kursusindhold

 

Formål: At give de studerende indsigt i, hvordan programmer skrevet i højniveausprog implementeres på en computer.

I undervisningen gennemgås forskellige elementer af fortolkning og oversættelse af programmeringssprog:
Leksikalsk analyse, syntaksanalyse, typecheck, fortolkning, kodegenerering, registerallokering og lagerhåndtering. De grundlæggende metoder til implementering af disse elementer gennemgås, inklusive brug og virkemåde af semi-automatiske værktøjer.

I forbindelse med leksikalsk analyse og syntaksanalyse vises det,
hvordan beskrivelser, der er bekvemme for mennesker (hhv. regulære udtryk og kontekstfri grammatikker), bliver omformet til automater, som er bekvemme for datamater. Disse omformninger er grundlaget for værktøjer, der automatisk kan lave leksikalske analysatorer og syntaksanalysatorer ud fra beskrivelser.  Afgørlighed af egenskaber ved grammatikker og automater berøres.

I forbindelse med generering af mellem- og maskinkode gennemgås,
hvordan man på basis af den syntaktiske struktur af et program kan danne maskinkode.

Der bliver vist forskellige metoder til optimering af kode.

Kurset er mest relevant for datalogistuderende, men specielt indholdet om grammatikker og automater er relevant for matematikere, og den praktiske del af kurset er relevant for alle, der vil implementere domænespecifikke programemringssprog til brug i eget fag.

Målbeskrivelser

Kompetencer

  • at designe og implementere en oversætter fra et højniveaussprog til maskinkode;
  • at vurdere og bruge passende værktøjer og biblioteker til oversættelsesprocessen;
  • at vurdere ressourceforbrug (tid og plads) af højniveauprogrammer ud fra kendskab til deres implementering.

 

Færdigheder

  • at bruge værktøjer til leksikalsk og syntaktisk analyse;
  • at beskrive og vurdere oversætterudvikling i skriftlig form;
  • at være i stand til at arbejde med en ikke-triviel kodebase og at udvide denne væsentligt.

 

Viden

  • at redegøre for faseopdeling af oversættelses- og fortolkningsprocessen og fasernes formål;
  • at anvende teoretisk indsigt om formelle sprog, regulære udtryk, kontekstfri grammatikker, afgørlighed og graffarvning;
  • at forklare hvordan oversætterværktøjer arbejder, og deres begrænsninger.

 

Se Absalon når kurset er blevet oprettet. Forventes at være: Torben Mogensen, "Introduction to Compiler Design", Springer, 2011 evt. suppleret med noter.

Kendskab til maskinkodeprogrammering, samt programmering i F#.
Undervisningen vil foregå med en kombination af forelæsninger, øvelser og en praktisk projekt (med rapport). Rapportopgaven stilles ved kursets start og afleveres to uger før eksamen, og løses i grupper på indtil tre personer, Desuden er der fem mindre individuelle opgaver.
Dette kursus erstatter kurset "Oversættere", og kan ikke give kredit, hvis man allerede har bestået "Oversættere".
Point
7,5 ECTS
Prøveform
Skriftlig prøve, 4 timer med opsyn.
---
Krav til indstilling til eksamen

1. Projekt-rapporten skal være godkendt.
2. Mindst fire ud af de fem individuelle ugeopgaver skal være godkendt. Der er mulighed for genaflevering af de fire første ugeopgaver, såfremt de ikke godkendes i første omgang.
Af hensyn til tidsrammen er det ikke muligt at genaflevere projektrapporten eller den femte ugeopgave.

Hjælpemidler
Skriftlige hjælpemidler tilladt

Book for the course and personal notes

Bedømmelsesform
7-trins skala
Censurform
Ekstern censur
Reeksamen

4 timers skriftlig prøve med skriftlige hjælpemidler (som ordinær eksamen). Såfremt der er 10 eller færre tilmeldte afholdes mundtlig prøve (30 min. inkl. votering) med forberedelse (30 min) med skriftlige hjælpemidler.

Krav til indstilling til re-eksamen:
Projekt-rapporten (fra et af de to foregående år) genafleveres og godkendes.

Kriterier for bedømmelse

Se målbeskrivelse.

  • Kategori
  • Timer
  • Forelæsninger
  • 28
  • Eksamen
  • 4
  • Projektarbejde
  • 80
  • Praktiske øvelser
  • 14
  • Forberedelse
  • 80
  • I alt
  • 206