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.
CS0330 is taught by Professor Tom Doeppner (twd). Lectures are held every Monday, Wednesday, and Friday, from 2:00 to 2:50 PM at MacMillan 117, and are also recorded on panopto and will be uploaded after each lecture.
The course is intended primarily for computer science students and computer engineers, though it's open to anyone with adequate preparation interested in learning the topics covered in the course announcement. 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 16, CS 18, CS 19, or CS 200 (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 organization of computer systems (in terms of storage units, caches, processors, and I/O controllers) and teaches students assembly-language 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."
Check out the following useful documents for questions you have about course organization, code style, or tools we use.
If you're looking for hours for projects or labs, please see hours →
All projects are released 3:00 pm EST on specified out day and due at 11:59 pm EST on the specified due date. The late deadline is 6 days after normal deadline. 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 →
Name | Out | Due |
---|---|---|
Maze | 9/9 | 9/21 |
Data / Example | 9/21 | 9/28 |
Traps | 9/28 | 10/7 |
Buffer | 10/7 | 10/17 |
Shell 1 | 10/24 | 10/31 |
Shell 2 / Shell Questions | 10/31 | 11/9 |
Malloc / Malloc Questions | 11/9 | 11/30 |
Database | 11/30 | 12/16 |
Labs are released on Mondays 12 am EST – besides the first lab which is released on a Friday. They can be done individually or in pairs and can be completed on your own time 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 submitted via Gradescope by 11:59 pm EST the night they are due. The late deadline is 1 week after normal deadline. Submissions made during the week after a lab was assigned will receive half credit.
Name | Out | Due |
---|---|---|
Lab 1: Setup and GDB | 9/9 | 9/18 |
Lab 2: Strings and Parsing | 9/19 | 9/25 |
Lab 3: atoi | 9/26 | 10/2 |
Lab 4: Makefiles | 10/3 | 10/9 |
Optional Lab 5: Performance | 10/17 | 10/23 |
Lab 6: Signals | 10/31 | 11/6 |
Lab 7: Alloc | 11/7 | 11/13 |
Lab 8: Network | 11/14 | 11/20 |
Lab 9: Concurrency | 11/28 | 12/4 |
Homeworks are required for graduate students taking the course, and optional for everyone else. Only homeworks submitted by graduate students will be graded. You can submit your homework through Gradescope. If you have questions about the homework, please attend Tom's office hours.
Name | Out | Due |
---|---|---|
HW1 / Solution | 9/9 | 9/16 |
HW2 / Solution | 9/16 | 9/23 |
HW3 / Solution | 9/23 | 9/30 |
HW4 / Solution | 9/30 | 10/7 |
HW5 / Solution | 10/7 | 10/21 |
HW6 / Solution | 10/21 | 10/28 |
HW7 / Solution | 10/28 | 11/4 |
HW8 / Solution | 11/4 | 11/11 |
HW9 / Solution | 11/11 | 11/18 |
Lectures are held every Monday, Wednesday, and Friday at MacMillan 117. They are recorded on Panopto and will be uploaded after each lecture.
Date | Topic | Readings | Notes | Recording | Take Away Questions | Code | |
---|---|---|---|---|---|---|---|
1 | Sept 7 | Intro to CSCI 330; Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
2 | Sep 9 | Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
3 | Sept 12 | Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
4 | Sept 14 | Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
5 | Sept 16 | Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
6 | Sept 19 | Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
7 | Sept 21 | Data Representation | Chapter 2 |
Slides
Notes |
Recording |
Questions
Answers |
|
8 | Sept 23 | Data Representation | Chapter 2 |
Slides
Notes |
Recording |
Questions
Answers |
|
9 | Sept 26 | x86 Assembler Language | Sections 3.1, 3.2 |
Slides
Notes |
Recording |
Questions
Answers |
|
10 | Sept 28 | x86 Assembler Language | Sections 3.1, 3.2 |
Slides
Notes |
Recording |
Questions
Answers |
|
11 | Sept 30 | x86 Assembler Language | Sections 3.4, 3.5 |
Slides
Notes |
Recording |
Questions
Answers |
|
12 | Oct 3 | x86 Assembler Language | Section 3.6 |
Slides
Notes |
Recording |
Questions
Answers |
|
13 | Oct 5 | x86 Assembler Language | Section 3.7 |
Slides
Notes |
Recording |
Questions
Answers |
|
14 | Oct 7 | Processor Arch. and Performance | Sections 5.1-5.6 |
Slides
Notes |
Recording |
Questions
Answers |
|
Oct 10 | Holiday! | ||||||
15 | Oct 12 | Processor Arch. and Performance | Sections 5.1-5.6 |
Slides
Notes |
Recording |
Questions
Answers |
|
16 | Oct 14 | Memory Hierarchy I | Section 5.7-5.12 |
Slides
Notes |
Recording |
Questions
Answers |
|
17 | Oct 17 | Caching | Sections 6.1-6.2 |
Slides
Notes |
Recording |
Questions
Answers |
|
18 | Oct 19 | Architecture and OS | Sections 8.1-8.4 |
Slides
Notes |
Recording |
Questions
Answers |
|
19 | Oct 21 | Shells and Files | Section 10.1 |
Slides
Notes |
Recording |
Questions
Answers |
|
20 | Oct 24 | Files | Sections 10.2-10.11 |
Slides
Notes |
Recording |
Questions
Answers |
|
21 | Oct 26 | Signals | Sections 8.5-8.6 |
Slides
Notes |
Recording |
Questions
Answers |
|
22 | Oct 28 | Signals |
Slides
Notes |
Recording |
Questions
Answers |
||
23 | Oct 31 | Memory Hierarchy II | Sections 6.4, 6.5 |
Slides
Notes |
Recording |
Questions
Answers |
|
24 | Nov 2 | Linking and Loading | Section 6.3 |
Slides
Notes |
Recording |
Questions
Answers |
|
25 | Nov 4 | Memory Management | Sections 7.1-7.9 |
Slides
Notes |
Recording |
Questions
Answers |
|
26 | Nov 7 | Memory Management | Section 9.9 |
Slides
Notes |
Recording |
Questions
Answers |
|
27 | Nov 9 | Virtual Memory |
Slides
Notes |
Recording |
Questions
Answers |
||
28 | Nov 11 | Virtual Memory | Sections 9.1, 9.2, 9.6, 9.8 |
Slides
Notes |
Recording |
Questions
Answers |
udpClient.c udpServer.c |
29 | Nov 14 | Network Programming | Sections 7.10-7.13, 11.1-11.4 |
Slides
Notes |
Recording |
Questions
Answers |
tcpClient.c tcpServer.c |
30 | Nov 16 | Libraries |
Slides
Notes |
Recording |
Questions
Answers |
||
31 | Nov 18 | Concurrent Programming | Chapter 12 |
Slides
Notes |
Recording |
Questions
Answers |
|
32 | Nov 21 | Concurrent Programming |
Slides
Notes |
Recording |
Questions
Answers |
||
Nov 23 | Holiday! | ||||||
Nov 26 | Holiday! | ||||||
33 | Nov 28 | Concurrent Programming |
Slides
Notes |
Recording |
Questions
Answers |
||
34 | Nov 30 | Concurrent Programming |
Slides
Notes |
Recording |
Questions
Answers |
||
35 | Dec 2 | Concurrent Programming |
Slides
Notes |
Recording |
Questions
Answers |
||
36 | Dec 5 | Libraries |
Slides
Notes |
Recording |
Questions
Answers |
||
37 | Dec 7 | Summing Up |
Slides
Notes |
Recording |
Questions Answers |
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!
For each project, we will hold a Gear Up session a day after it is released. All Gear Up sessions will be held via Zoom, and check the course calendar for time and Zoom link. Come prepared with questions!!
Date | Topic | Slides | Video |
---|---|---|---|
9/12 CIT 241 @ 8pm | Maze | Slides | Video |
9/22 CIT 165 @ 8pm | Data | Slides | Video |
9/29 CIT 165 @ 8pm | Traps | Slides | Video |
10/11 CIT 165 @ 9pm | Buffer | Slides | Video |
10/25 CIT 165 @ 10pm | Shell 1 | Slides | Video |
11/1 CIT 165 @ 9pm | Shell 2 | Slides | Video |
11/10 CIT 265 @ 8pm | Malloc | Slides | Video |
11/30 CIT 165 @ 8pm | Database | Slides | Video |
Professor Doeppner's hours will be in CIT 405, x3-7633.
Monday | 3-4pm |
Wednesday | 3-4pm |
Friday | 3-4pm |
During TA hours, you'll be able to get help from TAs with course concepts as well as project and lab-specific questions. Note that you may not ask questions about labs in project hours (and vice versa).
During conceptual hours, you may not bring up code-specific questions. This would be a time to get clarification on course concepts so you can better apply them to projects.
Some example questions for conceptual hours:
Sign up for TA hours via Hours.
twd
he/him/his
Tom has been at Brown CS since its inception (not Brown's, but Brown CS's). He personally installed Brown's first UNIX system and has been into systems ever since. When not doing CS, he likes photography, which he prefers to do underwater, but now does mostly on land.
(cs0330headtas@lists.brown.edu)
ayalava2
He/Him/His
Hi there! I'm a senior studying apma-cs. Outside of class I'm into photography and filmmaking!
ddang4
He/Him/His
Hi!! I'm a senior concentrating in Computer Science from New Delhi, India. I like F1, ping pong and video-games.
hluby
She/Her
Hello! I'm a senior studying CS from Phoenix, AZ. I love coffee, cats, and watching all types of movies (my fav zombie movie is 28 Days Later!). Incredibly excited to be your HTA :D
psimon2
He/Him/His
Hey everyone! I'm a junior from Massachusetts studying CS and Geology. I love hiking, climbing and skiing, playing board and video games, and I'm a sucker for Star Wars and mac and cheese. Laundry as a cucumber
(cs0330tas@lists.brown.edu)
agu10
he/him/his
This could be us but you playin
cchen120
They/Them/Theirs
Hey! I am Cal, a senior from Shanghai and NYC concentrating in Classics and CS-Econ. I love watching old movies, reading restaurant reviews, and baking. I am a huge fan of sweets, so you can probably find me at various cafes, bakeries, or ice cream shops in Providence.
czhan152
She/Her
Hi! I'm Camille, and I'm a junior concentrating in CS. I'm from Sacramento, California (ikr I'm one of the few people from California but not from SoCal *shock*). In my free time I generally just lay in bed and watch Youtube like a vegetable, but if I must move around I also enjoy dancing, figure skating, and paddle boarding.
hhu16
She/Her
Hi everyone! I'm Cristina and I'm a junior from Lima, Peru concentrating in APMA-CS and French. I enjoy binge watching mystery or law shows, looking for new restaurants to try out and taking long walks. Looking forward to the semester :)
djoca
he/him/his
Hi, I’m Danny. I’m a senior from Boston studying computer engineering. Outside of class, I enjoying watching and debating football, burning time with video games, and rewatching old mafia movies I’ve seen like 20 times.
ebielawa
He/Him/His
Hello! I'm a junior from Massachusetts studying Math and Computer Science. Outside of class, I like hiking, playing video games, and building models. Ask me anything about my collection of systems memes (they help me stay afloat in the systems apocalypse).
exing1
he/him/his
Hi! My name is Edward Xing. I am from Westfield, NJ. At Brown, I study Applied Math-Computer Science and Economics.
ewang96
She/Her
Hello! I'm Emily and I'm a junior from Taiwan. I'm concentrating in CS and IAPA, and I'm a fan of European football and all manner of random music, TV, and movies, especially Star Wars. Feel free to chat with me about the weekly release of Andor or the World Cup! Excited to work with you all!
hjeon15
She/Her/Hers
Hi! I’m Hannah, a junior concentrating in Computer Science and Philosophy. I’m from Seattle, WA, but my family recently moved to Seoul, S. Korea. In my free time, I enjoy doing art and playing gacha games. I also play the viola (the best string instrument)!!
jcheng46
He/Him/His
Hello! My name is Jack. I come from Barrington, RI. I study math-cs and I like to try and open as many doors as I can and walk into them.
jgabbay2
He/Him/His
Hi. Jamie. Mass of chusetts. 2025. CompSci.
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo *click*
jeveleth
He/Him
Hi, I'm Jason. I'm a senior concentrating in Math-CS. I like running, ultimate frisbee, minecraft, and vim.
khachisu
he/him/his
Hi! I'm a junior from Conroe, TX concentrating in CS. Outside of schoolwork I enjoy playing rugby, hockey, and watching F1!
knishiji
He/Him
Hi! I'm a junior from Japan studying CS! I love coffee, soccer and dance!
kkimata
he/him/his
Hi! I'm a senior from Japan currently studying Computer Science. I love watching anime and traveling around places. Nice to meet you all!
klu25
He/Him
I'm a junior studying applied math and computer science. I grew up in New Orleans, Louisiana and I have 2 cats.
ksoda
He/Him/His
Hey everyone, I'm a Senior studying APMA-CS from Tokyo, Japan. I enjoy watching/playing baseball and making pasta sauces. I hope I don't turn into a walker by the end of the semester!
srosa5
He/Him/Any
Hey my name's Rosa :) I'm a junior from Rochester, NY, studying CS in the Security pathway. I love anime, video games, cool earrings, cats, and good food!
tvividhw
He/Him
Hello everyone! You can call me KP. I'm a junior concentrating in APMA-CS from Bangkok, Thailand. Outside of class, I love playing tennis, Jstris, and doing CTF challenges online!
vlu11
She/Her
Hi! I'm a junior from Seattle studying APMA-CS. Outside of class, I enjoy crocheting, playing ping-pong, and watching video essays. Excited to be your TA this semester!
wchen77
He/Him
Hi, I'm Will! I'm a senior concentrating in CS-Econ from Baltimore, Maryland. Outside of class, I enjoy listening to jazz and R&B, going to the gym, and watching horror films. I'm also a licensed bartender!