C S W395T Structure and Implementation of Modern Programming Languages (SIMPL)
Web-based [86484]

Structure and Implementation of Modern Programming Languages (SIMPL)
Web-based [86484]

Office Hours

The instructor will hold virtual office hours through Zoom by appointment only.

TAs will hold virtual office hours through Zoom according to the schedule below, and by appointment.

  • Tyler Collins: MF 20:00-21:00 CT.
  • Peter Gao: W 15:00-17:00 CT.
  • Aaron Wollman: TuTh 14:00-15:00 CT.

Course Overview/Objectives

Programs written in high-level programming languages are the bridge between an algorithm’s intent and the machine instructions realizing that intent. Driven by higher-level abstractions in modern programming languages and advances in instruction sets and micro-architectures, today’s set of technologies for translating high-level program text to binary machine code have expanded significantly beyond the “classical” set of compilation technologies developed in the 1960s. This class samples the breadth of these technologies within a unified cost-benefit-risk analysis framework, and illustrates system integration by building a series of compilers for LiveOak, a pedagogical object-oriented language.

Core topics include the theory and practice of lexical analysis, syntactic analysis, code generation, language-level virtual machines, and dynamic memory management.

Prerequisites

The student should have experience with significant programming in Java, emphasizing the use, augmentation, and integration of pre-existing components. Prior courses in programming languages, assembly language, compilers, computer architecture, and automata theory are helpful but not required.

Textbooks

None.

Weekly Schedule
Week Topics Assignment Exam
1 Course introduction. LiveOak, SaM. SaM string library
2 Practical parsing and code generation for SaM. contd
3 Theory of lexical analysis. LiveOak-2 to SaM compiler
4 Theory of syntactic analysis. contd
5 None. contd Mid-term
6 Objects, classes, and inheritance. contd
7 Implementing LiveOak-3. LiveOak-3 to SaM compiler
8 Semantic analysis. Type checking. contd
9 Memory management. Garbage collection. contd
10 None. Final
© Siddhartha Chatterjee Responsive Design by Tyler Wittig Page Last Updated: