8.18

Schedule🔗

Date

 

Topic

 

Notes

 

Due

6/1

 

Intro to compilers, Racket language, a86 assembly

 

 

P1

6/2

 

First compiler, control flow, type tags

 

 

P2

6/3

 

I/O, system calls, ABI

 

Evildoer: change the world a couple nibbles at a time

 

6/4

 

Errors, type tag checking

 

Extort: when errors exist

 

A1

6/5

 

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

 

Fraud: local binding, variables, and binary operations

 

6/8

 

Binary operations

 

Fraud: local binding, variables, and binary operations

 

A2

6/9

 

Inductive data, memory allocation, pointer values

 

Hustle: heaps and lists

 

6/10

 

Array data, pointer offsets, mutation

 

Hoax: vectors and strings

 

6/11

 

Slack

 

 

A3

6/12

 

Exam, no lecture

 

 

E1

6/15

 

Function definitions and calls

 

Iniquity: function definitions and calls

 

A4

6/16

 

Tail calls

 

Jig: jumping to tail calls

 

6/17

 

First-class functions, closures

 

Loot: lambda the ultimate

 

6/18

 

First-class functions, code pointers, environments

 

Loot: lambda the ultimate

 

A5

6/19

 

Juneteenth Holiday, no lecture

 

 

6/22

 

Pattern matching, interpretation

 

Knock: pattern matching

 

A6

6/23

 

Pattern matching, compilation

 

Knock: pattern matching

 

6/24

 

Symbols, static and dynamic interning

 

Mug: symbols and interned string literals

 

6/25

 

Compound static data

 

Mountebank: quote and compound static data

 

A7

6/26

 

Exam, no lecture

 

 

E2

6/29

 

Structures

 

Neerdowell: structures

 

A8

6/30

 

Slack

 

 

7/1

 

Source transformations

 

 

7/2

 

Peephole optimizations

 

 

A9

7/3

 

Independence Day Holiday, no lecture

 

 

7/6

 

Garbage collection

 

 

A10

7/7

 

Self-hosting

 

Outlaw: self-hosting

 

7/8

 

Conclusion

 

 

7/9

 

Slack

 

 

7/10

 

Exam, no lecture

 

 

E3