Languages & Compilers
Programming languages allow us to express our intentions to computers and to each other. This course teaches you how to analyze programming languages, focusing on semantics, the meaning of programs in languages. To understand the semantics of a programming language, we take an engineering approach, building interpreters and compilers for the language. We use this approach to understand a variety of constructs in functional and object-oriented languages and to understand how these constructs interact with each other in real-world languages.
Algorithms & Data Structures, Automata & Formal Languages, Computer Architecture, Programming Fundamentals 1, Programming Fundamentals 2, Programming Fundamentals 3, Systems Programming
- "Compilers: Principles, Techniques, and Tools", 2nd edition, Alfred Aho, Monica Lam, Ravi Sethi, and Jeffrey Ullman, 2006.
- "Real World Haskell", Bryan O'Sullivan, Don Stewart, and John Goerzen, 2008.
- "Thinking Functionally with Haskell", Richard Bird, 2015