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