Programming Languages Updated - 15312 Foundations Of
The course utilizes a modularity theorem that shows how abstract types hide implementation details. It teaches that a polymorphic function (one that works for any type $\alpha$) is constrained by its ignorance. If you write a function that takes a list of items of type $\alpha$, you cannot know what $\alpha$ is. Therefore, you cannot perform operations specific to integers or strings.
Syntax defines the rules governing the structure of a program. In foundation courses, syntax is often defined using Context-Free Grammars (CFGs) or Abstract Syntax Trees (ASTs). Semantics (The Meaning)
This might sound like dry theory, but to the student, it is a revelation. It implies that well-typed programs cannot "go wrong." They cannot segfault; they cannot access memory outside their bounds. Through this, 15-312 teaches that types are not restrictions—they are guarantees. It reframes the compiler from a critic into a partner in verification. 15312 foundations of programming languages
Describes how a program executes, step-by-step, on an abstract machine.
If you want, I can:
Upon completing 15-312, students are expected to master a powerful set of concepts and skills:
Programming languages are the ultimate abstraction layer. They bridge the gap between human logic and the raw, binary execution of silicon computer chips. While most software developers focus on using these languages to build applications, a deeper question remains: How do we know a language actually works the way it is supposed to? How can we mathematically prove that a program will not crash, leak memory, or breach security protocols? The course utilizes a modularity theorem that shows
The motivation for a course like 15-312 is captured in a quote by Professor Robert Harper, who helped develop the course: "Good languages make it easier to establish, verify, and maintain the relationship between code and its properties".