CS164 Spring 2012 Schedule

week lecture week   Lecture Projects HW
1   16-Jan Mo      
  1 17-Jan Tu why take cs164   HW: greasemonkey + regex (medium hard)
    18-Jan We    
  2 19-Jan Th interpreters: gcalc  
    20-Jan Fr    
2   23-Jan Mo      
  3 24-Jan Tu closures and scoping PA1: basic interpreter, with closures, iterators, a some constructs via desugaring.  
    25-Jan We    
  4 26-Jan Th control abstraction  
    27-Jan Fr    
3   30-Jan Mo      
  5 31-Jan Tu coroutines and bytecode interpreter PA2: Coroutines and bytecode compiler. More powerful iterators.  Implement backtracking-based regex matching with coroutines.   
    1-Feb We    
  6 2-Feb Th logic programming  
    3-Feb Fr    
4   6-Feb Mo      
  7 7-Feb Tu Prolog  PA3: Build a Prolog interpreter on top of your coroutines and streams. Use your Prolog to implement a simple parser and solve puzzle problems.  
    8-Feb We    
  8 9-Feb Th parsing  
    10-Feb Fr    
5   13-Feb Mo      
  9 14-Feb Tu SDT   HW: making Earley parser optimal  (hard)
    15-Feb We    
  10 16-Feb Th compilation: re  
    17-Feb Fr    
6   20-Feb Mo      
  11 21-Feb Tu DSLs: taught as a review 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)
    22-Feb We  
  12 23-Feb Th DSLs in real world
    24-Feb Fr  
7   27-Feb Mo      
  13 28-Feb Tu natural language queries midterm prep submit final project ideas
    29-Feb We  
  14 1-Mar Th data abstraction, OO
    2-Mar Fr  
8   5-Mar Mo      
  15 6-Mar Tu midterm  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.  
    7-Mar We    
  16 8-Mar Th types 1  
    9-Mar Fr    
9   12-Mar Mo      
  17 13-Mar Tu types 2 PA6: Translate a simple natural language SQL-like query to Prolog and Unit calculator. (In this assignment, you will have a chance to further debug and integrate the pieces you developed so far: 164 coroutine interpreter, Prolog interpreter, and parser generator.) receive feedback on final projects
    14-Mar We  
  18 15-Mar Th types 3  
    16-Mar Fr    
10   19-Mar Mo      
  19 20-Mar Tu types 4 PA7: 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.  
    21-Mar We    
  20 22-Mar Th dataflow 1  
    23-Mar Fr    
    26-Mar Mo      
    27-Mar Tu spring break   project proposal: prepare implementation plan, submit slides for final presentations
    28-Mar We    
    29-Mar Th spring break  
    30-Mar Fr    
11   2-Apr Mo      
  21 3-Apr Tu dataflow 2 PA8: (released before S/B) Add your scripting language to your 164 browser. Embed a little jQuery-like language.  
    4-Apr We    
  22 5-Apr Th dataflow 3  
    6-Apr Fr    
12   9-Apr Mo      
  23 10-Apr Tu fun: advanced topics PA9: Reactivity. Replace callback programming in your 164 browser with streams in the spirit of Rx.  
    11-Apr We    
  24 12-Apr Th fun: advanced topics  
    13-Apr Fr    
13   16-Apr Mo    
  25 17-Apr Tu [garbage collection]    
    18-Apr We     work on final project
  26 19-Apr Th class presentations 1  
    20-Apr Fr    
14   23-Apr Mo   midterm prep
  27 24-Apr Tu class presentations 2
    25-Apr We  
  28 26-Apr Th second midterm
    27-Apr Fr    
    30-Apr Mo    
    1-May Tu    
    2-May We    
    3-May Th    
    4-May Fr    
    7-May Mo    
    8-May Tu    
    9-May We    
    10-May Th    
    11-May Fr final exam (project demos)