CS164: Programming Languages and Compilers

CS 164: Programming Languages and Compilers (Spring 2012, UC Berkeley). Instructor: Professor Rastislav Bodik. This course introduces what programmers need to know about programming languages. The design of modern programming languages. Principles and techniques of scanning, parsing, semantic analysis, and code generation. Implementation of compilers, interpreters, and assemblers. Overview of run-time organization and error handling.

Why Take CS164?

Lecture 01 - Why Take CS164?
Lecture 02 - Unit Conversion Calculator
Lecture 03 - Growing the Language
Lecture 04 - Building Control Abstractions with Coroutines
Lecture 05 - Implementing Coroutines
Lecture 06 - Logic Programming
Lecture 07 - Implementing Prolog Interpreter
Lecture 08 - Parsers
Lecture 09 - Syntax-Directed Translation
Lecture 10 - Regular Expressions
Lecture 11 - How to Implement Small Languages
Lecture 12 - Small Languages in the Real World; Ideas for the Final Project
Lecture 13 - Natural Language Interfaces
Lecture 14 - Data Abstraction
Lecture 15 - Static Types for OO Languages
Lecture 16 - Unification Static Types
Lecture 17 - Flow Analysis
Lecture 18 - Inventing on Principle, Guest Lecture by Bret Victor
Lecture 19 - Lifting Events with Arrows
Lecture 20 - Directing JavaScript with Arrows
Lecture 21 - Reactive Programming with Rx
Lecture 22
Lecture 23
Lecture 24 - Subverting a Type System; Hiding Exploit in Compilers

CS164: Programming Languages and Compilers, Spring 2012
Instructor: Professor Rastislav Bodik. Lecture Notes. In this course, we will introduce you to what programmers need to know about programming languages.