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 |
|
|
|
|
|
|
|
|
|