CS 341 - Principles of Programming Languages Readings |
Class | Date | Topic | Readings (parenthesized reading are optional) |
|
1 | Course overview, Scheme introduction | |||
2 | Scheme introduction, dynamic typing | Essentials of Programming Languages forward, Scheme tutorial through pairs and lists | ||
3 | Scheme introduction, lambda expressions | remainder of Scheme tutorial | ||
4 | Functions as first-class objects, functional language paradigm, Scheme exercises | |||
5 | Scheme exercises, lambda expressions within let-blocks to create proto-objects | |||
6 | More proto-objects in Scheme, Scheme exercises | |||
7 | JavaCC introduction, front end structure, tokens, regular expressions, lexical analysis, context free grammars, syntactic analysis, calculator JavaCC template and addition of computation. | Chapter 1 through 1.2.3 (Semantic Analysis) from Aho et al. "Compilers: principles, techniques, & tools" (provided), Figure 1.7, skim meanings of terms "Compiler: Front end", "Lexical Analysis", "Regular Expression: Basic concepts", "Parsing: Computer languages", "Context-free grammar" | ||
8 | Abstract syntax trees, addition of AST nodes to JavaCC template, calculator interpreter example | |||
9 | Completion of calculator interpreter, programming language design | |||
10 | SLP (straight-line program) language interpreter implementation | |||
11 | Completion of SLP interpreter, lookahead for resolving choice conflicts | |||
12 | Student HW1 Programming Language presentations | |||
13 | Student HW1 Programming Language presentations | |||
14 | Lookahead tutorial | |||
15 | Interpretation of lambda expressions and procedure calls, closures, advanced regular expression tutorial (finite state automata to left regular grammar through algebraic substution to regular expression) | |||
16 | Completion of regular expression exercise, interpretation of pairs/lists, interpretation of objects as field and class membership maps | |||
17 | Aspect-Oriented Programming; Visitor Pattern, begin SLP to C++ translator (example of language prototyping via piggybacking on another language) | Visitor Pattern Wikipedia article, Reel portion of Virginia Reel video (seriously!) | ||
18 | Complete SLP to C++ translator, Operator precedence in language design via grammar heirarchy | |||
19 | Python Programming: Introduction | |||
20 | Python Programming: Abstract base classes, object construction techniques | |||
21 | Memory Management: Overview, Manual (C malloc/free), Automatic (Java garbage collection) | |||
22 | Memory Management: Rust - Understanding Ownership | Rust Book Chapter 4: Understanding Ownership | ||
23 | Memory Management: Rust - Smart Pointers | Rust Book Chapter 15: Smart Pointers | ||
24 | Rust Programming | |||
25 | Review OOPig.py work in class; Modern Fortran | |||
26 | Informal language design project presentations | |||
27 | Course overview, evaluations, take-home final description | |||
28 | Rust 6 algorithms evaluation | |||
Final | Final Exam Schedules can be found on the Registrar page under "Resources" (Fall,
Spring)
Section A Final: Saturday December 14, 2024, 8:30 a.m. - 11:30 a.m. |