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

C control flow. Arrays. File I/O.

Thursday, January 28

Pointers lab. Pointers, arrays, C memory model.

Tuesday, February 2

Pointers lab. Parameter passing, C memory model.

Thursday, February 4

Structs and data structures. CS:APP Chapter 2.

Tuesday, February 9

Strategies for correct software. Bugs and debugging.

Thursday, February 11

Data representation: Integers. PA 1 due; PA 2 (C algorithm pattern implementation) released

Tuesday, February 16

Fractions and fixed point numbers.

Thursday, February 18

Floating point numbers. Normalized and subnormal (denormalized) numbers. Special cases. CS:APP Chapter 3.

Tuesday, February 23

Floating point multiplication. Instruction set architectures.

Thursday, February 25

Introduction to assembly languages. PA 2 due; PA 3 (data representations) released

Tuesday, March 2

Assembly: Data movement instructions. Data sizes and registers. Memory addressing modes.

Thursday, March 4

Assembly: Arithmetic instructions.

Tuesday, March 9

Assembly: Condition codes, conditional branches, conditional moves.

Thursday, March 11

Assembly: Loops and switch statements.

Saturday, March 13

Spring Recess Begins

Sunday, March 21

Spring Recess Ends

Tuesday, March 23

Assembly: Procedures and function calls. PA 3 due; PA 4 (assembly bomb lab) released

Thursday, March 25

Assembly: Function call parameters and return. Recursion.

Tuesday, March 30

Memory hierarchy: Arrays, locality, storage technologies CS:APP Chapter 6

Thursday, April 1

Memory hierarchy: CPU, cache, memory, storage device trends; spatial temporal locality

Tuesday, April 6

Cache hierarchy: lines, sets, fully associative, and direct-mapped caches PA 4 due

Thursday, April 8

Cache hierarchy: cache simulation, cache replacement policies, write policies

Tuesday, April 13

Cache hierarchy: cache performance metrics, writing cache-friendly code PA 5 (memory hierarchy) released

Thursday, April 15

Tuesday, April 20

Thursday, April 22

Tuesday, April 27

PA 5 due; PA 6 (digital logic) released

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