CSCI 1260

Compilers and Program Analysis

Fall 2025

Introduction

Welcome to CSCI 1260 at Brown University!

IMPORTANT NOTE FOR FALL 2025 REGISTRATION: We expect there to be room in compilers for everyone who wants a seat. If the course is full, please request an override on CAB. I will not respond to these until shopping period at the earliest. During shopping period, please check enrollment regularly and register directly if there are open seats. Please do not email Rob or the TA staff about getting into this course.

This website is being updated for Fall 2025. The dates below are not reliable. The midterm and final exams will be on October 20 (tentative) and December 20 (definite). All students are expected to take these exams in person.

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 3:00 - 4:20 PM in CIT 368. All course lectures will be recorded and livestreamed on Panopto.

Assignments

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

Lectures

Lectures take place every Monday and Wednesday from 3:00 - 4:20 PM in CIT 368. 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 03 What is a compiler? Recording
September 08 OCaml intro; S-Expressions Recording
September 10 Unary operations Recording
September 15 Booleans Recording
September 17 More booleans, conditionals Recording
September 22 Binary operations Recording
September 24 Abstract syntax trees Recording
September 29 Naming expression with let Recording
October 01 Pairs and the heap Recording
October 06 Handling errrors Recording
October 08 Debugging assembly Recording
October 14 NO CLASS Recording
October 15 Interacting with the environment Recording
October 20 MIDTERM EXAM (In Person) Recording
October 22 Functions Recording
October 27 Tail calls Recording
November 29 First class functions Recording
November 03 Lambda lifting and closures Recording
November 5 Parsing Recording
November 10 More on parsing Recording
November 12 Optimization intro -- constant folding Recording
November 17 Inlining, CSE Recording
November 19 IRs and register allocation Recording
November 24 TBD Recording
November 26 NO CLASS Recording
December 01 TBD Recording
December 03 Trust and Verification Recording
December 20 FINAL EXAM (In Person) Recording

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

Christina Stepin 🦩

HTA | cstepin

Hi! I'm a senior from Seattle studying Math + CS and Music! Outside of class, I enjoy playing chess and reading Young Adult literature. Pronouns: she/her/hers

Max Guo 🦙

UTA | mguo36

Hi! My name is Max. I'm from New Jersey, and I'm currently a junior studying computer science. I love music (I will listen to anything), basketball, computer graphics, and painting! Pronouns: he/him/his

Oscar McNally 🦎

UTA | omcnally

Hello! I'm a senior from Portland, Maine studying CS and Education. I'm an avid chess player and love to cook and discover new music! Pronouns: they/he

Effy Pelayo Tran 🪐

UTA | ttran59

Hey! I'm a senior from the Bay Area studying CS. In my free time, I love studying art history, biking, and playing pool. Pronouns: she/her/hers

Lukas Strelecky 🍔

UTA | lstrelec

Hi! I'm a junior from New Jersey studying CS. In my free time, I enjoy weightlifting, distance running, and cooking. Pronouns: he/him/his