Programming languages and paradigms
At least if the new language is considerably different from the languages you are already familiar with.
One of the goals of this course is to give you an understanding for how programming languages can be constructed and implemented and also experience of using different languages, mainly from other groups than the imperative and object-oriented ones that you already know. This is important knowledge, e.g., because it prepares you for later learning new languages quicker and more easily.
Basic: History, design principles, syntax, semantics, control flow, type systems, names, scoping, binding, abstractions, etc.
Object-oriented languages: Class-based languages, prototype-based languages, encapsulation, information hiding, inheritance, delegation, polymorphism, dynamic binding, etc.
Functional languages: Polymorphism, recursion, functions as first-class program constructions, higher order functions, lazy vs. eager evaluation, currying, etc.
Logic based languages: Facts and rules, resolution and unification, searching and backtracking, recursion, functions and arithmetic, lists and other structures, etc.
Concluding summary and extras.
Teaching Format
The teaching consists of lectures and seminars.
Assessment
The course is examined as follows:
- take-home examination
- written assignments
Examiner
Study counsellors
Visiting hoursPlease contact us via email if you want to book a meeting. We are available on Campus in Kista and via Zoom.
Phone hoursThursday 12.30–2 pm
Irregular office hoursFirst phone hours for spring 2026: Thursday 15 January





