nl en

Concepts of Programming Languages


Admission requirements

No prior knowledge about programming languages is required, although students with programming experience may find it easier to follow the course material. The course won’t teach you programming in any specific language, but one has to be prepared to learn the basics of Scheme, Prolog and Java to be able to complete the programming assignments. Multiple examples are given to illustrate the implementation of programming constructs in various languages such as Fortran, ADA, C/C++, Java, Perl, Python, Lua. Acquaintance with any of them is a plus.


The course includes lectures and practical seminars.

At lectures you will learn the theory – programming language evolution, language evaluation criteria, methods to describe language syntax and semantics, parsing algorithms, design choices regarding each and every aspect of the language such as names, binding, scoping, type system, expressions, statements and control structures, modules, exception handling, etc., programming language paradigms such as imperative programming, object-oriented programming, functional programming, logic programming, and concurrent computing.

At seminars you will work on the course assignments. There are weekly homework assignments and three programming assignments. The practical seminars are typically conducted by a postgraduate assistant who explains the assignments and provides instructions and technical support for the installation and use of the required software.

Course objectives

This course is an introduction to the theory and practice of programming languages. The main goal of the course is to provide insights into the relationship between concepts of programming languages and how they are implemented, and the choices that can be made here. The good understanding of the aspects involved into programming language design will significantly improve your ability to learn any programming language faster and in a more consistent way, make informed choices of a programming language for each specific task and pay attention to the important details of the language you use.


Het meest recente rooster is te vinden op de Studenten-website:

Mode of instruction

Students may work on practical assignments in class/computer lab or independently using their own facilities.

Assessment method

The final grade is calculated from the following:

  • Presence at the lectures (10%)

  • Weekly homework assignments (20%)

  • Programming assignments (30%)

  • Written exam (40%)

For students who combine several degrees or have conflicts in the schedule for any other respected reason, there is an option to study the theoretic material independently – if you notify the lecturer about this at the beginning of the course, this criterion won’t be applied to your grading (exam will count for the 50% of the final grade).

The written exam may include both theoretical questions and small practical assignments, from 10 to 20 tasks in total. The number of points given for each correct answer depends on the complexity of the task – to pass the exam (and successfully complete the course) more than 50% from the total number of points are required.

Grades for homework assignments, programming assignments, or final exams from previous semesters cannot be transferred and used as partial fulfillment of the requirements of the current semester.

Reading list

  • Concepts of Programming languages, 8th or 9th Edition, RW Sebesta, Addison Wesley.

  • Lecture slides based on this book.

Signing up for classes and exams

You can enrol via uSis . More information about signing up for classes and exams can be found here .

There is limited space for students who are not enrolled in the BSc programme of Computer Science or the Minor Data Science. Please contact the study coordinator/study adviser.

Contact information

Onderwijscoördinator Informatica, Riet Derogee