Lectures and Sections

Lectures 

8 /28/14 (1) Why Take CS164: pdfpptx

9/2 /14  (2) D3: pdfpptx

9/4 /14   (3) Unit Calculator: pdfpptx
9/9 /14   (4-5)  Scoping and desugaring: pdfpptx
9/11/14   same slides
please find the slides for the remaining lectures at the bottom of the page
9/16/14  (6) Objects in Lua
9/18/14  (7) Static types and the bitflip attack
9/23/14  (8) Static Types II: covariance and contravariance 
9/25/14  (9) Attribute grammars: and application for simple math formula rendering
9/30/14 (10) Coroutines  and Lazy Iterators
10/2/14 (11) Implementing coroutines with a bytecode interpreter
10/7-9/14 (12-13) Regular expressions as automata.  Regexes via backtracking.
10/15/14 (14) Final project Clinic
10/16/14 (15) CYK and Earley Parsers.  Disambiguation. 
10/21 (16) Macros
10/23 (17) Solver-Aided DSLs
10/28 --- Midterm 1
10/30 (18) Reactive Programming with Arrowlets
11/4  (19) Implementing Arrowlets with CPS (to be revisited in lecture)
11/6  (20) Trusting Trust
11/11  Veteran's Day
11/13  (21) Rx
11/18  (19) Revisiting implementations of arrowlets
11/20  (22) Summary of the course

Link to Spring 2013 lectures page


Syllabus

 
    1. Why Take CS164?
      • Why programmers design their own small language
    2. Interpreters (Unit-Conversion Calculator)
      • concrete and abstract syntax
      • interpreters,
      • expression evaluation and dynamic types
    3. Closures and Scoping
      • dynamic and lexical scoping
      • lazy evaluation
      • control structures
    4. Control Abstraction: coroutines and lazy iterators
      • producer-consumer paradigm (streams)
      • implementing regexes with coroutines
    5. Implementation: implementing coroutines with a bytecode interpreter
      • tree-to-bytecode compiler
      • interpreter of bytecodes
      • coroutine interpreter
    6. Tutorial to Logic Programming
      • introduction to Prolog with puzzles
    7. Parsing: From logic programming to parsing via datalog
      1. backtracking parser [todo: add rd parser]
      2. CYK parser
      3. DATALOG
      4. Earley parser.
    8. Prolog
      • term unification
      • a simple Prolog interpreter with coroutines
    9. Syntax-directed translation
      • tree rewriting: the workhorse of manipulating program
      • Applications of SDT: from compilation to type checking
      • also, disambiguation of grammars
    10. Compilation:  regular expressions to finite automata
      • RE to NFA
      • NFA to DFA (see recitation section)
      • regular expressions are not backtracking regexes: subtle differences
    11. Domain-Specific Languages: how software design and reuse happens today
      • examples of domain abstractions: grammars, regexes, probability distributions,
      • internal vs external DSLs
      • examples of problems solvable with small languages
    12. Data Abstraction
      • meta-programming: adding new constructs into your languages
      • three styles of object-oriented programming with closures
      • information hiding
      • inheritance
    13. DSLs in the real world: Ideas for the final project
      • web scraping
      • game authoring
      • domain-tailored constraint solving
      • brainstorming for more opportunities
    14. Programming with natural language queries
      • translate natural language to DATALOG/SQL
    15. Dataflow I: Max/MSP
      • discrete and
    16. Dataflow II: FlapJax
    17. Dataflow III: Reactive Programming with Rx

     

    1. Types and static analysis I
      • nominal types (OO languages)
    1. Types and static analysis II
      • type inference with unification
    1. Types and static analysis III
      • flow analysis and compilation of dynamically typed languages
    1. review of types and static analysis

     

    1. Fun Topics in Language Security I
      • Taking control of someone's machine with a heat gun
        • subverting the type system by inducing hardware errors
      • self-generating programs
        • advanced compilation
    1. Fun Topics in Language Security II
      • Sandboxing
      • TBD

     

     

Ċ
Sarah Chasins,
Aug 29, 2014, 9:46 AM
ć
Sarah Chasins,
Aug 29, 2014, 9:46 AM
Ċ
Sarah Chasins,
Sep 4, 2014, 2:24 PM
ć
Sarah Chasins,
Sep 4, 2014, 2:24 PM
Ċ
Sarah Chasins,
Sep 4, 2014, 2:26 PM
ć
Sarah Chasins,
Sep 4, 2014, 2:27 PM
Ċ
Ras Bodik,
Sep 13, 2014, 2:27 PM
ć
Ras Bodik,
Sep 13, 2014, 2:26 PM
Ċ
Ras Bodik,
Sep 18, 2014, 10:01 PM
ć
Ras Bodik,
Sep 18, 2014, 10:01 PM
Ċ
Ras Bodik,
Sep 18, 2014, 10:01 PM
ć
Ras Bodik,
Sep 18, 2014, 10:01 PM
Ċ
Ras Bodik,
Sep 27, 2014, 4:43 PM
ć
Ras Bodik,
Sep 27, 2014, 4:45 PM
Ċ
Ras Bodik,
Sep 28, 2014, 9:58 AM
ć
Ras Bodik,
Sep 28, 2014, 9:58 AM
Ċ
Ras Bodik,
Oct 3, 2014, 4:33 AM
ć
Ras Bodik,
Oct 3, 2014, 4:33 AM
Ċ
Ras Bodik,
Oct 15, 2014, 11:20 PM
ć
Ras Bodik,
Oct 15, 2014, 11:19 PM
Ċ
Ras Bodik,
Oct 22, 2014, 8:22 PM
ć
Ras Bodik,
Oct 22, 2014, 8:22 PM
Ċ
Ras Bodik,
Nov 5, 2014, 10:17 PM
ć
Ras Bodik,
Nov 5, 2014, 10:18 PM
Ċ
Ras Bodik,
Nov 5, 2014, 10:14 PM
Ċ
Ras Bodik,
Nov 5, 2014, 10:14 PM
ć
Ras Bodik,
Nov 5, 2014, 10:14 PM
Ċ
Ras Bodik,
Nov 20, 2014, 8:07 AM
ć
Ras Bodik,
Nov 20, 2014, 8:08 AM
Ċ
Ras Bodik,
Nov 5, 2014, 10:11 PM
ć
Ras Bodik,
Nov 5, 2014, 10:11 PM
ć
Ras Bodik,
Nov 13, 2014, 9:08 AM
Ċ
Ras Bodik,
Nov 23, 2014, 8:47 PM
ć
Ras Bodik,
Nov 23, 2014, 8:47 PM
Comments