COMPSCI 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 2022):
TuTh 11:00-12:29, Genetics & Plant Bio 100 – Parker Ziegler, Sarah Chasins

Class Schedule (Spring 2023):
MoWe 10:30-11:59, Soda 306 – Koushik Sen

Class homepage on inst.eecs

General Catalog listing


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: