IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Avancerede modeller og programmer 
Kursusnavn (engelsk):Advanced Models and Programs 
Semester:Forår 2007 
Udbydes under:cand.it., softwareudvikling og -teknologi (sdt) 
Omfang i ECTS:15,00 
Kursussprog:Engelsk 
Kursushjemmeside:http://www.itu.dk/research/pls/wiki/index.php/AMP-Spring2007 
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.
After passing the course, a student can work confidently with these topics, for instance in an MSc thesis project.

The course has several themes: real machines, virtual machines, interpretation, and compilation; functional languages (Scheme) and dynamically typed object-oriented languages (Smalltalk, Ruby, Python); static checking; and model-driven development, generative programming, and domain-specific languages.

Note: This description is preliminary. More details will be added no later than 15 December 2006. 
Fagligt indhold:The contents of the course is structured in four themes:


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

  2. Static checking
    * 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, ...)

  3. 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

  4. Generative programming
    * Programs as data objects
    * Generative programming, runtime code generation
    * Models, model-driven development (UML-to-code)
    * Wellformedness (of code and models)


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; ...
 
Læringsaktiviteter:14 ugers undervisning bestående af forelæsninger, øvelser og vejledning

The course period is 16 weeks half time (15 ects). The course will consist of


  • four block of three weeks each, covering the above four themes, with weekly lectures and exercises; and

  • 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.

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 cand.it. 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), 13-skala, Ekstern censur

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. A single grade is given, based on the project and the oral exam.

 

Litteratur udover forskningsartikler:Not yet determined. 
 
Afholdelse (tid og sted)
Kurset afholdes på følgende tid og sted:
UgedagTidspunktForelæsning/ØvelserStedLokale
Mandag 09.00-12.00 Forelæsning ITU 3A18
Onsdag 13.00-15.00 Forelæsning ITU 3A18, 3A50
Onsdag 15.00-17.00 Øvelser ITU 3A18, 3A50

Eksamen afholdes på følgende tid og sted:
EksamensdatoTidspunktEksamenstypeStedLokale
2007-05-23 No later than 3 PM Skriftlige arbejder ITU The Examination Office
2007-06-18 Tidspunkt oplyses senere Mundtlig eksamen ITU Lokale oplyses senere
2007-06-19 Tidspunkt oplyses senere Mundtlig eksamen ITU Lokale oplyses senere
2007-06-20 Tidspunkt oplyses senere Mundtlig eksamen ITU Lokale oplyses senere