Zombie GIF 1 Dancing Tom Doeppner Zombie GIF 2

Introduction to Computer 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.

CS33 Logo including Tom and the HTAs

Course Information Zombie GIF 3

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."
– Course Announcement

Assignments Zombie GIF 4

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

Projects

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

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

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 Zombie GIF 1

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

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!

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

Hours Zombie GIF 2

Tom's Office Hours

Professor Doeppner's hours will be in CIT 405, x3-7633.

Monday 3-4pm
Wednesday 3-4pm
Friday 3-4pm

TA Hours

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:

  • What's the difference between * and & and in what situations should I use them?
  • I'm having trouble visualizing what's going on in the stack during a buffer overflow attack.
  • What happens to blocks on the heap when I call malloc?

Signing Up

Sign up for TA hours via Hours.

Staff Dancing Tom Doeppner GIF

Professor

Tom Doeppner Profile Picture Tom Doeppner Profile Picture 2

Tom Doeppner

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.

HTAs

(cs0330headtas@lists.brown.edu)

Arvind Profile Picture Arvind Profile Picture 2

Arvind Yalavarti

He/Him/His

Hi there! I'm a senior studying apma-cs. Outside of class I'm into photography and filmmaking!

Divyam Profile Picture 2 Divyam Profile Picture

Divyam Dang

He/Him/His

Hi!! I'm a senior concentrating in Computer Science from New Delhi, India. I like F1, ping pong and video-games.

Harisen Profile Picture Harisen Profile Picture 2

Harisen Luby

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

Parker Profile Picture Parker Profile Picture 2

Parker Simon

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

UTAs

(cs0330tas@lists.brown.edu)

Alan Profile Picture Alan Profile Picture 2

Alan Gu

he/him/his

This could be us but you playin

Cal Profile Picture Cal Profile Picture 2

Cal Chen

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.

Camille Profile Picture Camille Profile Picture 2

Camille Zhang

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.

Cristina Profile Picture Cristina Profile Picture 2

Cristina Hu

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 :)

Danny Profile Picture Danny Profile Picture 2

Danny Joca

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.

Ed Profile Picture Ed Profile Picture 2

Ed Bielawa

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

Edward Profile Picture Edward Profile Picture 2

Edward Xing

he/him/his

Hi! My name is Edward Xing. I am from Westfield, NJ. At Brown, I study Applied Math-Computer Science and Economics.

Emily Profile Picture Emily Profile Picture 2

Emily Wang

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!

Hannah Profile Picture Hannah Profile Picture 2

Hannah Jeon

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)!!

Jack Profile Picture Jack Profile Picture 2

Jack Cheng

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.

Jamie Profile Picture Jamie Profile Picture 2

Jamie Gabbay

He/Him/His

Hi. Jamie. Mass of chusetts. 2025. CompSci.
[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo *click*

Jason Profile Picture Jason Profile Picture 2

Jason Eveleth

He/Him

Hi, I'm Jason. I'm a senior concentrating in Math-CS. I like running, ultimate frisbee, minecraft, and vim.

Kathy Profile Picture Kathy Profile Picture 2

Kathy Li

She/Her

pasta sauce???

Keigo Profile Picture Keigo Profile Picture 2

Keigo Hachisuka

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!

Keitaro Profile Picture Keitaro Profile Picture 2

Keitaro Nishijima

He/Him

Hi! I'm a junior from Japan studying CS! I love coffee, soccer and dance!

Kenya Profile Picture Kenya Profile Picture 2

Kenya Kimata

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!

Kevin Profile Picture Kevin Profile Picture 2

Kevin Lu

He/Him

I'm a junior studying applied math and computer science. I grew up in New Orleans, Louisiana and I have 2 cats.

Kota Profile Picture Kota Profile Picture 2

Kota Soda

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!

Stephen Profile Picture Stephen Profile Picture 2

Stephen Rosa

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!

Treetased Profile Picture Treetased Profile Picture 2

Treetased Vividhwara

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!

Vivian Profile Picture Vivian Profile Picture 2

Vivian Lu

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!

Will Profile Picture Will Profile Picture 2

Will Chen

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!