IT-Universitetet i København
  Tilbage Kursusoversigt
Kursusnavn (dansk):Avancerede modeller og programmer 
Kursusnavn (engelsk):Advanced Models and Programs 
Semester:Forår 2008 
Udbydes, softwareudvikling og -teknologi (sdt) 
Omfang i ECTS:15,00 
Min. antal deltagere:12 
Forventet antal deltagere:20 
Maks. antal deltagere:40 
Formelle forudsætninger: * Solid knowledge of Java and C#
* SMP1 (formerly known as VOP, or Advanced Object-Oriented Programming)

Læringsmål:The subject of the course is programming language technologies, with special
attention to advanced technologies that are likely to influence software
practice over the next ten years.

The course has two parts as detailed under course form below - a regular
course followed by a project.
After the course, the students are expected to be able to:
* Describe relevant concepts within the themes of the course,
* account for the practical applications of the covered constructs, and
* compare selected techniques and constructions within a single of the
course themes.
On the basis of the project, the student are expected to be able to:
* Apply relevant methods and techniques in the chosen project
* Argue for the overall design-decisions in the project, and
* Relate project and theory 
Fagligt indhold:The contents of the course is structured in a number of themes, for example:

Programming language design
* Functional/declarative languages: Scheme
* Higher-order functions, continuations, call/cc (Scheme, Ruby)
* Other object-oriented languages (Smalltalk, Scala, Ruby, Python, ¿)
* Syntax and transformation

Static analysis
* Type systems, type inference (Standard ML, C# 3.0)
* Haskell¹s type classes, generic programming, domain-specific languages
* Logic, design by contract, extended static checking (Jackson¹s Alloy, JML,
Spec#, ESC/Java, ...)
* Dataflow analysis

Real and abstract machines
* Abstract syntax (programs as trees)
* Bytecode (programs as instruction sequences), stack machines
* Automatic memory management, garbage collection
* The C programming language and register-based machines

Some possible additional topics: Moderns support for multiprocessors, such
as transactional memory; staged programs; generalized ADTs; compile-time
parametrization with values; the Object Constraint Language; Generative
programming; ... 
Læringsaktiviteter:14 ugers undervisning bestående af forelæsninger, øvelser og vejledning

Kursus form:
The course period is 16 weeks half time (15 ects). The course will consist

* A course block with lectures and exercises, covering the themes of the
course. The course block will be divided among the involved teachers.

* a substantial four-week group project within one of the themes, resulting
in a project report.

The weekly exercises must be handed in, and at least 10 of the 12 exercises
must be approved to pass the course. The project report must be presented in
an oral exam, where questions may be asked in all themes of the course.

The following text is not yet updated:

Possible project areas include, but are not limited to:

  1. Programming language design
    * Implement a program transformer or similar using Scheme
    * Implement Icon or another language with backtracking using continuations
    * Implement a spreadsheet in a browser using JavaScript

  2. Static checking
    * Type systems, type inference (Standard ML, C# 3.0)
    * Specify, implement and verify a substantial program library (e.g. collection classes) using Spec#, JML, UML/OCL (+ tools), or Alloy

  3. Real and abstract machines
    * Implement an abstract machine in Java or C
    * Implement a garbage collector in Java or C
    * Implement a compiler that generates real (or abstract) machine language

  4. Generative programming
    * Implement a simple aspect compiler in Java (too complex?)
    * Transform statechart models to Java code or bytecode or C
    * Check consistency of model (multiplicity of associations, OCL, ¿)

I intro-ugen (uge 5) er der ændrede kursustidspunkter:
Link til skemaoplysninger

In the intro week (week 5) the course time table is changed:
Link to the time table

Information om studiestruktur / Information about study structure
Dette kursus er en del af SDT-specialiseringen Models and Programs, som du kan finde beskrevet her:
SDT studiestruktur
For at blive i SDT skal du bestå SDT¿s obligatoriske moduler, og gennemføre en 22,5 ECTS specialisering samt to 7,5 ECTS valgfag.

This course is part of the SDT specialization Models and Programs ¿ find it SDT study structure
In order to graduate as a MSc in SDT, you need to pass the SDT mandatory modules, and also take a 22,5 ECTS specialization and two 7,5 ECTS electives.
Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam), 7-trins-skala, Ekstern censur


Litteratur udover forskningsartikler:To be announced. 
Afholdelse (tid og sted)
Kurset afholdes på følgende tid og sted:
Mandag 09.00-12.00 Forelæsning ITU 2A18
Onsdag 13.00-15.00 Forelæsning ITU 2A18
Onsdag 15.00-17.00 Øvelser ITU 2A52

Eksamen afholdes på følgende tid og sted:
2008-06-10 kl. 09.00 - 17.00 Mundtlig eksamen ITU 4A22
2008-06-11 kl. 09.00 - 17.00 Mundtlig eksamen ITU 4A22