15312 Foundations Of Programming Languages High Quality (2025-2026)
This public link is valid for 7 days and shares a thread, including any personal information you added. This link or copies made by others cannot be deleted. If you share with third parties, their policies apply. Can’t copy the link right now. Try again later.
One of the most powerful ideas in 15312 is the . A type is a label that tells you what kind of value a variable or expression can hold—integer, boolean, string, function, etc. 15312 foundations of programming languages
By implementing language features within interpreters, students see the cost of flexibility. Adding exceptions, for example, complicates the type rules. Adding mutable state breaks simple substitution models, forcing the introduction of environments and stores. This teaches a nuanced lesson: language design is a game of trade-offs. There is no "perfect" language, only languages optimized for specific properties—be it safety, expressiveness, or performance. This public link is valid for 7 days
In 15312, students learn to encode numbers (Church numerals), booleans, pairs, and even recursion (using the Y combinator) from this tiny kernel. Can’t copy the link right now
Perhaps the most profound philosophical depth plumbed by the course is the . This is the moment where computer science collides with mathematical logic.
Is there a universal foundation beneath all programming languages?
Students analyze the critical differences between eager evaluation (call-by-value, used in languages like C and Java) and lazy evaluation (call-by-name/need, used in Haskell). 4. Type Safety: Progress and Preservation