9.2

Schedule🔗

Date

 

Topic

 

Notes

 

Due

9/1

 

Intro to compilers, Racket language

 

 

P1

9/3

 

Assembly, first compiler

 

 

P2

9/8

 

Unary primitives, control flow

 

 

9/10

 

Disjoint datatypes, I/O, system calls, ABI

 

 

A1

9/15

 

Errors, type tag checking

 

Extort: when errors exist

 

9/17

 

Binding and variables, run-time stack, compile-time environment

 

Fraud: local binding, variables, and binary operations

 

A2

9/22

 

Binary operations

 

Fraud: local binding, variables, and binary operations

 

9/24

 

Inductive data, memory allocation, pointer values

 

Hustle: heaps and lists

 

A3

9/29

 

Inductive data, memory allocation, pointer values

 

Hustle: heaps and lists

 

10/1

 

Exam 1

 

 

E1

10/6

 

Array data, pointer offsets, mutation

 

Hoax: vectors and strings

 

10/8

 

Strings

 

Hoax: vectors and strings

 

A4

10/13

 

No class: Fall Break

 

 

10/15

 

slack

 

 

10/20

 

Function definitions and calls

 

Iniquity: function definitions and calls

 

10/22

 

Function definitions and calls

 

Iniquity: function definitions and calls

 

10/27

 

Tail calls

 

Jig: jumping to tail calls

 

10/29

 

Pattern matching, interpretation

 

Knock: pattern matching

 

11/3

 

Pattern matching, compilation

 

Knock: pattern matching

 

11/5

 

Exam 2

 

 

E2

11/10

 

Lambda

 

Loot: lambda the ultimate

 

11/12

 

Lambda

 

Loot: lambda the ultimate

 

11/17

 

Symbols, static and dynamic interning

 

Mug: symbols and interned string literals

 

11/19

 

Compound static data

 

Mountebank: quote and compound static data

 

11/24

 

Slack

 

 

11/26

 

No class: Thanksgiving

 

 

12/1

 

Structures

 

Neerdowell: structures

 

12/3

 

Self-hosting

 

Outlaw: self-hosting

 

12/8

 

Self-hosting

 

Outlaw: self-hosting

 

12/11

 

Slack

 

 

Final exam: December 17, 10:30am–12:30pm.