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

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

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/199/27
Strings + Performance10/1710/24
Shell 110/2411/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/89/17
Lab 2: Tools9/189/24
Lab 3: x86 Part 19/2510/1
Lab 4: x86 Part 210/210/15
Lab 5: Profiling10/1610/22
Lab 6: Makefiles10/2310/29
Lab 7: Signals10/3011/5
Lab 8: Alloc11/611/12
Lab 9: Virtual Memory11/1311/19
Lab 10: Networking11/2012/3
Lab 11: Concurrency (Part One)11/2712/3
Lab 12: Concurrency (Part Two)12/412/10

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


Homeworks are required for graduate students taking the course, and optional for everyone else. Only homeworks submitted by graduate students will be graded. If you have questions about the homework, please attend Tom's office hours.

NameOutDueSupplementary Files


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

DateTopicReadingsNotes/CodeRecording (.mp4)
Sept 6Intro to CSCI 330; Intro to CChapter 1[Notes][Full]Video
Sept 8Intro to CChapter 1[Notes][Full]Video
Sept 11Intro to CChapter 1[Notes][Full]Video
Sept 13Intro to CChapter 1[Notes][Full]Video
Sept 15Intro to CChapter 1[Notes][Full]Video
Sept 18Intro to CChapter 1[Notes][Full]Video
Sept 20Data RepresentationChapter 2[Notes][Full]Video
Sept 22Data RepresentationChapter 2[Notes][Full]Video
Sept 25Data RepresentationChapter 2[Notes][Full]Video
Sept 27x86 Assembler LanguageSections 3.1, 3.2 [Notes][Full]Video
Sept 29x86 Assembler LanguageSections 3.4, 3.5[Notes][Full]Video
Oct 2x86 Assembler LanguageSection 3.6[Notes][Full]Video
Oct 4x86 Assembler LanguageSection 3.7[Notes][Full]Video
Oct 6x86 Assembler LanguageSection 3.10[Notes][Full]Video
Oct 9 Holiday!
Oct 11Processor Arch. and PerformanceSections 5.1-5.6[Notes][Full]Video
Oct 13Processor Arch. and PerformanceSections 5.7-5.12[Notes][Full]Video
Oct 16Memory Hierarchy ISection 6.1-6.2[Notes][Full]Video
Oct 18CachingSections 6.4-6.5[Notes][Full]Video
Oct 20Architecture and OSSections 8.1-8.4[Notes][Full]Video
Oct 23Shells and FilesSection 10.1[Notes][Full]Video
Oct 25FilesSections 10.2-10.11[Notes][Full]Video
Oct 27SignalsSections 8.5-8.6[Notes][Full]Video
Oct 30SignalsSection 8.5-8.6[Notes][Full]Video
Nov 1Memory Hierarchy IISection 8.3[Notes][Full]Video
Nov 3Linking and LoadingSections 7.1-7.9[Notes][Full]Video
Nov 6Memory ManagementSections 9.9[Notes][Full]Video
Nov 8Memory ManagementSection 9.9[Notes][Full]Video
Nov 10Virtual MemorySections 9.1, 9.2, 9.6, 9.8[Notes][Full]Video
Nov 13LibrariesSections 7.10-7.13[Notes][Full]Video
Nov 15Network ProgrammingSections 11.1-11.4[Notes][Full][Code]Video
Nov 17Network ProgrammingSections 11.1-11.4[Notes][Full][Code]Video
Nov 20Concurrent ProgrammingChapter 12[Notes][Full]Video
Nov 22Holiday!
Nov 24Holiday!
Nov 27Concurrent ProgrammingChapter 12[Notes][Full]Video
Nov 29Concurrent ProgrammingChapter 12[Notes][Full]Video
Dec 1Concurrent ProgrammingChapter 12[Notes][Full]Video
Dec 4Concurrent ProgrammingChapter 12[Notes][Full]Video
Dec 6Concurrent ProgrammingChapter 12[Notes][Full]Video

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 Gear Up sessions each Thursday in Metcalf Auditorium after a project is released. Sessions will run from 8:00pm to 9:30pm.

***The Maze gear up will be held in Barus and Holley 166 from 7:00-8:30pm.

Sept 11***MazeSlidesVideo
Sept 21DataSlidesVideo
Sept 28TrapsSlidesVideo
Oct 5BufferSlidesVideo
Oct 19Strings + PerformanceSlidesVideo
Oct 26Shell 1SlidesVideo
Nov 2Shell 2SlidesVideo
Nov 9MallocSlidesVideo
Nov 30DatabaseSlidesVideo


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 201.

During weeks when there is not a gear-up presentation, the gear-up TAs (Amy and Natalie) will hold additional hours.

Lab Hours

During lab hours, you will be able to work with others and ask TAs for help finishing lab. Weekday lab hours are held in CIT 201, and weekend lab hours are held in the Sunlab (CIT 143). Please show up to one of the following times to work on a lab. Most labs are autograded, but for certain labs you will have to be checked off at these hours too. Note that TAs will not answer project-related questions during lab hours.



Tom Doeppner

HTAs (cs0330headtas@lists.brown.edu)

Alex Fratila

Emily Magavern

Jonathan Lister

William Flotte

UTAs (cs0330tas@lists.brown.edu)

Amy Winkler

Andrea Bennett

Ankita Sharma

Anna White

Arohi Kapoor

Beatriz Mora

Benjamin Navetta

Benjamin Weissmann

Brendan Walsh

Caleb Kim

Charles Tan

Christopher Harvie

Emma Sloan

Jackson Chaiken

Jacob Meltzer

Jared Cohen

Katie Ta

Lan Nguyen

Manav Kohli

Michael Gillett

Michael Xu

Misha Sohan

Natalie Lindsay

Nicholas Anthony

Rafael Reyes

Russell Dodd

Silei Ren

Sophie Saskin

Stephen Leung

Tim Chang

Yuyang Lu