CS164 Spring 2013 Schedule

week lecture week   Lecture Projects HW
1   21-Jan Mo      
  1 22-Jan Tu why take this course   HW: d3 + tampermonkey (medium hard)
    23-Jan We    
  2 24-Jan Th Spark, a DSL for MaprReduce programming (guest lecture)  
    25-Jan Fr    
2   28-Jan Mo      
  3 29-Jan Tu interpreters, compilers, lexical scoping and closures PA1: add lexical scoping to an interpreter, then convert it to a compiler.  Also work with closures and iterators.  
    30-Jan We    
  4 31-Jan Th programming with coroutines   
    1-Feb Fr    
3   4-Feb Mo      
  5 5-Feb Tu implementing coroutines PA2: Extend PA1 with coroutines.  Learn about bytecode compilers and continuation passing.  With coroutines, you can support lazy iterators and Backtracking-based regex matching.  
    6-Feb We    
  6 7-Feb Th programming in Prolog  
    8-Feb Fr    
4   11-Feb Mo      
  7 12-Feb Tu a coroutine-based Prolog interpreter PA3: Build a Prolog interpreter on top of your coroutines. Use it to implement a simple parser and solve a puzzle.  
    13-Feb We    
  8 14-Feb Th from a recursive descent parser to Datalog  
    15-Feb Fr    
5   18-Feb Mo      
  9 19-Feb Tu syntax-directed translation   HW: making Earley parser optimal  (hard)
    20-Feb We    
  10 21-Feb Th compile regular expressions to automata  
    22-Feb Fr    
6   25-Feb Mo      
  11 26-Feb Tu external vs. internal DSLs PA4: Build your parser generator.  Connect a recursive descent parser of grammar descriptions to the Earleay parser from your homework and add a simple lexer. HW: regex coloring with jQuery (easy)
    27-Feb We  
  12 28-Feb Th natural language queries
    1-Mar Fr  
7   4-Mar Mo      
  13 5-Mar Tu data abstractions: Objects in Lua PA5: Add syntax-directed translation to your parser. It can now work as a compiler and language translator.  Add constructs for grammar disambiguation and write a few parsers. With syntax-directed translation, these parsers will act as front ends for your web browser (HTML parsing) and your scripting language.  
    6-Mar We    
  14 7-Mar Th data abstraction: Mixins, etc?  
    8-Mar Fr    
8   11-Mar Mo      
  15 12-Mar Tu types 1  midterm prep work on final project ideas
    13-Mar We  
  16 14-Mar Th types 2
    15-Mar Fr  
9   18-Mar Mo      
  17 19-Mar Tu midterm PA6: Use your parser to translate a simple natural language database query to Prolog. Build the unit-converting calculator. provide peer feedback on final project proposals
    20-Mar We  
  18 21-Mar Th types 3
    22-Mar Fr  
10   25-Mar Mo    
  19 26-Mar Tu spring break  
    27-Mar We    
  20 28-Mar Th spring break  
    29-Mar Fr  
    1-Apr Mo      
    2-Apr Tu types 4 PA7: (released before S/B) Use your coroutine-based tree iterators to implement a browser layout engine.  Connect it with your HTML-like parser and obtain your cs164 web browser. project proposal: prepare a detailed implementation plan
    3-Apr We  
    4-Apr Th reactive programming
    5-Apr Fr  
11   8-Apr Mo    
  21 9-Apr Tu reactive programming PA8: Add your scripting language to your 164 browser. Embed a little jQuery-like language.
    10-Apr We  
  22 11-Apr Th TBD
    12-Apr Fr  
12   15-Apr Mo      
  23 16-Apr Tu fun topics PA9: Reactivity. Replace callback programming in your 164 browser with streams in the spirit of Rx.  
    17-Apr We    
  24 18-Apr Th fun topics  
    19-Apr Fr    
13   22-Apr Mo    
  25 23-Apr Tu garbage collection    
    24-Apr We     work on final project
  26 25-Apr Th student presentations 1  
    26-Apr Fr    
14   29-Apr Mo   midterm prep
  27 30-Apr Tu student presentations 2
    1-May We  
  28 2-May Th second midterm
    3-May Fr    
    6-May Mo    
    7-May Tu    
    8-May We    
    9-May Th    
    10-May Fr    
    13-May Mo    
    14-May Tu    
    15-May We final exam (project demos) 11:30-2:30  
    16-May Th    
    17-May Fr