Compilers and Program Analysis
Welcome to CSCI 1260 at Brown University!
Have you ever wondered why C programs seem to run faster than Python programs? Have you ever been confused by an error message and wondered why Java couldn't understand your program? In CSCI 1260, we'll learn how compilers read in code in one language and produce code in another; in particular, we'll learn how to translate high-level languages to code that your computer's processor can understand. We will get hands-on practice developing compilers for a series of increasingly complex languages. Along the way, we'll learn some general best practices for developing and testing complex software systems.
Lectures take place every Monday and Wednesday from 9:30 - 10:50 AM.
- From Sep 7 through Oct 12 we will meet in CIT 241.
- From Oct 17 onward we will meet in CIT 165, with one exception:
- On Nov 9 we will meet in CIT 241.
|0. OCaml Warmup||Sep. 7||Sep. 14|
|1. S-expressions||Sep. 14||Sep. 21|
|2. Characters||Sep. 21||Sep. 28|
|3. DMAOLC (div, mul, and, or, let, case)||Sep. 28||Oct. 12|
|4. Error handling and the heap||Oct. 12||Oct. 19|
|5. Fun with files||Oct. 26|
|6. Apply, variadic functions||Nov. 2||Nov. 16|
|7. MiniML||Nov. 16||Nov. 23|
|8. Optimizations||Nov. 23||Dec. 12 (benchmarks Dec 5)|
|Compiler Infrastructure||Handout||Github Classroom|
|Debugging Assembly||Handout||Github Classroom|
|Parser Generators||Handout||Github Classroom|
|Drill 1 (Solutions)||Sep. 7||Sep. 11|
|Drill 2 (Solutions)||Sep. 14||Sep. 18|
|Drill 3 (Solutions)||Sep. 21||Sep. 25|
|Drill 4 (Solutions)||Oct. 5||Oct. 9|
|Drill 5 (Solutions)||Oct. 19||Oct. 23|
|Drill 6 (Solutions)||Oct. 31||Nov. 6|
|Drill 7 (Solutions)||Nov. 9||Nov.
|Drill 8 (Solutions)||Nov. 16||Nov. 20|
|Drill 9 (Solutions)||Nov. 30||Dec 4|
Lectures take place every Monday and Wednesday from 9:30 - 10:50 AM in CIT 241. The lecture notes will be updated after every class. Streams and recordings will show up in our Panopto folder and will (eventually) be linked here.
Lecture topics for future dates are very tentative.
Zoom links are included in the Google Calendar event, as well as in the SignMeUp Queue.
- Software Guide
- x86-64 reference
- Compiler from lectures
- Anonymous Feedback Form
- Extension Request Form
Robert Lewis 🦦
Professor | rlewis13
Call me Rob! I'm half computer scientist, half mathematician, and fully excited to learn about compilers with you all this semester. Pronouns: he/him/his
Ethan Mullen 🦖
UTA | emullen2
I’m a senior studying Computer Science and Theatre Arts. I’m from Atlanta, Georgia, and I love musical theatre. Pronouns: he/him/his
Raj Paul 🐨
UTA | rpaul5
Hi, I'm a senior from St. Louis, Missouri studying English and Computer Science. I love movies, breathing exercises, and all things food. Pronouns: he/him/his
Yanyan Ren 🍦
GTA | yren17
Hi there! My name is Yanyan and I’m a PhD student doing research in computing education. I’m from Nanjing, China. I love hanging out with my cat Oreo. Pronouns: she/her/hers
Nick Young 🐝
HTA | nyoung10
Hi! I'm from Vancouver and I enjoy climbing, mixology, and keyboards! Pronouns: he/him/his
Tyler Zickmund 🌋
UTA | tzickmun
Hello! My name is Tyler, I'm a 0.5'er (hence the grad photo) originally from North Carolina! My favorite type of camel is the Bactrian Camel. Pronouns: he/him/his