Welcome to Introduction to Systems! This course covers the organization of computer systems (in terms of storage units, caches, processors, and I/O controllers) and teaches you assembly and C language programming.

Course Information

CS033 is taught by Professor Tom Doeppner (twd). Lectures are held every Monday, Wednesday, and Friday, from 2:00 to 2:50 PM in Salomon DECI.

The course is intended primarily for computer science students and computer engineers, though it is open to anyone with adequate preparation interested in learning the topics covered in the course announcement below.. It fulfills a core requirement for the A.B. and Sc.B. tracks in computer science, and is required for the Computer Engineering concentration.

In order to take CS 33, you should have taken CS 15, CS 18 or CS 19 (or have Tom's permission). Familiarity with a C-like language (such as C++ or Java) will help you with this course. However, knowing C is not a prerequisite for the course.

"High-level computer architecture and systems programming. The course covers the organization of computer systems (in terms of storage units, caches, processors, and I/O controllers) and teaches students assembly-language programming and C language programming. Extensive programming exercises introduce students to systems-level programming on Linux systems, as well as to multithreaded programming with POSIX threads. Students will learn the basics of how compilers work and will be introduced to the functions of operating systems."
– Course Announcement

Guides & Documents

Check out the following useful documents for questions you have about course organization, code style, or tools we use.

Quick links


If you're looking for hours for projects or labs, please see Hours →


All projects are due at 11:59 pm on the specified due date. To accept your handin, we must have a collaboration policy signed and dated. To check if you have turned one in, please check this form →

Data / Worked Example9/209/27
Performance + Strings 10/1810/25
Shell 1 10/2511/1
Shell 211/111/8


Labs are released on Mondays and can be completed on your own or during lab hours. During lab hours, you will be able to work with others and get help from TAs. You must complete each lab and have it checked off by the end of the last lab hours prior to the release of the following week's lab*. Submissions during the week after that in which a lab was assigned will receive half credit.

Lab 1: Life9/99/18
Lab 2: Tools9/199/25
Lab 3: x86 Part 19/2610/2
Lab 4: x86 Part 210/310/9
Lab 5: Profiling10/1710/23
Lab 6: Makefiles10/2410/30
Lab 7: Signals10/3111/6
Lab 8: Alloc11/711/13
Lab 9: Virtual Memory11/1411/20
Lab 10: Networking11/2111/27
Lab 11: Concurrency (Part One)11/2812/4
Lab 11: Concurrency (Part Two)11/2812/11

*This means that the Sunday 2-4 lab time is the last available slot to get your labs checked off for full credit.


Lectures are held every Monday, Wednesday, and Friday, from 2 to 2:50 PM in Salomon DECI.

DateTopicReadingsNotes/CodeRecording (.mp4)
Sept 7Intro to CSCI 330; Intro to CChapter 1[Notes][Full]Video
Sept 9Intro to CChapter 1[Notes][Full]Video
Sept 12Intro to CChapter 1[Notes][Full]No Video
Sept 14Intro to CChapter 1[Notes][Full]Video
Sept 16Intro to CChapter 1[Notes][Full]Video
Sept 19Intro to CChapter 1[Notes][Full]Video
Sept 21Data RepresentationChapter 2[Notes][Full]Video
Sept 23Data RepresentationChapter 2[Notes][Full]Video
Sept 26x86 Assembler LanguageSections 3.1, 3.2 [Notes][Full]Video
Sept 28x86 Assembler LanguageSections 3.4, 3.5[Notes][Full]Video
Sept 30x86 Assembler LanguageSection 3.6[Notes][Full]
Oct 3x86 Assembler LanguageSection 3.7
Oct 5x86 Assembler LanguageSection 3.10
Oct 7Processor Arch. and PerformanceSections 5.1-5.6
Oct 10 Holiday!
Oct 12Processor Arch. and PerformanceSections 5.7-5.12
Oct 14Memory HierarchySection 6.1
Oct 17Memory HierarchySection 6.2
Oct 19Memory HierarchySections 6.3-6.5
Oct 21Architecture and OSSections 8.1-8.4
Oct 24Shells and FilesSections 10.1
Oct 26FilesSections 10.2-10.11
Oct 28FilesSections 10.2-10.11
Oct 31SignalsSection 8.5
Nov 2SignalsSection 8.6
Nov 4Linking and LoadingSections 7.1-7.7
Nov 7Memory ManagementSection 9.9
Nov 9Memory ManagementSection 9.9
Nov 11Virtual MemorySections 9.1-9.2,9.6,9.8
Nov 14LibrariesSections 7.12, 8.13
Nov 16Network ProgrammingSections 11.1-11.4
Nov 18Network ProgrammingSections 11.1-11.4
Nov 21Catch-up
Nov 23Holiday!
Nov 25Holiday!
Nov 28Concurrent ProgrammingChapter 12
Nov 30Concurrent ProgrammingChapter 12
Dec 2Concurrent ProgrammingChapter 12
Dec 5Concurrent ProgrammingChapter 12
Dec 7Concurrent ProgrammingChapter 12

Project Gear Ups

Looking for guidance as you start your project each week? Want a refresher on what material has been covered and an outline of what you will be writing? Come to our Project Gear Up Sessions! We’ll also be going over how to use the demo(s) and tester(s) and other relevant scripts for each project!

TAs will be hosting sessions in CIT 165 (Motorola) each Thursday after a project is released. Sessions will run from 8pm-9:30pm.

*** Maze's gear-up session will be held in Barus and Holley 168 instead of Motorola.

Sept 12***MazeLink
Sept 22DataLink
Sept 29Bomb
Oct 13Buffer
Oct 20Strings + Performance
Oct 27Shell 1
Nov 3Shell 2
Nov 10Malloc
Dec 1Database


Tom's Office Hours

Professor Doeppner's hours will be held in CIT 405.


TA Hours

During TA hours, you'll be able to get help from TAs with course concepts and project-specific questions. Note that you may not ask questions about labs or have a lab checked off on TA hours.

TA hours will be held in CIT 205 and the fishbowl (CIT 271). Hours being held in the fishbowl are marked with an asterisk*. All other hours are held in CIT 205. Head TAs (Joe S, Sorin, Guo) are listed in bold.

During weeks when there is not a gear-up presentation, two of the gear-up TAs (either Giovanni + Adarsh or Lael + Katelyn) will hold hours on Thursday from 8-10 in CIT 205.

9 - 10 amEgor*
10 - 11 amEgor*Sarita (Starts at 10:30)
11am - 12pmDan*SaritaDan*
12 - 1 pmDan*Sarita (Ends at 12:30)Dan*
1 - 2 pm
2 - 3 pm
3 - 4 pmAdarsh, Giovanni or Katelyn, LaelChelse, Oussama
4 - 5 pmAdarsh, Giovanni or Katelyn, LaelAndreiChelse, OussamaWill F, Abinaya
5 - 6 pmArun, NathanHans, TingBen, Jon, KatelynMax, AlexAndreiAlejandro, HangkunWill F, Abinaya
6 - 7 pmArun, NathanHans, TingBen, Jon, KatelynMax, AlexJoseph B, AlejandroAlejandro, HangkunAryan, Guo
7 - 8 pmMichael, Giovanni, AlexSean, Chirayu, SorinJoseph B, Adarsh, Sorin, FilipChelse, Peter CJoseph B, AlejandroAryan, Guo
8 - 9 pmMichael, Giovanni, AlexSean, Chirayu, SorinJoseph B, Adarsh, Sorin, FilipChelse, Peter CAdarsh, Giovanni or Katelyn, Lael**
9 - 10 pmHangkun, Peter S, Michael, Will TJoe S, Jared, Lael, MaxAdarsh, Giovanni or Katelyn, Lael**
10 - 11 pmHangkun, Peter S, Michael, Will TJoe S, Jared, Lael, Max

*Located in the fishbowl (CIT 271)
**Only on weeks that have no gear-up

Lab Hours

During lab hours, you will be able to work with others and ask TAs for help finishing lab. Please show up to one of the following times to work on a lab and have it checked off by a TA. Head TAs are in bold. Note that TAs will not answer project-related questions during lab hours.

Monday 5-7MSLabJon, Peter C
Wednesday 4-6MSLabAbinaya, Hans
Wednesday 6-8MSLabOussama, Ting
Thursday 3-5MSLabWill F, Ben
Thursday 5-7MSLabSean, Egor
Friday 3-5MSLabNathan, Sarita
Saturday 2-4SunlabWill T, Arun, Chirayu
Saturday 4-6SunlabGuo, Filip, Andrei
Sunday 2-4SunlabAryan, Joe S, Jared, Peter S



Tom Doeppner

HTAs (cs033headtas@cs.brown.edu)

Guo Wang

Joe Stein

Sorin Vatasoiu

UTAs (cs033tas@cs.brown.edu)

Abinaya Raman

Adarsh Narayanan

Alejandro Molina

Andrei Radu Voicu

Arun Drelich

Aryan Chhabria

Benjamin Wesner

Chelse-Amoy Steele

Chirayu Poudel

Daniel Glauber

Egor Shakhnovskiy

Filip Bystricky

Giovanni Pittalis

Hangkun Ung

Hans Halverson

Jared Cohen

Jonathan Lister

Joseph Bellavia

Katelyn Weingart

Lael Costa

Max Luzuriaga

Michael Xu

Nathan Hyde

Oussama Ben Abdelbaki

Peter Clarke

Peter Scott

Sarita Ballakur

Sean Segal

T Alexander Chen

Ting Xia

William Flotte

William Thompson