Dancing Tom Doeppner

CSCI 0330: Introduction to Computer Systems

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

Assignments

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/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

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

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

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

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

Hours

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 and Lab Sections

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.

TA Hours Calendar

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)

Ed Profile Picture Ed Profile Picture

Ed Bielawa

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!

Naafi Profile Picture Naafi Profile Picture

Naafiyan Ahmed

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

Nathan L Profile Picture Nathan L Profile Picture

Nathan Benavides-Luu

Vivian Profile Picture Vivian Profile Picture

Vivian Lu

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!

UTAs

(cs0330tas@lists.brown.edu)

Anton Profile Picture Anton Profile Picture

Anton Tarazi

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!

Camille Profile Picture Camille Profile Picture

Camille Zhang

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.

Jeremy Profile Picture Jeremy Profile Picture

Jeremy Fleming

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!

Jamie Profile Picture Jamie Profile Picture

Jamie Gabbay

he/him

a fella from Mass. i like security, skateboarding, and a good rootbeer float
:(){ mkdir ~/DUMPSTER && mv ~/Desktop/* ~/DUMPSTER/; };:

Jakobi Profile Picture Jakobi Profile Picture

Jakobi Haskell

he/him

i’m a junior from dc studying cs. I like eating plants and playing basketball, sometimes.

Michael Profile Picture Michael Profile Picture

Michael Fu

he/him

Hi! I'm a junior studying Computer Science from Atlanta, Georgia. Outside of class, I enjoy strategy games, sports, and photography.

Matthias Profile Picture Matthias Profile Picture

Matthias Yee

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.

Mikayla Profile Picture Mikayla Profile Picture

Mikayla Walsh

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.

Nathan H Profile Picture Nathan H Profile Picture

Nathan Harbison

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!

Nathan N Profile Picture Nathan N Profile Picture

Nathan Nguyen

he/him

Hi! I’m a junior from Portland, Oregon and I love to play soccer and eat yummy foods!

Navaiya Profile Picture Navaiya Profile Picture

Navaiya Williams

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.

Patrick Profile Picture Patrick Profile Picture

Patrick Peng

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)

Siddharth Profile Picture Siddharth Profile Picture

Siddharth Diwan

he/him

AMA: synthwave, cartoons, cosmochemistry, CS, twitch

Seth Profile Picture Seth Profile Picture

Seth Sabar

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!