Semester: summer 2026/27
Page in SIS: NPRG084
Grading: Credit and exam

The course treats programming languages as the subject of study. It introduces basic principles and concepts of paradigms including structured, object-oriented and functional programming. The concepts are illustrated through examples in concrete programming and students will gain hands-on experience implementing some of the concepts in practice.

This is a new course, jointly taught by Tomas Petricek and Vít Šefl that started in 2025/26. We cover principles behind the key programming paradigms. A follow-up course Theory of programming languages provides a more in-depth look at the theory behind programming languages.

Course format

The course consists of a weekly lecture and a bi-weekly hands-on session where you implement some of the concepts covered in the lectures on your own. You can see what the lab materials looked like in 2025/26.

Credit and an exam are required to complete the course. Credit will be awarded for successful completion of assignments given during the semester or for completing a credit program within the scope agreed upon with the instructor.

Course sylabus

Origins of programming languages

Models of programming languages

The Algol programming paradigm

Functional programming paradigm

Object-orientation and data abstraction

Further programming paradigms