Hej! Welcome to 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.

Take me to IKEA I want the course information

Course Information

CS0330 is taught by Professor Tom Doeppner (twd). Lectures are held every Monday, Wednesday, and Friday, from 2:00 to 2:50 PM in Salomon Center DECI 101.

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

Assignments

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

Projects

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 →

NameOutDue
Maze9/79/19
Data / Worked Example9/199/26
Traps9/2610/3
Buffer10/310/16
Strings + Performance10/1610/23
Shell 110/2310/31
Shell 210/3111/7
Malloc11/711/28
Database11/2812/14

Labs

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 the end of the last 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.

NameOutDue
Lab 1: Life9/79/16
Lab 2: Tools9/179/23
Lab 3: x86 Part 19/249/30
Lab 4: x86 Part 210/110/14
Lab 5: Profiling10/1510/21
Lab 6: Makefiles10/2210/28
Lab 7: Signals10/2911/4
Lab 8: Alloc11/511/11
Lab 9: Virtual Memory11/1211/18
Lab 10: Networking11/1912/2
Lab 11: Concurrency (Part One)11/2612/2
Lab 12: Concurrency (Part Two)12/312/11

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

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 Canvas. If you have questions about the homework, please attend Tom's office hours.

NameOutDueSupplementary Files
HW19/79/14
HW29/149/21
HW39/219/28
HW49/2810/5
HW510/510/12
HW610/1210/19minmax.c
HW710/1910/26
HW810/2611/2
HW911/211/9
HW1011/911/16
HW1111/1611/30

Lectures

Lectures are held every Monday, Wednesday, and Friday, from 2 to 2:50 PM in Salomon DECI.

DateTopicReadingsNotesRecording (.mp4)Code
Sept 5Intro to CSCI 330; Intro to CChapter 1[Notes][Full][Video]
Sept 7Intro to CChapter 1[Notes][Full][Video]
Sept 10Intro to CChapter 1[Notes][Full][Video]
Sept 12Intro to CChapter 1[Notes][Full][Video]
Sept 14Intro to CChapter 1[Notes][Full][Video]
Sept 17Intro to CChapter 1[Notes][Full][Video]
Sept 19Data RepresentationChapter 2[Notes][Full][Video]
Sept 21Data RepresentationChapter 2[Notes][Full][Video]
Sept 24Data RepresentationChapter 2[Notes][Full][Video]
Sept 26x86 Assembler LanguageSections 3.1, 3.2 [Notes][Full][Video]
Sept 28x86 Assembler LanguageSections 3.4, 3.5[Notes][Full][Video]
Oct 1x86 Assembler LanguageSection 3.6[Notes][Full][Video]
Oct 3x86 Assembler LanguageSection 3.7[Notes][Full][Video]
Oct 5x86 Assembler LanguageSection 3.10[Notes][Full][Video]
Oct 8 Holiday!
Oct 10Processor Arch. and PerformanceSections 5.1-5.6[Notes][Full][Video]
Oct 12Memory Hierarchy ISection 6.1-6.2[Notes][Full][Video]
Oct 15Exploiting CachesSection 6.4-6.5[Notes][Full][Video]
Oct 17Memory Hierarchy IISections 6.1-6.2[Notes][Full][Video]
Oct 19Architecture and OSSections 8.1-8.4[Notes][Full][Video]
Oct 22Shells and FilesSection 10.1[Notes][Full][Video]
Oct 24FilesSections 10.2-10.11[Notes][Full][Video]
Oct 26SignalsSections 8.5-8.6[Notes][Full][Video]
Oct 29SignalsSection 8.5-8.6[Notes][Full][Video]
Oct 31Linking and LoadingSection 7.1-7.9[Notes][Full][Video]
Nov 2Memory ManagementSection 9.9[Notes][Full][Video]
Nov 5Memory ManagementSection 9.9[Notes][Full][Video]
Nov 7Memory ManagementSection 9.9[Notes][Full][Video]
Nov 9Virtual MemorySections 9.1, 9.2, 9.6, 9.8[Notes][Full][Video]
Nov 12LibrariesSections 7.10-7.13[Notes][Full][Video]
Nov 14Network ProgrammingSections 11.1-11.4[Notes][Full][Video][Code]
Nov 16Network ProgrammingSections 11.1-11.4[Notes][Full][Video]
Nov 19Concurrent ProgrammingChapter 12
Nov 21Holiday!
Nov 23Holiday!
Nov 26Concurrent ProgrammingChapter 12
Nov 28Concurrent ProgrammingChapter 12
Nov 30Concurrent ProgrammingChapter 12
Dec 3Concurrent ProgrammingChapter 12
Dec 5Concurrent ProgrammingChapter 12
Dec 7Concurrent 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!

Projects are released on Wednesdays, so TAs will be hosting Gear Up sessions every Thursday after a project is released from 7-9pm in Smitty B 106. Note the exceptions below.

Note: The Data Gear Up will be held in Friedman Hall 208, on Thursday, September 20 from 7-9pm. The Shell 1 Gear Up will be held in Barus & Holley 168 on Thursday, October 25 from 7-9pm.

DateTopicSlidesVideo
9/11MazeSlides
9/20DataSlides
9/27TrapsSlides
10/4BufferSlidesVideo
10/18Strings + PerformanceSlidesVideo
10/25Shell 1SlidesVideo
11/1Shell 2SlidesVideo
11/8MallocSlidesVideo
11/29Database

Hours

Tom's Office Hours

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

Monday3-4pm
Wednesday3-4pm
Friday4-5pm

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.

Code Hours will be held in CIT 205, and Conceptual Hours will usually be held in CIT 207, with the exception of Saturday 12-2pm hours, which are held in CIT 205.

Lab Hours

During lab hours, you will be able to work with others and ask TAs for help finishing lab. Monday-Saturday lab hours are held in CIT 201, and Sunday lab hours are held in the Sunlab. Please show up to one of the following times to work on a lab. Most labs are autograded, but for certain labs you will have to be checked off at these hours too. Note that TAs will not answer project-related questions during lab hours.