Implementation of Programming Languages

(CS 395T)

Request Info

Structure and Implementation of Modern Programming Languages covers the component technologies used in implementing modern programming languages, shows their integration into a system, and discusses connections between the structure of programming languages and their implementations.

  • What You Will Learn

    • Techniques for program text analysis, including lexing, parsing, and semantic analysis
    • Techniques for machine code synthesis, including code generation and register allocation
    • Machine architectures, both physical and virtual
    • Techniques for run-time actions, including memory management and dynamic linking
    • Mathematical underpinnings, including the grammar-language-automaton triad
    • The impact of individual language features on implementation techniques

    Syllabus

    • The compiler-interpreter spectrum
    • Stack virtual machine architecture: SaM, JVM
    • Lexical analysis; regular grammars, finite automata
    • Context-free grammars, pushdown automata
    • Parsing techniques: recursive descent, Earley, others
    • Semantic analysis: type checking
    • Register machine architecture: x86-64
    • Code generation and register allocation
    • Procedure call/return linkage
    • Memory management: explicit, garbage collection
    • Modularity, linking, interoperability
    • Dynamic linking, position-independent code
    • Implementing objects, inheritance, dynamic dispatch
    • Advanced topics: JIT compilation, stack randomization, bootstrapping
  • Estimated Effort

    • 8-12 hours/week

    Course Category

    • Elective

    Availability

    • Fall 2021

Meet Your Instructor