CSCI 1260

Compilers and Program Analysis

Fall 2023

Introduction

Welcome to CSCI 1260 at Brown University!

IMPORTANT NOTE FOR FALL 2024 REGISTRATION: to request an override for CS1260, please use the central override form provided by the CS department. Do not email Rob or the CS1260 staff. Direct questions or concerns about the course override process to enroll-questions@lists.cs.brown.edu.

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 in CIT 241. All course lectures will be recorded and livestreamed on Panopto.

Assignments

Homework Out In
0. OCaml Warmup Sep. 6 Sep. 13
1. S-expressions Sep. 13 Sep. 20
2. Characters Sep. 20 Sep. 27
3. DMAOC (div, mul, and, or, case) Sep. 27 Oct. 11
4. Error handling and the heap Oct. 11 Oct. 18
5. Fun with files Oct. 18 Nov. 1 2
6. Apply, variadic functions Nov. 1 Nov. 15
7. MiniML Nov. 15 Nov. 29
8. Optimizations Nov. 28 Dec. 17 (benchmarks Dec 9)
Lab Handout Github Classroom
Compiler Infrastructure Handout Github Classroom
Debugging Assembly Handout Github Classroom
Parser Generators Handout Github Classroom
Drill Out In
Drill 1 (Solutions) Sep. 6 Sep. 10
Drill 2 (Solutions) Sep. 13 Sep. 17
Drill 3 (Solutions) Sep. 20 Sep. 24
Drill 4 (Solutions) Sep. 28 Oct. 1
Drill 5 (Solutions) Oct. 11 Oct. 15
Drill 6 (Solutions) Nov. 1 Nov. 5
Drill 7 (Solutions) Nov. 8 Nov. 12
Drill 9 (Solutions) Dec. 4 Dec 11
Exam Date
Midterm Oct. 25
Final Dec. 13

Lectures

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 are linked here.

Lecture topics for future dates are very tentative.

Date Topic Recording
September 06 What is a compiler? Recording (Last year's recording with audio)
September 11 OCaml intro; S-Expressions Recording
September 13 Unary operations Recording
September 18 Booleans Recording
September 20 More booleans, conditionals Recording
September 25 Binary operations Recording
September 27 Abstract syntax trees Recording
October 02 Naming expression with let Recording
October 04 Pairs and the heap Recording
October 09 NO CLASS
October 11 Handling errrors Recording
October 16 Debugging assembly Recording
October 18 Interacting with the environment Recording
October 23 Output and functions Recording
October 25 MIDTERM EXAM (in class)
October 30 More on functions Recording
November 01 Tail calls Recording
November 06 Function pointers; first-class and anonymous functions Recording
November 08 Lambda lifting and closures Recording
November 13 More on parsing Recording
November 15 Guest lecture: Keith Adams on HHVM Recording
November 20 Optimization intro -- constant folding Recording
November 22 NO CLASS
November 27 Inlining, CSE Recording
November 29 IRs and register allocation Recording
December 04 Trust and verification Recording
December 06 NO CLASS
December 13 FINAL EXAM (in person)

Calendar

Zoom links are included in the Google Calendar event, as well as in the Hours Queue.

Resources

Quick Links

Reference Labs

Contact

Staff

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

Jiahua Chen 🌵

HTA | jchen345

Hi! I'm a senior from HK and Shanghai studying Math & CS! Talk to me about art, photography, or board games! Pronouns: he/him/his

Yutong Li 🍦

UTA | yli195

Just call me Yuu! I'm a master's student studying CS, and I used to be a ling major. I love strolling around while listening to J-pop/Vocaloid/Post-rock.

Parker Simon 🦖

UTA | psimon2

Hi everyone! I'm a senior from Massachusetts studying Geology and Computer Science. I love climbing, hiking and skiing, and a good bowl of mac and cheese.

Linus Sun 🤠

UTA | lsun23

Hi! I'm from Vancouver and I enjoy climbing, mixology, and keyboards! Pronouns: he/him/his

Nora Tang 🐨

UTA | jtang82

Hello! My name is Nora. Tizzy K's is my favorite spot in Providence. Pronouns: she/her/hers

Conrad Zimmerman 🏃‍♀️

UTA | czimmer

Hi! I study math, play Pokemon Go, and sometimes run. In no particular order, I love coffee, programming languages, cute (little) dogs, and first order logic. Pronouns: she/her/hers

Etha Hua 🐘

UTA | thua5

Hi! I am a first-year master's student. Before coming to Brown, I studied CS and philosophy at Tufts. I enjoy street photography, 20th-century films, and the mechanical interpretability of language models. Pronouns: he/him/his

Xinrui Zhou 🐰

UTA | xzhou81

Hi! I'm a master's student studying CS. I'm from Chengdu, China, the home to adorable pandas and some of the best hot pot you'll ever taste. I love reading, cooking, listening to R&B and kpop. Pronouns: she/her/hers

Vipul Sharma 🛶

UTA | vsharm44

Hello! I'm a first-year master's student from India. I love trying out new recipes, modern classical music and phonk. Pronouns: he/him/his