CS33 is taught by Professor Tom Doeppner (twd). Lectures are held every Monday, Wednesday, and Friday, from 2:00 to 2:50 PM at Salomon Center 001, 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/6 | 9/18 |
Traps | 9/25 | 10/4 |
Buffer | 10/4 | 10/15 |
Shell 1 | 10/21 | 10/30 |
Shell 2 | 10/30 | 11/6 |
Malloc | 11/6 | 11/25 |
Database | 11/25 | 12/13 |
Looking for guidance as you start your project? 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 go 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 in-person, with their time and location posted on EdStem. A recording of the gear-up will be posted here after it occurs. Come prepared with questions!
Date | Topic | Slides | Video |
---|---|---|---|
9/9 | Maze | Slides | Video |
9/27 | Traps | Slides | Video |
10/6 | Buffer | Slides | Video |
10/21 | Shell 1 | Slides | Video |
10/30 | Shell 2 | Slides | Video |
11/6 | Malloc | Slides | Video |
TBD | Database | Slides | Video |
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 sessions. During lab sessions, 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/6 | 9/15 |
Lab 2: Strings and Parsing | 9/16 | 9/22 |
Lab 3: Data | 9/23 | 9/29 |
Lab 4: atoi | 9/30 | 10/6 |
Lab 5: Makefiles | 10/7 | 10/13 |
Optional Lab 6: Performance | 10/11 | 10/20 |
Lab 7: Signals | 10/28 | 11/3 |
Lab 8: Alloc | 11/4 | 11/10 |
Lab 9: Network | 11/11 | 11/17 |
Lab 10: Concurrency | 11/22 | 12/8 |
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/6 | 9/13 |
HW2 / Solution | 9/13 | 9/20 |
HW3 / Solution | 9/20 | 9/27 |
HW4 / Solution | 9/27 | 10/4 |
HW5 / Solution | 10/4 | 10/18 |
HW6 / Solution | 10/18 | 10/25 |
HW7 | 10/25 | 11/1 |
HW8 | 11/1 | 11/8 |
HW9 | 11/8 | 11/15 |
Lectures are held every Monday, Wednesday, and Friday at Salomon Center 001. They are recorded on Panopto and will be uploaded after each lecture.
Date | Topic | Readings | Notes | Recording | Take Away Questions | Code | |
---|---|---|---|---|---|---|---|
1 | Sept 4 | Intro to CS33; Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
2 | Sep 6 | Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
3 | Sept 9 | Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
4 | Sept 11 | Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
5 | Sept 13 | Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
6 | Sept 16 | Intro to C |
Slides
Notes |
Recording |
Questions
Answers |
||
7 | Sept 18 | Data Representation | Chapter 2 |
Slides
Notes |
Recording |
Questions
Answers |
|
8 | Sept 20 | Data Representation | Chapter 2 |
Slides
Notes |
Recording |
Questions
Answers |
|
9 | Sept 23 | Data Representation | Chapter 2 |
Slides
Notes |
Recording |
Questions
Answers |
|
10 | Sept 25 | x86 Assembler Language | Sections 3.1, 3.2 |
Slides
Notes |
Recording |
Questions
Answers |
|
11 | Sept 27 | x86 Assembler Language | Sections 3.4, 3.5 |
Slides
Notes |
Recording |
Questions
Answers |
|
12 | Sept 30 | x86 Assembler Language | Section 3.6 |
Slides
Notes |
Recording |
Questions
Answers |
|
13 | Oct 2 | x86 Assembler Language | Section 3.7 |
Slides
Notes |
Recording |
Questions
Answers |
|
14 | Oct 4 | x86 Assembler Language | Section 3.10 |
Slides
Notes |
Recording |
Questions
Answers |
|
15 | Oct 7 | Processor Arch. and Performance | Sections 5.1-5.6 |
Slides
Notes |
Recording |
Questions
Answers |
|
16 | Oct 9 | Memory Hierarchy I | Sections 5.7-5.12 |
Slides
Notes |
Recording |
Questions
Answers |
|
17 | Oct 11 | Caching | Sections 6.1-6.2 |
Slides
Notes |
Recording |
Questions
Answers |
|
Oct 14 | Holiday! | ||||||
18 | Oct 16 | Architecture and OS | Sections 8.1-8.4 |
Slides
Notes |
Recording |
Questions
Answers |
|
19 | Oct 18 | Shells and Files | Section 10.1 |
Slides
Notes |
Recording |
Questions
Answers |
|
20 | Oct 21 | Files | Sections 10.2-10.11 |
Slides
Notes |
Recording |
Questions
Answers |
|
21 | Oct 23 | Signals | Sections 8.5-8.6 |
Slides
Notes |
Recording |
Questions
Answers |
|
22 | Oct 25 | Signals |
Slides
Notes |
Recording |
Questions
Answers |
||
23 | Oct 28 | Memory Hierarchy II | Sections 6.4, 6.5 |
Slides
Notes |
Recording |
Questions
Answers |
|
24 | Oct 30 | Linking and Loading | Sections 6.3 |
Slides
Notes |
Recording |
Questions
Answers |
|
25 | Nov 1 | Memory Management | Sections 7.1-7.9 |
Slides
Notes |
Recording |
Questions
Answers |
|
26 | Nov 4 | Memory Management | Section 9.9 |
Slides
Notes |
Recording |
Questions
Answers |
|
27 | Nov 6 | Virtual Memory | Section 9.9 |
Slides
Notes |
Recording |
Questions
Answers |
|
28 | Nov 8 | Virtual Memory | Sections 9.1, 9.2, 9.6, 9.8 |
Slides
Notes |
Recording |
Questions
Answers |
udpClient.c
udpServer.c |
29 | Nov 11 | Network Programming | Sections 7.10-7.13 |
Slides
Notes |
Recording |
Questions
Answers |
tcpClient.c
tcpServer.c |
30 | Nov 13 | Network Programming | Sections 11.1-11.4 |
Slides
Notes |
Recording |
Questions
Answers |
|
31 | Nov 15 | Concurrent Programming | Chapter 12 |
Slides
Notes |
Recording |
Questions
Answers |
|
32 | Nov 18 | Concurrent Programming |
Slides
Notes |
Recording |
Questions
Answers |
||
33 | Nov 20 | Concurrent Programming |
Slides
Notes |
Recording |
Questions
Answers |
||
34 | Nov 22 | Concurrent Programming | Slides Notes |
Recording | Questions Answers |
||
35 | Nov 25 | Concurrent Programming | Slides Notes |
Recording | Questions Answers |
||
Nov 27 | Holiday! | ||||||
Nov 29 | Holiday! | ||||||
36 | Dec 2 | Libraries | Slides Notes |
Recording | Questions Answers |
||
37 | Dec 4 | Libraries | Slides Notes |
Recording | Questions Answers |
||
38 | Dec 6 | Summing Up | Slides Notes |
Recording | Questions Answers |
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. For hours, CS 33 uses 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 - 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 helping 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.
abenjell
he/him
Hi everyone! I’m Ayman, a senior from Casablanca, Morocco studying CS! When I’m not in the CIT, you can find me walking around campus with a coffee, practicing the piano at Steinert (got into it recently!), or playing retro Nintendo games. I’m super excited to be one of your HTAs this semester and can’t wait to meet you all!
mgyee
he/him
Junior from Palos Verdes, California studying CS. I like video games, golf, and browsing c@b.
nharbiso
he/him
Hi! I'm Nathan and I'm a senior from the DC area studying math-CS and comparative literature. I love educational videos, reading, Studio Ghibli, video games, and the outdoors!
acueva
he/him
Hey, I'm Alex, and I'm a junior studying CS. I love all things systems, but apart from that I enjoy music from all different parts of the world! If you have any recommendations, feel free to share them with me!
asun59
she/her
Hi! I'm a Junior from Oregon studying apma-cs. I enjoy bed rotting and trying new foods.
armoreno
she/her
Hi everyone! I'm a Junior concentrating in Computer Science. I love to read fantasy novels, battle dragons, and sleep on piles of gold. I'm very excited to be your TA this semester!
bkaravan
he/him
Hey guys, I am a junior studying pure CS. I play volleyball and have a weakness for good European chocolate. When my code doesn't crash my laptop, I like to binge Netflix and play video games :)
ecooperm
he/him
Hey everyone! I'm Ethan, a junior concentrating in Computer Science - Economics from Sharon, MA. In my free time, I like to play guitar, solve Rubik's cubes, and play the New York Times daily games.
ffnaqvi
she/her
Hi everyone! My name is Faizah, and I'm a junior from NJ double concentrating in computer science and international relations. In my free time I like to bake, hike, and try out new things (especially food)!
ihajra
he/him
Hello! I'm Ian, a junior from Michigan studying APMA-CS. I love to play jazz piano, go hiking, climb, and spend time with friends!
ikarveli
he/him
Labas (“hello” in Lithuanian)! I am a sophomore from Lithuania studying CS/APMA/Econ (the Bermuda triangle). I love learning new things and solving puzzles. My favorite project is Malloc, I am sure you guys will love it.
iashapir
she/her
Hi, I'm Isabelle! I'm a huge fan of caffeinated beverages, long bike rides, and outdoor activities. Can't wait to work with you this semester!
jlippert
he/him
Hi! I'm Jake, a Junior concentrating in Physics and CS. I love music, and am involved with A Cappella, the Brown Jazz Band and two campus bands.
jgabbay2
he/him
a fella from Mass. i like security, skateboarding, and a good rootbeer float :(){ mkdir ~/DUMPSTER && mv ~/Desktop/* ~/DUMPSTER/; };:
jzliao
she/her
Hi! I’m a junior from Farmington, CT studying Computer Science and History. I have great passion for wandering around in libraries, frolicking on the green, and using gdb. Welcome to CS33! ⚔️⚔️
hchung33
she/her
Hi. I'm Julie from CT, concentrating in Computer Science. In my free time, I like to make music, explore local coffee shops, and mysteriously wander about.
mfu16
he/him
Hi! I'm a senior studying Computer Science from Atlanta, Georgia. Outside of class, I enjoy sports, strategy games, and photography.
nnguye92
he/him
Hi! I’m a senior from Portland, Oregon and I love to play soccer and eat yummy foods!
rdaly5
he/him
I'm Robert, a senior studying pure math and one of your TAs this semester! Outside of class, I like to play soccer, hike, and chase rabbits on the main green. I'm looking forward to meeting y'all!
xlee4
he/him
Hi! I'm a junior from Singapore studying Math/CS and Music. I like combinatorics, piano, music theory, matcha, and board games (especially Ticket to Ride).
slaloux
he/him
Hello, my name is Siddharta. I'm a 3rd-year student concentrating in APMA-CS and Classics. Outside of my coursework, I enjoy coffee, chocolate and fantasy books.
Note: All staff are mandatory Title IX reporters.