Programming Paradigms 2
Second semester 2026 · Taught by Bruno Cattáneo.
Description
Continuation of Programming Paradigms 1. 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 or compiler for a simple language.
Like Paradigms 1, 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, second semester.
| Date | Unit |
|---|---|
| August 6 | Introduction to the course |
| August 13–September 3 | Functional programming — Haskell |
| September 10–24 | Code generation — algebraic types and Common Intermediate Language (.NET) |
| October 8–22 | Asynchronous programming — JavaScript (ES2022+) |
| October 29–November 12 | Abstract interpretation and code transformations — Babel/EcmaScript |
| November 19–26 | Query languages — SQL |
Note: no class on August 27.
Note: no classes between September 28 and October 2 (Semana UCU).
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
- ECMA TC39 — ECMA-335 Common Language Infrastructure, 6th edition (2012), ISO/IEC 23271
- H.R. Nielson & F. Nielson — Semantics with Applications: A Formal Introduction, John Wiley & Sons