Structure and Implementation of Modern Programming Languages (SIMPL)
Web-based [86484]
Instructor:
Dr. Siddhartha Chatterjee.
TAs:
Tyler Collins,
Peter Gao,
Aaron Wollman.
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.
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.
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.
None.
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 |