Programming Paradigms 1
First semester 2026 (finished) · Taught with Diego Romero.
Description
Taught in the first semester of 2026, together with Diego Romero. The course aims to expose students to different variants of the art of programming and programming languages, with an emphasis on semantics.
By the end of the course, students should be able to interpret, evaluate and build algorithms and programs within the paradigms covered, build a representation for an expression in a programming language, and build an interpreter for a simple language.
The course is based on Team-Based Learning: each unit combines a readiness-assurance stage (required prior reading plus individual and team assessment) with team-based application exercises.
Schedule
2026 edition, first semester (course already finished).
| Date | Unit |
|---|---|
| March 11 | Introduction to the course |
| March 18–25 | Low-level programming — Common Intermediate Language (.NET) |
| April 8–15 | Imperative programming — Rust 1.76+ |
| April 22–29 | Object orientation — Ruby 3.0+ |
| May 6–20 | Operational semantics and interpreters |
| May 27–June 10 | Logic programming — SWI-Prolog 9.2+ |
| June 17 | Course wrap-up |
Note: no classes were held between March 30 and April 3.
Grading
- 25% individual readiness assurance tests (RAT)
- 5% team readiness assurance tests (RAT)
- 35% team application work
- 35% individual tests at the end of each unit
Bibliography
- W.F. Clocksin & C.S. Mellish — Programming in Prolog, 5th edition (2003), Springer-Verlag
- ECMA TC39 — ECMA-335 Common Language Infrastructure, 6th edition (2012), ISO/IEC 23271
- S. Klabnik & C. Nichols — The Rust Programming Language, No Starch Press
- H.R. Nielson & F. Nielson — Semantics with Applications: A Formal Introduction, John Wiley & Sons