Course Syllabus

This course covers the fundamental issues in the design of modern computer systems, including the design and implementation of key hardware components such as the processor, memory, and I/O devices, and the software/hardware interface.

Basic information

When and where to find the class


Tuesdays & Thursdays 3:20 PM - 4:40 PM Eastern Time. Join here: If possible join by logging into Zoom with your Rutgers email address.

Lectures will be recorded live, and students are encouraged to attend at that time to best keep up with the class.

Recitation and office hour information

Piazza discussion board

This term we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. If you have any problems or feedback for the developers, email

Find our class signup link at:

Learning goals

  • Throughout the course, students will learn about low-level programming, digital logic, and the memory hierarchy via case studies that are representative of real-world computer systems.
  • Students will apply essential knowledge about computer systems to modify and create new low-level software and hardware implementations via hands-on programming exercises.
  • At the end of this course, students should have the preliminary skills to design and evaluate solutions involving the computer software-hardware interface to address new problems.


  • C programming
  • Data representation and computer arithmetic
  • Assembly language programming
  • Boolean algebra
  • Basic digital logic design
  • Processor design
  • Cache design
  • Main memory design

Recommended textbooks

Expected work

  • 6 programming assignments, 12% of the course grade each
  • Weekly short timed quizzes, 2% of the course grade each
  • Class and recitation participation
  • Discussion via Piazza

Grading policy

The course letter grade will be assigned according to this scale:

A 100%–90%
B+ 89.9%–87%
B 86.9%–80%
C+ 79.9%–77%
C 76.9%–70%
D 69.9%–60%



Topic / learning goals

Reading assignment

Programming assignment (PA)

Tuesday, January 19

Spring Semester Begins. Preview of this class. CS:APP Chapter 1. Modern C Chapters 1–8.

Thursday, January 21

Connecting to iLab. C control flow. Arrays. File I/O. PA 1 (C control flow, arrays, data structures, file I/O) released

Tuesday, January 26

Thursday, January 28

Tuesday, February 2

Thursday, February 4

Tuesday, February 9

Thursday, February 11

PA 1 due; PA 2 (C algorithm pattern implementation) released

Tuesday, February 16

Thursday, February 18

Tuesday, February 23

Thursday, February 25

PA 2 due; PA 3 (data representations) released

Tuesday, March 2

Thursday, March 4

Tuesday, March 9

Thursday, March 11

PA 3 due; PA 4 (assembly bomb lab) released

Saturday, March 13

Spring Recess Begins

Sunday, March 21

Spring Recess Ends

Tuesday, March 23

Thursday, March 25

Tuesday, March 30

Thursday, April 1

PA 4 due; PA 5 (caches) released

Tuesday, April 6

Thursday, April 8

Tuesday, April 13

Thursday, April 15

PA 5 due; PA 6 (digital logic) released

Tuesday, April 20

Thursday, April 22

Tuesday, April 27

Thursday, April 29

Monday, May 3

Regular Classes End

Tuesday, May 4

Reading Day

Wednesday, May 5

Reading Day

Thursday, May 6

Spring Exams Begin PA 6 due

Wednesday, May 12

Spring Exams End


Academic integrity resources 

Resources for student success website

The faculty and staff at Rutgers are committed to your success. Students who are successful tend to seek out resources that enable them to excel academically, maintain their health and wellness, prepare for future careers, navigate college life and finances, and connect with the RU community. Resources that can help you succeed and connect with the Rutgers community can be found at, and nearly all services and resources that are typically provided in-person are now available remotely.

Technology resources

Learning remotely presents new challenges.  For assistance with learning how to address these challenges, please consult the resources available here:

Please visit the Rutgers Student Tech Guide page for resources available to all students.  If you do not have the appropriate technology for financial reasons, please email Dean of Students for assistance.  If you are facing other financial hardships, please visit the Office of Financial Aid at