Bienvenido, invitado ( Identificarse | Registrarse )
If a program is well-typed ( ) and takes a step ( ), the resulting program has the exact same type (
Once you understand the underlying principles of type systems and operational semantics, learning a new language becomes a matter of learning its syntax.
How does a program decide what to do next? The usual answer: sequential execution, loops, conditionals, function calls. 15312 foundations of programming languages
The course moves away from a "feature-by-feature" look at popular languages and instead focuses on a single mathematical framework—often called Type Theory Carnegie Mellon University Computer Science Department Primary Tool: You will use Standard ML (SML) for most programming assignments. The primary reference is typically Practical Foundations for Programming Languages Robert Harper Core Skills: You'll learn to define the (type systems) and (how code actually runs) for various language features. Carnegie Mellon University Computer Science Department 2. What You’ll Study The curriculum is built on several foundational concepts: CMU School of Computer Science Carnegie Mellon University 3 Apr 2026 —
While many programming courses focus on the syntax of Python, Java, or C++, 15312 asks a more fundamental question: What is 15312 All About? If a program is well-typed ( ) and
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?
How do generics work? 15-312 introduces (the polymorphic The course moves away from a "feature-by-feature" look
The world was no longer a chaotic script; it was a well-typed system, where every action had a rule, and every state followed a logic that—if respected—guaranteed a perfect, crash-free existence.
Languages like Haskell push purity and types. Rust adds ownership for memory safety without garbage collection. Go simplifies concurrency with goroutines. Each is a different point in the design space illuminated by 15312.
Understanding how things like exceptions, state (memory), and continuations change the mathematical model of a language. Parallelism and Concurrency:
[ \beginarrayrcl e & ::= & x \mid \textnum(n) \mid \textplus(e_1, e_2) \ v & ::= & \textnum(n) \endarray ]