Faculty of Computer Science · Alexandru Ioan Cuza University of Iași

Foundations of Programming Languages

Course: Dr. Andrei Arusoaie  ·  Labs: Drd. Delia Iustina Grigoriță, Dr. Andrei Arusoaie

Overview

This course is about the foundations of programming languages: the notions from mathematics and logic that let us say precisely what a language construct means, not just how it is written. The aim is to be able to look at a program written in an unfamiliar programing language, either compiler or AI-generated and be able to cope with it.

What we cover

Tools and Resources

Weekly schedule

WkTopicMaterials
1Introduction notesslideslab: roen
2Preliminaries: ADTs, functions, induction notesslideslab: roen
3Polymorphism, higher-order functions, logic in Lean notesslideslab: roen

🔒 The notes, slides and lab PDFs are password-protected. The password is shared with enrolled students in class / on Discord.

Course description (fișa disciplinei): PDF (Română) · PDF (English)

Evaluation (2026)

Continuous assessment, out of 100 points. Passing requires at least 50%.

ComponentPoints
Test 1 (during semester)30
Test 2 (during semester)30
Lab worksheets10
Final project30

Resources & bibliography

Course

  1. Practical Foundations of Programming Languages, Robert Harper; Cambridge University Press, 2016. Online book
  2. Software Foundations — Vol 2, Benjamin C. Pierce et al. Online book
  3. Programming Languages: Principles and Paradigms, Maurizio Gabbrielli, Simone Martini; Springer, 2010. Springer link
  4. The Formal Semantics of Programming Languages — An Introduction, Glynn Winskel; MIT Press, 1993. Online book

Lab

  1. Software Foundations — Vol 2, Benjamin C. Pierce et al. Online book
  2. Lean 4 — learning materials. lean-lang.org/learn

People

Previous years

Earlier editions (under the former course name):

2025–2026 2024–2025 2023 2022