15312 Foundations Of Programming Languages -

If you enroll in "15312 foundations of programming languages," you will not be learning Java or Python. You will be learning metalanguages . Here are the canonical topics:

Syntax is the surface. In formal foundations, we don't use regular expressions; we use and Abstract Syntax Trees (ASTs) . 15-312 emphasizes the difference between concrete syntax (what the programmer types) and abstract syntax (what the compiler understands). You learn to define languages using BNF (Backus-Naur Form) with a rigor that erases ambiguity. 15312 foundations of programming languages

Parametric polymorphism enables developers to write reusable code that works with multiple data types. However, manually specifying type parameters can be cumbersome and error-prone. By adding type inference, we can alleviate this burden and make PolyLambda more expressive and user-friendly. If you enroll in "15312 foundations of programming