nl en

Concepts of Programming Languages


Admission requirements

Not applicable.


Programming is the art of telling computers what to do, and programming languages are the main tool to achieve that.
The course comprises foundational knowledge as the evolution of programming languages, methods to describe language syntax and semantics, bindings, types, metaprogramming and concurrency, but also newer developments such as Kotlin and R as examples of specific language developments. It is about getting acquainted to very different programming paradigms, such as kernel-based highly parallel CUDA programming and event-based programming (used in robot control and game loops) as well as functional and logical programming that have highly influenced modern languages as Python.

Basic programming ability in any modern language (Python, Java, C++, etc.) is necessary in order to be able to follow the course. Knowledge of any other programming language is a plus but not mandatory.

Course objectives

This course is an introduction to foundations and evolution 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, which should enable you to learn different new languages or related techniques employed in the programming context faster, and make more informed decisions about what to use when.


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

Mode of instruction

2 hours lectures, 2 hours working classes (labs) per week.
For both of these, it is appreciated if students bring their own devices as laptops or tablets. This is not mandatory but at least each group should have one device to work with. Most examples used in the lecture are from the web, thus simple devices shall be sufficient. Self study/group work is necessary to finish the assignments, the labs are rather for getting started and obtaining feedback.

Assessment method

The final grade is calculated from the following:

Assignments (50%)
Written exam (50%)

Assignments will be mixed single work and group work of around 3 people.
It is required to achieve at least 5.5 points on average for the assignments, AND also for the written exam in order to pass the course. The number of assignments will be around 6, typically we apply the best-of-n count, such that missing one assignment is not a problem. However, assignments are very good for preparing the exam :-)

Partial grades can be taken over from/to the last/next year in order to get the course completed, but please notify the lecturer if you plan to do that. If you have any other special needs, please do so as well. Be aware that the assignments are planned to be done as group work, it is significantly more work for you to do them alone.

The teacher will inform the students how the inspection of and follow-up discussion of the exams will take place.


Aanmelding voor vakken verloopt via uSis. Hiervoor is de uSis-code van het vak nodig, die te vinden zijn in de Studiegids. Meer info over het inschrijven voor vakken of tentamens is hier te vinden.


In MyTimetable kun je alle vak- en opleidingsroosters vinden, waarmee jij je persoonlijke rooster kunt samenstellen. Onderwijsactiviteiten waarvoor je in uSis staat ingeschreven, worden automatisch in je rooster getoond. Daarnaast kun je My Timetable gemakkelijk koppelen aan een agenda-app op je telefoon en worden roosterwijzigingen automatisch in je agenda doorgevoerd; bovendien ontvang je desgewenst per e-mail een notificatie van de wijziging.

Vragen? Bekijk de video-instructie, lees de instructie of neem contact op met de ISSC helpdesk.


Inschrijving voor vakken verloopt via uSis. Wanneer je je hier inschrijft voor een bepaald vak krijg je automatisch ook toegang tot de omgeving van dit vak via Brightspace.

Voor meer informatie over Brightspace kun je op deze link klikken om de handleidingen van de universiteit te bekijken. Bij overige vragen of problemen kan contact opgenomen worden met de helpdesk van de universiteit Leiden.

Contact information

Docent Hans-Dieter Hiep
Onderwijscoördinator Informatica, Riet Derogee