5 ECTS credits
125 h study time

Offer 2 with catalog number 3023847BNW for working students in the 1st semester at a (B) Bachelor - advanced level.

Semester
1st semester
Enrollment based on exam contract
Impossible
Grading method
Grading (scale from 0 to 20)
Can retake in second session
Yes
Enrollment Requirements
NOTE: registration for this course is only possible for working students. Day students can register for courses whose code ends with an R. At Inschrijven / studentenadministratie@vub.be you must be registered at the VUB as a working student for the current academic year.
Taught in
English
Faculty
Faculty of Sciences and Bioengineering Sciences
Educational team
Jens Nicolay (course titular)
Activities and contact hours
24 contact hours Lecture
26 contact hours Seminar, Exercises or Practicals
Course Content
  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.
Additional 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).

Learning Outcomes

General Compentences

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.

This course contributes to the following programme outcomes of the Bachelor in Engineering Sciences:

The Bachelor in Engineering Sciences has a broad fundamental knowledge and understanding of
1. scientific principles and methodology of exact sciences with the specificity of their application to engineering;
2. engineering principles and the ability to apply them to analyse key engineering processes and to investigate new and emerging technologies;
4. fundamental, basic methods and theories to schematize and model problems or processes.

The Bachelor in Engineering Sciences can
12. reason in a logical, abstract and critical way;

The Bachelor in Engineering Sciences has
16. a creative, problem-solving, result-driven and evidence-based attitude, aiming at innovation;
17. a critical attitude towards one’s own results and those of others;

 


 

Grading

The final grade is composed based on the following categories:
Other Exam determines 100% of the final mark.

Within the Other Exam category, the following assignments need to be completed:

  • Exam with a relative weight of 1 which comprises 100% of the final mark.

    Note: 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.

Additional info regarding evaluation

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.

Allowed unsatisfactory mark
The supplementary Teaching and Examination Regulations of your faculty stipulate whether an allowed unsatisfactory mark for this programme unit is permitted.

Academic context

This offer is part of the following study plans:
Bachelor of Engineering: Electronics and Information Technology Profile Profile Computer Science (only offered in Dutch)
Preparatory Programme Master of Science in Applied Sciences and Engineering: Computer Science: Track B (65 ECTS) (only offered in Dutch)
Preparatory Programme Master of Science in Applied Computer Science: Track B (52 ECTS) (only offered in Dutch)