6 ECTS credits
150 u studietijd

Aanbieding 1 met studiegidsnummer 4020432ENR voor alle studenten in het 1e semester met een verdiepend master niveau.

1e semester
Inschrijving onder examencontract
Niet mogelijk
Beoordeling (0 tot 20)
2e zittijd mogelijk
Faculteit Wetenschappen en Bio-ingenieurswetensch.
Verantwoordelijke vakgroep
Jens NICOLAY (titularis)
Onderdelen en contacturen
26 contacturen Hoorcollege
26 contacturen Werkvormen en Praktische Oef.
  1. Fundamentals of Higher Order Programming
    1. Scheme S-expressions, Function definitions
    2. Lexical Scoping
    3. Iteration as Optimised Tail Recursion
    4. Higher Order Procedures and Anonymous Lambda’s.
  2. Advanced Higher Order Programming
    1. Cons-cells, lists and nested lists.
    2. List processing and Higher Order List Procedures
    3. Symbols and Homoiconicity: Quoting Lists
    4. Case Study: Symbolic derivation
  3. Fundamental Concepts of State, Scoping and Evaluation Order.
    1. begin, set! and mutable state 
    2. Objects as closures
    3. Environment diagrams, box-and-pointer diagrams
    4. (Infinite) streams and lazy evaluation.
    5. delay and force.
  4. Continuations and current-continuations
    1. Continuations
    2. call-with-current-continuation
    3. An implementation of goto, yield, coroutines and exception handling.
  5. Semantics of Higher-Order Languages
    1. Concrete vs. Abstract Syntax
    2. Meta circular interpretation
    3. The analysing interpreter (i.e. compiler)
    4. CPS interpretation and semantics of call-with-current-continuation
  6. Variations
    1. A lazy evaluation version of Scheme + thunkified interpreter
    2. A nondeterministic version of Scheme + continuation-based interpreter
  7. Introduction to the lambda-calculus
    1. lambda-expressions and beta-reduction
    2. Computability in lambda-calculus: a construction of functional programming languages
    3. Recursion and the Fixed-point Theorem.
Bijkomende info

Study Material

The transparencies that are used in the lectures are made available to the students. A large part of the course follows chapters 1-4 from “Structure and Interpretation of Computer Programs” (Abelson & Sussman, 2nd edition 1996).


General Compentencies

This is a compressed version of the courses “Structure of Computer Programs”, “Interpretation of Computer Programs” and “Logic and Formal Systems” of the Bachelor program in Computer Science. Instead of teaching the material at a beginner’s level, it is assumed that students are already fluent at programming in some mainstream language such as Python, C, C++ or Java. 


Knowledge and Understanding: The course first enhances the students programming skills by introducing higher-order procedures and anonymous functions. Subsequently the theme is explored of objects as closures and streams as delayed infinite computations. The remainder of the course is about the fundamental concepts that are at the heart of programming languages, programming language semantics and the implementation of higher order programming languages. We will study and implement interpreters for programming languages and some variations.

Application of Knowledge and Understanding:  This is a course that gives students the foundations to study and understand any modern programming languages from a conceptual point of view. Instead of focussing on surface syntax and phenomenological aspects, the course delves deep into the semantics of languages and therefore gives a strong basis for applying its content to the future study of programming languages. After talking the course, students will be many times faster in learning a new programming language than before.

This course explicitly prepares students to study modern programming languages like Clojure, Erlang or Scala in a scientifically founded way.

Making Judgements: An important learning outcome is that students will be able to judge the quality of new programming languages or programming languages features. As an example, we take Java8 which is widely said to “finally have lambdas”. Students that took this course will be able to see right through such marketing-oriented statements. 

Communication: Students will build up the precise vocabulary to communicate about programming languages and higher order programs in a very precise and semantically meaningful way.


De beoordeling bestaat uit volgende opdrachtcategorieën:
Examen Andere bepaalt 100% van het eindcijfer

Binnen de categorie Examen Andere dient men volgende opdrachten af te werken:

  • Other exam met een wegingsfactor 1 en aldus 100% van het totale eindcijfer.

    Toelichting: The mark is given as a combination of an oral exam and a project the students have to execute in Scheme. Both parts are equally important.

Aanvullende info mbt evaluatie

The mark is given as a combination of an oral exam and a project the students have to execute in Scheme. Both parts are equally important.

Academische context

Deze aanbieding maakt deel uit van de volgende studieplannen:
Bachelor in de wiskunde: Standaard traject