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 must have followed ‘Structure of computer programs I’, 'Automata en computability', 'Structure of computer programs II' and 'Object-oriented programming' before they can enroll for ‘Advanced programming language concepts'.
- 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
- Call-with-current-continuation in Scheme-like languages.
- Introduction to macro-programming in Scheme & Racket.
- Concrete vs. Abstract Syntax. Lex/Yacc parsers. Shift/reduce Conflicts.
- Simple Interpreters (revision).
- Simple Static 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
- Call/cc Explained
- Exception Handling Explained.
- Multithreading en mutexes
- A CPS-transformation: converting non-tailrecursive programs into tailrecursive programs.
- Object-systems: 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 Scheme and some OOPL as well as with simple evaluators. 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:
- Oral exam
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:
- Full 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 students 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. No partial exemptions will be granted for the 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)