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

Course Information

CS033 is taught by Professor Tom Doeppner (twd). Lectures are held every Monday, Wednesday, and Friday, from 2:00 to 2:50 PM in Macmillan Hall 117.

The course is intended primarily for computer science students and computer engineers, though it is open to anyone with adequate preparation interested in learning the topics covered in the course announcement below.. 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 15, CS 18 or CS 19 (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 the organization of computer systems (in terms of storage units, caches, processors, and I/O controllers) and teaches students assembly-language programming 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

Guides & Documents

Check out the following useful documents for questions you have about course organization, code style, or tools we use.

Quick links


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


All projects are due at 11:59 pm on the specified due date. 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 →

Data / Worked Example9/229/29
Performance + Strings10/2010/27
Shell 110/2711/3
Shell 211/311/10


Labs are released on Mondays and can be completed on your own 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 checked off by a TA during lab hours prior to the release of the following week's lab*. Submissions during the week after that in which a lab was assigned will receive half credit.

Lab 1: Life9/119/20
Lab 2: Tools9/219/27
Lab 3: x86 Part 19/2810/4
Lab 4: x86 Part 210/510/11
Lab 5: Profiling10/1910/25
Lab 6: Linking + Loading10/2611/1
Lab 7: Signals11/211/8
Lab 8: Alloc11/911/15
Lab 9: Virtual Memory11/1611/22
Lab 10: Networking11/2312/6
Lab 11: Concurrency11/3012/13

*This means that the Sunday 2-4 lab time is the last available slot to get your labs checked off for full credit.


Lectures are held every Monday, Wednesday, and Friday, from 2 to 2:50 PM in Macmillan Hall 117.

DateTopicReadingsNotes/CodeRecording (.mp4)
Sept 9Intro to CSCI 330; Intro to CChapter 1[Notes][Full]Video
Sept 11Intro to CChapter 1[Notes][Full]Video
Sept 14Intro to CChapter 1[Notes][Full]Video
Sept 16Intro to CChapter 1[Notes][Full]No Video
Sept 18Intro to CChapter 1[Notes][Full]Video
Sept 21Intro to CChapter 1[Notes][Full]Video
Sept 23Data RepresentationChapter 2[Notes][Full]Video
Sept 25Data RepresentationChapter 2[Notes][Full]Video
Sept 28x86 Assembler LanguageChapter 3[Notes][Full]Video
Sept 30x86 Assembler LanguageChapter 3[Notes][Full]Video
Oct 2x86 Assembler LanguageChapter 3[Notes][Full]Video
Oct 5x86 Assembler LanguageChapter 3[Notes][Full]Video
Oct 7x86 Assembler LanguageChapter 3[Notes][Full]Video
Oct 9Processor Arch. and PerformanceChapter 5(Same as previous)Video
Oct 12Holiday!
Oct 14Processor Arch. and PerformanceChapter 5[Notes][Full]Video
Oct 16Processor Arch. and PerformanceChapter 5[Notes][Full]Video
Oct 19Memory HierarchyChapter 6[Notes][Full]Video
Oct 21Memory HierarchyChapter 6[Notes][Full]Video
Oct 23Memory Hierarchy and PerformanceChapter 6[Notes][Full]Video
Oct 26Architecture and OSChapter 8[Notes][Full]Video
Oct 28FilesChapter 8[Notes][Full]Video
Oct 30FilesChapter 8[Notes][Full]Video
Nov 2SignalsChapter 8[Notes][Full]Video
Nov 4SignalsChapter 8[Notes][Full]Video
Nov 6Linking and LoadingChapter 7[Notes][Full]Video
Nov 9Memory ManagementChapter 9[Notes][Full]Video
Nov 11Memory ManagementChapter 9[Notes][Full]Video
Nov 13Memory ManagementChapter 9[Notes][Full]Video
Nov 16LibrariesChapter 9[Notes][Full]Video
Nov 18Network ProgrammingChapter 11[Notes][Full][Code]Video
Nov 20Network ProgrammingChapter 11[Notes][Full]Video
Nov 23System-Level I/OChapter 9
Nov 25Holiday!
Nov 27Holiday!
Nov 30Concurrent ProgrammingChapter 12
Dec 2Concurrent ProgrammingChapter 12
Dec 4Concurrent ProgrammingChapter 12
Dec 7Concurrent ProgrammingChapter 12
Dec 9Concurrent ProgrammingChapter 12

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!

TAs will be hosting sessions in Macmillan 115 each Thursday after a project is released. Sessions will run from 8pm-9:30pm.

Sept 17MazeLink
Sept 24DataLink
Oct 1BufferLink
Oct 15BombLink
Oct 22Strings + PerformanceLink
Oct 29Shell 1Link
Nov 5Shell 2Link
Nov 12MallocLink
Dec 3Database



  • Tom Doeppner - twd


  • Advik Iyer Guha - aiguha
  • Dylan Gattey - dgattey
  • Ian Reardon - ireardon


  • Anne Rothen - arothen
  • Cesar Guerrero - cguerrer
  • Erik Ronning - eronning
  • Frances Chen - flchen
  • Frederick Rice - frice
  • Gareth Chen - gdchen
  • Grant Gustafson - ggustafs
  • Guillermo (Memo) Beltran - gbeltran
  • Guo Wang - gw9
  • Hassan Sufi - hsufi
  • Jan Wyszynski - jw
  • Paige Stoermer - jstoerme
  • James Cohan - jfcohan
  • John Adler - jcalder
  • John Yang - zy15
  • Jordan Hendricks - jordan
  • Joseph Stein - jas14
  • Justin Brower - jbrower
  • Kevin Cole - kbcole
  • Kyle Laracey - klaracey
  • Martin Zhu - mjzhu
  • Meryl Charleston - mcharles
  • Nick McKenna - nmckenna
  • Noah Webb - nwwebb
  • Peter Kirschner - pkirschn
  • Ping Hu - ping
  • Quinn Li O'Shea - qoshea
  • Scott Zellers - szellers
  • Sorin Vatasoiu - svatasoi
  • Surbhi Madan - sm15
  • Vessy Ratcheva - vratchev


Tom's Office Hours

Professor Doeppner's hours will be held in CIT 405.


TA Hours

During TA hours, you'll be able to get help from TAs with course concepts and project-specific questions. Note that you may not ask questions about labs or have a lab checked off on TA hours.

TA hours will be held in the Moonlab (CIT 227), CIT 201, and Motorola (CIT 165). Below, hours held in Motorola or CIT 201 are listed with the location in [brackets]. All other hours are held in the Moonlab. Please note that Motorola does not have Linux machines, so we recommend that you bring your personal computer to hours held there. Head TAs are listed in bold.

4 - 5 pmJordan, VessyKevin, Surbhi
5 - 6 pmJordan, VessyMartin, Noah [Motorola]Meryl, Kyle, Memo, Freddie [CIT 201]Grant [CIT 201]Paige, John A [Motorola]Anne, Nick, Hassan [CIT 201]Kevin, Surbhi
6 - 7 pmSorin, ErikMartin, Noah [Motorola]Meryl, Kyle, Memo, Freddie [CIT 201]Grant [CIT 201]Paige, John A [Motorola]Anne, Nick, Hassan [CIT 201]Cesar, Guo
7 - 8 pmSorin, ErikJoe, Advik, PeterGareth, Jan, MerylFrances, Ping [CIT 201]James, John ACesar, Guo
8 - 9 pmJoe, Advik, PeterGareth, Jan, MerylFrances, Ping [CIT 201]James, John A
9 - 10 pmJustin, Quinn Li, DylanGareth, Scott, Ian R.John Y
10 - 11 pmJustin, Quinn Li, DylanGareth, Scott, Ian R.John Y

Lab Hours

During lab hours, you will be able to work with others and ask TAs for help finishing lab. Please show up to one of the following times to work on a lab and have it checked off by a TA. Head TAs are in bold. Note that TAs will not answer project-related questions during lab hours.

Monday 5-7SunlabHassan
Monday 7-9SunlabJames, Grant
Wednesday 4-6MSLabKyle, Frances, Vessy
Wednesday 6-8MSLabSorin, Martin, Erik
Thursday 4-6MSLabJoe, Noah, Freddie
Thursday 6-8MSLabGareth, Justin, Peter
Friday 3-4SunlabScott, Memo
Friday 4-5SunlabMemo
Friday 5-6SunlabScott
Saturday 2-4SunlabPing, Cesar, Advik
Saturday 4-6SunlabJan, Quinn Li, Guo
Sunday 2-4SunlabJohn Y., Ian, Anne, Dylan