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

Project Gear Ups

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

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

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

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

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

TA Hours Calendar

Staff Dancing Tom Doeppner GIF

Professor

Tom Doeppner Profile Picture Tom Doeppner Crown Picture

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

Ayman Profile Picture Ayman Profile Picture

Knight Ayman Benjelloun Touimi

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!

Matthias Profile Picture Matthias Profile Picture

Knight Matthias Yee

he/him

Junior from Palos Verdes, California studying CS. I like video games, golf, and browsing c@b.

Nathan H Profile Picture Nathan H Profile Picture

Knight Nathan Harbison

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!

UTAs

(cs0330tas@lists.brown.edu)

Alex Profile Picture Alex Profile Picture

Sir Alex Cueva

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!

Alyssa Profile Picture Alyssa Profile Picture

Sir Alyssa Sun

she/her

Hi! I'm a Junior from Oregon studying apma-cs. I enjoy bed rotting and trying new foods.

Astrid Profile Picture Astrid Profile Picture

Sir Astrid Moreno-Sanabria

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!

Bohdan Profile Picture Bohdan Profile Picture

Sir Bohdan Karavan

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

Ethan Profile Picture Ethan Profile Picture

Sir Ethan Cooperman

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.

Faizah Profile Picture Faizah Profile Picture

Sir Faizah Naqvi

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

Ian Profile Picture Ian Profile Picture

Sir Ian Hajra

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!

Ignas Profile Picture Ignas Profile Picture

Sir Ignas Karvelis

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.

Isabelle Profile Picture Isabelle Profile Picture

Sir Isabelle Shapiro

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!

Jake Profile Picture Jake Profile Picture

Sir Jake Lippert

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.

Jamie Profile Picture Jamie Profile Picture

Sir Jamie Gabbay

he/him

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

Jennifer Profile Picture Jennifer Profile Picture

Sir Jennifer Liao

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! ⚔️⚔️

Julie Profile Picture Julie Profile Picture

Sir Julie Chung

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.

Michael Profile Picture Michael Profile Picture

Sir Michael Fu

he/him

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

Nathan N Profile Picture Nathan N Profile Picture

Sir Nathan Nguyen

he/him

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

Robert Profile Picture Robert Profile Picture

Sir Robert Daly

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!

Ryan Profile Picture Ryan Profile Picture

Sir Ryan Lee

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

Siddharta Profile Picture Siddharta Profile Picture

Sir Siddharta Laloux

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.