IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Programmer som data 
Kursusnavn (engelsk):Programs as Data 
Semester:Efterår 2009 
Udbydes under:Bachelor i softwareudvikling (bswu) 
Omfang i ECTS:7,50 
Kursussprog:Dansk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:
Forventet antal deltagere:35 
Maks. antal deltagere:42 
Formelle forudsætninger:Betydelig programmeringserfaring og solid beherskelse af Java og C#, samt et vist kendskab til F# eller Standard ML. Erfaring med programmers tids- og pladsforbrug. Det er en fordel sideløbende at følge kurset Operativsystemer og C. 
Læringsmål:
Efter dette kursus skal du

* Kunne analysere og forklare tidsforbrug og pladsforbrug for et
program skrevet i Java, C#, C og et dynamisk programmeringssprog,
baseret på en forståelse hvordan sprogene er implementeret,
herunder hvilken rolle lageradministration og spildopsamling
spiller; og kunne bruge denne forståelse til at vurdere fordele og
ulemper ved at anvende en given sprogkonstruktion i en given
situation (fx objekttype versus værditype i C#).

* Kunne benytte værktøjer effektiv genkendelse af regulære udtryk,
til leksikalsk analyse og til syntaksanalyse; kunne forklare
begrænsningerne i disse værktøjer med brug af relevante teoretiske
begreber; samt kunne vælge de mest relevante værktøjer til løsning
af en foreliggende genkendelsesopgave.

* Kunne designe repræsentationer af abstrakt syntaks for et givet
problem, i et funktionelt såvel som et objektorienteret sprog;
kunne benytte værktøjer til at opbygge abstrakt syntaks ud fra
tekstuelle inddata; og kunne benytte rekursion til analyse og
transformation af abstrakt syntaks, for eksempel typeanalyse,
oversættelse, eller reduktion af logiske eller aritmetisks udtryk.

* Kunne sammenligne udtrykskraft og effektivitet for forskellige
programmeringssprog (især Java, C#, C og dynamisk typede sprog), og
forklare hvordan deres egenskaber følger af designbeslutninger og
implementationsteknikker bag sprogene.

* Kunne vise hvordan et program både kan anskues som aktiv skaber af
dynamisk opførsel (programkørsler) og som passive data der kan
analyseres, transformeres eller genereres af andre programmer.

* Kunne forklare hvordan et givet nyt programmeringssprog forholder
sig til kendte sprog.
 
Fagligt indhold: * Leksikalsk analyse, regulære udtryk, endelige tilstandsmaskiner,
ikke-deterministiske og deterministiske tilstandsmaskiner,
lexer-generatorer.

* Syntaksanalyse, top-ned versus bund-op, LL versus LR,
parser-generatorer.

* Stakmaskiner, evaluering af udtryk, Postscript, mellemkode for en
simpel stakmaskine.

* Oversættelse af en delmængde af C (*p, &x, pointer-aritmetik,
arrays, arr[i]) til stakmaskinkode.

* Typetjek, typeinferens, statisk typede sprog, dynamisk typede
sprog.

* Maskinmodellen bag Java, C#, F# (stak, hob, spildopsamling), og
oversættelse fra kildetekst til stakmaskinkode.

* Mellemkodesprogene i Java Virtual Machine og Common Language
Infrastructure, og deres implementation med generering af
registermaskinkode på køretid.

* Spildopsamlingsteknikker.

* Funktionsprogrammering med Scheme, abstrakt syntaks som konkret
syntaks.

* Continuations, exceptions, og en fortolker for en delmængde af
Icon.

* Syntaksstyret analyse og transformation af udtryk og programmer.

* Programgenerering med Scheme backquote og komma, køretidsgenerering
af ny programkode, programgenerering via Java eller C# mellemkode.

 
Læringsaktiviteter:


---
Dette kursus indgår på femte semester af bacheloruddannelsen i softwareudvikling og koordineres med det parallelle kursus Operativsystemer og C.
Det samlede studieforløb er beskrevet her:
Bachelor softwareudvikling  

Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam), 7-trins-skala, Ekstern censur

 

Litteratur udover forskningsartikler: * Syme, Granicz, Cisternino: Expert F# (Apress 2007) eller Syme, Granicz, Cisternino: The Definitive Guide to F# (Apress 2009)
* Mogensen: Basics of Compiler Design. DIKU, University of Copenhagen, May 2009. Se http://www.diku.dk/hjemmesider/ansatte/torbenm/Basics/index.html
* Sestoft: Programming Language Concepts for Software Developers. IT University of Copenhagen, efterår 2009. 
 
Afholdelse (tid og sted)
Kurset afholdes på følgende tid og sted:
UgedagTidspunktForelæsning/ØvelserStedLokale
Mandag 09.00-12.00 Forelæsning ITU 4A16
Mandag 13.00-16.00 Øvelser ITU 4A16

Eksamen afholdes på følgende tid og sted:
EksamensdatoTidspunktEksamenstypeStedLokale
2010-01-06 09.00-13.00 Skriftlig eksamen ITU 3A12/3A14