Course structure: The course period is 16 weeks half time (15 ects). The course will consist of: * Lectures and exercises (approximately 10 weeks), covering the themes of the course. * A project done in groups of 1-3 students (approximately 6 weeks), within one of the themes, resulting in a project report. The weekly exercises must be handed in, and at least 8 of 10 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: Programming language design * Implement a program transformer or similar using Scheme of C# * Implement Icon or another language with backtracking using continuations * Implement a spreadsheet in a browser using JavaScript Static checking and development environments * Specify, implement and verify a substantial program library (e.g. collection classes) using JML, UML/OCL (+ tools) or Spec# * Investigate the Eclipse API tools, for ensuring backwards compatibility of interfaces 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 machine language Generative programming * Transform statechart models to Java code or bytecode or C * Check consistency of models (multiplicity of associations, OCL, ...)
The weekly exercises must be handed in, and at least 8 of 10 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 duration of this oral exam is 30 minutes.