CS 164. Programming Languages and Compilers
Catalog Description: Survey of 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.
Units: 4
Prerequisites: COMPSCI 61B and COMPSCI 61C.
Formats:
Spring: 3.0 hours of lecture and 1.0 hours of discussion per week
Fall: 3.0 hours of lecture and 1.0 hours of discussion per week
Grading basis: letter
Final exam status: Written final exam conducted during the scheduled final exam period
Class Schedule (Fall 2024):
CS 164 – MoWe 14:00-15:29, Soda 306 –
Koushik Sen
Class Schedule (Spring 2025):
CS 164 – TuTh 12:30-13:59, Physics Building 4 –
Max Willsey
Department Notes:
Course objectives: Understanding of programming language design and implementation. Practical experience in the construction of language processors (interpreters, compilers).
Topics covered:
- Lexical Analysis
- Finite Automata
- Parsing
- Ambiguity and errors
- Top-down parsing
- Bottom-up parsing
- LR Parsing
- Semantic Analysis
- Type Checking
- Cool type checking
- Runtime organization
- Simple code generation
- Object oriented code generation
- Local optimization
- Global optimization
- Garbage collection
- Higher-order type systems
- Parametric Polymorphism
- Language-based security
Related Areas: