6 ECTS credits
150 h study time

Offer 2 with catalog number 1005176BNR for all students in the 2nd semester at a (B) Bachelor - advanced level.

Semester
2nd semester
Enrollment based on exam contract
Impossible
Grading method
Grading (scale from 0 to 20)
Can retake in second session
Yes
Enrollment Requirements
Students who want to enroll for this course, must have passed for “Interpretation of Computer programs I” and “Automata and Computability” and “Structure of Computer Programs II” or has been enrolled for the Master Applied Informatics.
Taught in
English
Faculty
Faculty of Sciences and Bioengineering Sciences
Department
Computer Science
Educational team
Wolfgang De Meuter (course titular)
Activities and contact hours
26 contact hours Lecture
26 contact hours Seminar, Exercises or Practicals
150 contact hours Independent or External Form of Study
Course Content
  • Revision of Metacircular Evaluation
  • Introduction to macro-programming in Scheme.
  • Concrete vs. Abstract Syntax. Lex/Yacc parsers.
  • Statisc Analysis: Lexical Addressing and Type Checking.
  • Store vs. Environemts: call-by-address, shared variables, …
  • CPS-evaluation using procedures as continuations
  • CPS-evaluators using frames as continuations
  • Exception Handling
  • Multithreading en mutexes
  • CPS-transformation: converting non-tailrecursive programs into tailrecursive programs.
  • Object-system: objects, message forwarding, delegation, proxies
  • Classes, subclasses, inheritance and Mixins
  • Actors, active objects
  • Contemporary topics
Course material
Digital course material (Required) : All transparencies and code will be made available on the Canvas system. Large portions of the course are based on “Essentials of Programming Languages” by Friedman & Wand., Canvas
Additional info

Recommended background:

In order to be able to start with this course, students must be acquainted with metacircular evaluators in Scheme. Apart from that, a basic knowledge of programming language theory (i.e. regular languages and context-free languages) is assumed.

Learning Outcomes

General Competencies

Knowledge and understanding: This course continues the bachelor’s study of interpretative/denotational semantics of programming languages. Various advanced programming language concepts are explained and formalised by means of an evaluator. After finishing the course, the student understands the fundamental properties of these concepts independently from their occurrence in mainstream/popular programming languages.

Applying knowledge and understanding: Students apply the knowledge in the context of 2 programming projects in which they will have to extend a couple of the evaluators seen in class.

Making judgements: Students are able to pinpoint the incarnation of the studied language concepts in concrete mainstream languages. They are able to go beyond the syntax and they are able to judge the quality with which the concept has been integrated in said languages.

Communication: Studenten dienen de keuzes die ze gemaakt hebben tijdens de uitvoering van projecten mondeling te kunnen verdedigen en toelichten op een beredeneerde wijze.

Lifelong Learning Skills: Students understand the foundations of advanced programming languages features. They will immediately recognise any occurrence of the studied features in future languages.

Grading

The final grade is composed based on the following categories:
Oral Exam determines 50% of the final mark.
SELF Practical Assignment determines 50% of the final mark.

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

  • Mondeling examen with a relative weight of 1 which comprises 50% of the final mark.

    Note: During the oral exam the full report will be evaluated and possibly adjusted.

Within the SELF Practical Assignment category, the following assignments need to be completed:

  • Volledig project with a relative weight of 1 which comprises 50% of the final mark.

    Note: The exam consists of a project and an oral exam. For the project the students have to report about their own extensions to the Pico virtual machine. In the course of the lecture an assignment is formulated for which the goal is to extend both the syntax and semantics of Pico with a new programming concept. Students are then expected to model this concept for the meta-circular specification of Pico and then cary these over to the actual virtual machine. Students have to show that these modifications are fully functional through a number of test cases. The report has to document each of the steps taken in the process of modifying the virtual machine and has to be accompanied with the full source code of the modified version of the virtual machine.

Additional info regarding evaluation

The exam consist of an oral presentation/defense of 2 programming assignments where the student needs to present his/her project and answer questions about his/her approach in the context of the course theory. Failing to submit 1 of the projects implies no grade for the entire course.

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 Computer Science: Default track (only offered in Dutch)