CS033 is taught by Professor Tom Doeppner (twd). Lectures are held every Monday, Wednesday, and Friday, from 2:00 to 2:50 PM in Salomon DECI.
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."
Check out the following useful documents for questions you have about course organization, code style, or tools we use.
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 Example||9/20||9/27|
|Performance + Strings||10/18||10/25|
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.
|Lab 1: Life||9/9||9/18|
|Lab 2: Tools||9/19||9/25|
|Lab 3: x86 Part 1||9/26||10/2|
|Lab 4: x86 Part 2||10/3||10/9|
|Lab 5: Profiling||10/17||10/23|
|Lab 6: Makefiles||10/24||10/30|
|Lab 7: Signals||10/31||11/6|
|Lab 8: Alloc||11/7||11/13|
|Lab 9: Virtual Memory||11/14||11/20|
|Lab 10: Networking||11/21||11/27|
|Lab 11: Concurrency (Part One)||11/28||12/4|
|Lab 11: Concurrency (Part Two)||11/28||12/11|
*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 Salomon DECI.
|Sept 7||Intro to CSCI 330; Intro to C||Chapter 1||[Notes][Full]||Video|
|Sept 9||Intro to C||Chapter 1||[Notes][Full]||Video|
|Sept 12||Intro to C||Chapter 1||[Notes][Full]||No Video|
|Sept 14||Intro to C||Chapter 1||[Notes][Full]||Video|
|Sept 16||Intro to C||Chapter 1||[Notes][Full]||Video|
|Sept 19||Intro to C||Chapter 1||[Notes][Full]||Video|
|Sept 21||Data Representation||Chapter 2||[Notes][Full]||Video|
|Sept 23||Data Representation||Chapter 2||[Notes][Full]||Video|
|Sept 26||x86 Assembler Language||Sections 3.1, 3.2||[Notes][Full]||Video|
|Sept 28||x86 Assembler Language||Sections 3.4, 3.5||[Notes][Full]||Video|
|Sept 30||x86 Assembler Language||Section 3.6||[Notes][Full]||Video|
|Oct 3||x86 Assembler Language||Section 3.7||[Notes][Full]||Video|
|Oct 5||x86 Assembler Language||Section 3.10||[Notes][Full]||Video|
|Oct 7||Processor Arch. and Performance||Sections 5.1-5.6||[Notes][Full]||Video|
|Oct 12||Processor Arch. and Performance||Sections 5.7-5.12||[Notes][Full]||Video|
|Oct 14||Memory Hierarchy||Section 6.1||[Notes][Full]||Video|
|Oct 17||Memory Hierarchy||Section 6.2||[Notes][Full]||Video|
|Oct 19||Memory Hierarchy||Sections 6.3-6.5||[Notes][Full]||Video|
|Oct 21||Architecture and OS||Sections 8.1-8.4||[Notes][Full]||Video|
|Oct 24||Shells and Files||Sections 10.1||[Notes][Full]||Video|
|Oct 26||Files||Sections 10.2-10.11||[Notes][Full]|
|Oct 28||Files||Sections 10.2-10.11|
|Oct 31||Signals||Section 8.5|
|Nov 2||Signals||Section 8.6|
|Nov 4||Linking and Loading||Sections 7.1-7.7|
|Nov 7||Memory Management||Section 9.9|
|Nov 9||Memory Management||Section 9.9|
|Nov 11||Virtual Memory||Sections 9.1-9.2,9.6,9.8|
|Nov 14||Libraries||Sections 7.12, 8.13|
|Nov 16||Network Programming||Sections 11.1-11.4|
|Nov 18||Network Programming||Sections 11.1-11.4|
|Nov 28||Concurrent Programming||Chapter 12|
|Nov 30||Concurrent Programming||Chapter 12|
|Dec 2||Concurrent Programming||Chapter 12|
|Dec 5||Concurrent Programming||Chapter 12|
|Dec 7||Concurrent Programming||Chapter 12|
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 CIT 165 (Motorola) each Thursday after a project is released. Sessions will run from 8pm-9:30pm.
*** Maze's gear-up session will be held in Barus and Holley 168 instead of Motorola.
|Oct 20||Strings + Performance||Link|
|Oct 27||Shell 1|
|Nov 3||Shell 2|
Professor Doeppner's hours will be held in CIT 405.
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 CIT 205 and the fishbowl (CIT 271). Hours being held in the fishbowl are marked with an asterisk*. All other hours are held in CIT 205. Head TAs (Joe S, Sorin, Guo) are listed in bold.
During weeks when there is not a gear-up presentation, two of the gear-up TAs (either Giovanni + Adarsh or Lael + Katelyn) will hold hours on Thursday from 8-10 in CIT 205.
|9 - 10 am||Egor*|
|10 - 11 am||Egor*||Sarita (Starts at 10:30)|
|11am - 12pm||Dan*||Sarita||Dan*|
|12 - 1 pm||Dan*||Sarita (Ends at 12:30)||Dan*|
|1 - 2 pm|
|2 - 3 pm|
|3 - 4 pm||Adarsh, Giovanni or Katelyn, Lael||Chelse, Oussama|
|4 - 5 pm||Adarsh, Giovanni or Katelyn, Lael||Andrei||Chelse, Oussama||Will F, Abinaya|
|5 - 6 pm||Arun, Nathan||Hans, Ting||Ben, Jon, Katelyn||Max, Alex||Andrei||Alejandro, Hangkun||Will F, Abinaya|
|6 - 7 pm||Arun, Nathan||Hans, Ting||Ben, Jon, Katelyn||Max, Alex||Joseph B, Alejandro||Alejandro, Hangkun||Aryan, Guo|
|7 - 8 pm||Michael, Giovanni, Alex||Sean, Chirayu, Sorin||Joseph B, Adarsh, Sorin, Filip||Chelse, Peter C||Joseph B, Alejandro||Aryan, Guo|
|8 - 9 pm||Michael, Giovanni, Alex||Sean, Chirayu, Sorin||Joseph B, Adarsh, Sorin, Filip||Chelse, Peter C||Adarsh, Giovanni or Katelyn, Lael**|
|9 - 10 pm||Hangkun, Peter S, Michael, Will T||Joe S, Jared, Lael, Max||Adarsh, Giovanni or Katelyn, Lael**|
|10 - 11 pm||Hangkun, Peter S, Michael, Will T||Joe S, Jared, Lael, Max|
*Located in the fishbowl (CIT 271)
**Only on weeks that have no gear-up
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-7||MSLab||Jon, Peter C|
|Wednesday 4-6||MSLab||Abinaya, Hans|
|Wednesday 6-8||MSLab||Oussama, Ting|
|Thursday 3-5||MSLab||Will F, Ben|
|Thursday 5-7||MSLab||Sean, Egor|
|Friday 3-5||MSLab||Nathan, Sarita|
|Saturday 2-4||Sunlab||Will T, Arun, Chirayu|
|Saturday 4-6||Sunlab||Guo, Filip, Andrei|
|Sunday 2-4||Sunlab||Aryan, Joe S, Jared, Peter S|
Andrei Radu Voicu
Oussama Ben Abdelbaki
T Alexander Chen