CS33 is taught by Professor Tom Doeppner (twd). Lectures are held every Monday, Wednesday, and Friday, from 2:00 to 2:50 PM at 85 Waterman Street 130, 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 CS33, you should have taken CS16, CS18, CS19, or CS200 (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/8 | 9/20 |
Traps | 9/27 | 10/6 |
Buffer | 10/6 | 10/16 |
Shell 1 | 10/23 | 10/30 |
Shell 2 | 10/30 | 11/6 |
Malloc | 11/8 | 11/29 |
Database | 11/29 | 12/15 |
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/8 | 9/17 |
Lab 2: Strings and Parsing | 9/18 | 9/24 |
Lab 3: Data / Example | 9/25 | 10/1 |
Lab 4: atoi | 10/2 | 10/8 |
Lab 5: Makefiles | 10/11 | 10/17 |
Optional Lab 6: Performance | 10/16 | 10/22 |
Lab 7: Signals | 10/30 | 11/5 |
Lab 8: Alloc | 11/6 | 11/12 |
Lab 9: Network | 11/13 | 11/19 |
Lab 10: Concurrency | 11/27 | 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/8 | 9/15 |
HW2 / Solution | 9/15 | 9/22 |
HW3 / Solution | 9/22 | 9/29 |
HW4 / Solution | 9/29 | 10/6 |
HW5 / Solution | 10/6 | 10/20 |
HW6 / Solution | 10/20 | 10/27 |
HW8 / Solution | 11/3 | 11/10 |
HW9 / Solution | 11/13 | 11/18 |
Lectures are held every Monday, Wednesday, and Friday at 85 Waterman Street 130. They are recorded on Panopto and will be uploaded after each lecture.
Date | Topic | Readings | Notes | Recording | Take Away Questions | Code | |
---|---|---|---|---|---|---|---|
1 | Sept 6 | Intro to CS33; Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
2 | Sep 8 | Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
3 | Sept 11 | Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
4 | Sept 13 | Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
5 | Sept 15 | Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
6 | Sept 18 | Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
7 | Sept 20 | Data Representation | Chapter 2 |
Slides
Notes |
Recording |
Questions
Answers |
|
8 | Sept 22 | Data Representation | Chapter 2 |
Slides
Notes |
Recording |
Questions
Answers |
|
9 | Sept 25 | x86 Assembler Language | Sections 3.1, 3.2 |
Slides
Notes |
Recording |
Questions
Answers |
|
10 | Sept 27 | x86 Assembler Language | Sections 3.1, 3.2 |
Slides
Notes |
Recording |
Questions
Answers |
|
11 | Sept 29 | x86 Assembler Language | Sections 3.4, 3.5 |
Slides
Notes |
Recording |
Questions
Answers |
|
12 | Oct 2 | x86 Assembler Language | Section 3.6 |
Slides
Notes |
Recording |
Questions
Answers |
|
13 | Oct 4 | x86 Assembler Language | Section 3.7 |
Slides
Notes |
Recording |
Questions
Answers |
|
14 | Oct 6 | Processor Arch. and Performance | Sections 5.1-5.6 |
Slides
Notes |
Recording |
Questions
Answers |
|
Oct 9 | Holiday! | ||||||
15 | Oct 11 | Processor Arch. and Performance | Sections 5.1-5.6 |
Slides
Notes |
Recording |
Questions
Answers |
|
16 | Oct 13 | Memory Hierarchy I | Section 5.7-5.12 |
Slides
Notes |
Recording |
Questions
Answers |
|
17 | Oct 16 | Caching | Sections 6.1-6.2 |
Slides
Notes |
Recording |
Questions
Answers |
|
18 | Oct 18 | Architecture and OS | Sections 8.1-8.4 |
Slides
Notes |
Recording |
Questions
Answers |
|
19 | Oct 20 | Shells and Files | Section 10.1 |
Slides
Notes |
Recording |
Questions
Answers |
|
20 | Oct 23 | Files | Sections 10.2-10.11 |
Slides
Notes |
Recording |
Questions
Answers |
|
21 | Oct 25 | Signals | Sections 8.5-8.6 |
Slides
Notes |
Recording |
Questions
Answers |
|
22 | Oct 27 | Signals |
Slides
Notes |
Recording |
Questions
Answers |
||
23 | Oct 30 | Memory Hierarchy II | Sections 6.4, 6.5 |
Slides
Notes |
Recording |
Questions
Answers |
|
24 | Nov 1 | Linking and Loading | Section 6.3 |
Slides
Notes |
Recording |
Questions
Answers |
|
25 | Nov 3 | Memory Management | Sections 7.1-7.9 |
Slides
Notes |
Recording |
Questions
Answers |
|
26 | Nov 6 | Memory Management | Section 9.9 |
Slides
Notes |
Recording |
Questions
Answers |
|
27 | Nov 8 | Virtual Memory |
Slides
Notes |
Recording |
Questions
Answers |
||
28 | Nov 10 | Virtual Memory | Sections 9.1, 9.2, 9.6, 9.8 |
Slides
Notes |
Recording |
Questions
Answers |
udpClient.c udpServer.c |
29 | Nov 13 | Network Programming | Sections 7.10-7.13, 11.1-11.4 |
Slides
Notes |
Recording |
Questions
Answers |
tcpClient.c tcpServer.c |
30 | Nov 15 | Libraries |
Slides
Notes |
Recording |
Questions
Answers |
||
31 | Nov 17 | Concurrent Programming | Chapter 12 |
Slides
Notes |
Recording |
Questions
Answers |
|
32 | Nov 20 | Concurrent Programming |
Slides
Notes |
Recording |
Questions
Answers |
||
Nov 22 | Holiday! | ||||||
Nov 24 | Holiday! | ||||||
33 | Nov 27 | Concurrent Programming |
Slides
Notes |
Recording |
Questions
Answers |
||
34 | Nov 29 | Concurrent Programming |
Slides
Notes |
Recording |
Questions
Answers |
||
35 | Dec 1 | Concurrent Programming |
Slides
Notes |
Recording |
Questions
Answers |
||
36 | Dec 4 | Libraries |
Slides
Notes |
Recording |
Questions
Answers |
||
37 | Dec 6 | 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 soon 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/11 | Maze | Slides | Video |
9/29 | Traps | Slides | Video |
10/7 | Buffer | Slides | Video |
10/23 | Shell 1 | Slides | Video |
10/30 | Shell 2 | Slides | Video |
11/8 | Malloc | Slides | Video |
12/4 | 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. Unlike past offerings, the Fall 2023 offering of CS 330 will use a collaborative hours format rather than a queue structure.
During collaborative hours, you'll have the opportunities to work with other students and course staff on projects, labs, or conceptual questions. There is no distinction between project, lab, or conceptual hours as in the past. All sorts of questions related to the course are welcome at collaborative hours!
To attend collaborative hours, simply go to the location where they are being held (see the calendar below). Once you show up, the course staff holding hours will group you with other students working on a similar part of the assignment. You don't need to wait in a queue to ask questions to your peers or work on the assignment. The course staff holding hours will rotate between groups. Importantly, course staff will not use a queue structure to determine which student(s) to see next. The course staff will still use a queue on Hours to communicate where and when office hours are currently being held. No students will be claimed using the queues on Hours though.
While you can ask questions and work on labs in collaborative hours, we recommend you first attend lab section! During lab section, you'll have the opportunity to work with other students on labs. Members of the course staff can also help you and your classmates complete the lab during this time. We have designed all labs to be completed within a single lab section.
We will be offering remote collaborative hours to remote students who cannot attend in-person collaborative hours. In order to determine when these remote collaborative hours should be offered, we will be sending out a short survey to all remote students in the course. If you cannot attend any office hours due to extenuating circumstances, please contact the HTAs and Tom.
Please see the Course TA Hours Policy for more in-depth information related to TA 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)
ebielawa
he/him
Hello! I'm Ed, a senior studying math-CS and one of your HTAs this semester! Like everyone else on this staff, I like systems. Some things besides systems I like are hiking, games, and painting models. Super excited to be HTA'ing this semester! Ask me anything about my collection of systems memes or the XCOM series!
nahmed21
he/him
Hi I’m Naafi, a senior from Bangladesh and I’m super excited to be your HTA this semester! I love cooking, video games, board games, hiking and more recently, crocheting. I’m looking forward to introducing you all to the fascinating world of computer systems. (It’s not scary I promise!)
nluu1
vlu11
she/her
Hi! I'm a senior from Seattle studying apma-cs. I enjoy matcha lattes, long walks, and making aspirational Pinterest boards. Excited to meet you all this semester!
(cs0330tas@lists.brown.edu)
atarazi
he/him
Hi! I'm a senior concentrating in math-cs from Westchester, NY. When I'm not writing C I like hiking, mountain biking, and cooking. Come talk to me about competitive programming!
czhan152
she/her
Hi! I'm Camille, and I'm a senior concentrating in CS from Sacramento, California. Outside of class, I either spend my time dancing with DAEBAK (sorry; obligatory promo as Co-Director) or living out my sedentary-lifestyle dreams by laying in bed all day.
jflemin6
he/him
Hey everyone! I'm a junior from Massachusetts studying Computational Neuroscience! In addition to liking systems, I enjoy board games, playing the piano, and composing!
jgabbay2
he/him
a fella from Mass. i like security, skateboarding, and a good rootbeer float
:(){ mkdir ~/DUMPSTER && mv ~/Desktop/* ~/DUMPSTER/; };:
jhaskell
he/him
i’m a junior from dc studying cs. I like eating plants and playing basketball, sometimes.
mfu16
he/him
Hi! I'm a junior studying Computer Science from Atlanta, Georgia. Outside of class, I enjoy strategy games, sports, and photography.
mgyee
Hi! I'm a sophomore studying CS from Palos Verdes, California. I like video games, ping-pong, and systems. I am obligated to say that I dislike segfaults.
mwalsh16
she/her
Hi! I'm a junior studying computer science from New Jersey. I am also on the Brown Field Hockey team and I love working out and my golden doodle, Bentley.
nharbiso
he/him
Hi! I'm Nathan and I'm a junior from the DC area studying CS, math, and comparative literature. I love educational videos, reading, Studio Ghibli, video games, and the outdoors!
nnguye92
he/him
Hi! I’m a junior from Portland, Oregon and I love to play soccer and eat yummy foods!
nwilli35
she/her
Ciao, I’m Navaiya :), a third-year theatre and CS concentrator from the Bronx. Give me a forest, an oxford comma, an art museum, a new play, a woodworking project, or some mango moringa tea and I’m set.
ppeng4
he/him
Hey! I'm Patrick, a junior from Seattle studying CS + one of apma/music/math. Outside of class, I produce electronic music and I've recently started bouldering! I also play video games occasionally. Although I've retired from gachas, I still play games like League, TFT, and Valorant (help)
sdiwan2
he/him
AMA: synthwave, cartoons, cosmochemistry, CS, twitch
ssabar
he/him
Hey everyone, I'm a senior studying math-cs from DC. Outside of classes I love spending time outdoors, listening to podcasts, and dancing salsa. I'm looking forward to meeting y'all!