CS 341 - Survey of Programming Languages

Unless otherwise noted, all readings are from the course text.  Each reading assignment should be completed before the class on the date indicated.  These readings are subject to change; check here for updates.  If a reading assigned in class does not match the reading assignment here, the reading assigned in class supercedes.
Class Month Day Topic Readings (parenthesized
reading are optional)
1 August 29 Course overview, Scheme introduction  
2   31 Scheme introduction, dynamic typing Essentials of Programming Languages forward, Scheme tutorial through pairs and lists
3 September 5 Scheme introduction, lambda expressions remainder of Scheme tutorial
4 7 Functions as first-class objects, functional language paradigm, Scheme exercises  
5   12 Scheme exercises, lambda expressions within let-blocks to create proto-objects  
6   14 More proto-objects in Scheme, Scheme exercises  
7   19 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   21 Abstract syntax trees, addition of AST nodes to JavaCC template, calculator interpreter example  
9   26 Completion of calculator interpreter, programming language design  
10   28 SLP (straight-line program) language interpreter implementation  
11 October 3 Completion of SLP interpreter, lookahead for resolving choice conflicts  
12   5 Student HW1 Programming Language presentations  
13   12 Student HW1 Programming Language presentations  
14 17 Lookahead tutorial  
15   19 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   24 Completion of regular expression exercise, interpretation of pairs/lists, interpretation of objects as field and class membership maps  
17   26 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   31 Complete SLP to C++ translator, Operator precedence in language design via grammar heirarchy  
19 November 2 Python Programming: Introduction  
20   7 Python Programming: Introduction  
21   9 Python Programming: Abstract base classes, object construction techniques  
22   14 Android project planning, group formation  
23   16 Android Event-Driven Programming: Introduction Android tutorial: Pig
24   21    
25   28   Starting another Activity, McCown workshop example
26   30    
27 December 5    
28   7    
Final   16 Final Exam 8:30-11:30AM Final Exam Times