CS 211 Computer Architecture (2021 Spring)

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

Lectures: Tuesdays & Thursdays 3:20 PM – 4:40 PM Eastern Time. Lectures will be recorded live, and students are encouraged to attend at that time to best keep up with the class. The Zoom link to join live is on the class LMS on Canvas. Log in to Zoom with your Rutgers email address; otherwise, the passcode to join is available on the class LMS. Lecture recordings will be posted online within one day.

Recitations: Recitations will be synchronous and will not be recorded. You are strongly recommended to attend recitations prepared with questions about assignments and lectures and make use of the help from TAs.

  • Section 05: Mondays 9:30–10:25 AM Eastern Time
  • Section 06: Thursdays 6:55–7:50 PM Eastern Time
  • Section 07: Tuesdays 5:15–6:10 PM Eastern Time
  • Section 08: Tuesdays 6:55–7:50 PM Eastern Time

The meeting links for each recitation TA is on the class LMS on Canvas.

Office hours: Prof. Yipeng Huang’s office hours are Wednesdays 10:30–11:30 AM at https://rutgers.zoom.us/my/yh804

The TAs have additional office hours; time and meetings links for each TA is on the class LMS on Canvas.


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.

Topics

  • 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 and grading policy

  • 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

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


Syllabus

DateTopic / learning goalsReading assignmentProgramming assignment (PA)
Tuesday, January 19[slides] Spring Semester Begins. Preview of this class.CS:APP Chapter 1.
Modern C Chapters 1–8.
Thursday, January 21[slides] Connecting to ilab. Introduction to Linux commands. Writing, compiling, and running C programs.PA 1 (C control flow, arrays, data structures, file I/O) released
Tuesday, January 26[slides] Headers, function prototypes, strings, control flow, how a Makefile works, string manipulation.
Thursday, January 28[slides] Pointers, arrays, memory.
Tuesday, February 2[slides] Pointers, function parameter passing, C memory model.
Thursday, February 4[slides] Structs, data structures, binary search trees, linked lists, queues in C.CS:APP Chapter 2.
Tuesday, February 9[slides] Strategies for correct software. Bugs and debugging.
Thursday, February 11[slides] Why digital / binary numbers. Bits and bytes. Signed integers and arithmetic.PA 1 due; PA 2 (C algorithm pattern implementation) released
Tuesday, February 16[slides] Fractions and fixed point numbers.
Thursday, February 18[slides] Floating point numbers. Normalized and subnormal (denormalized) numbers. Special cases.CS:APP Chapter 3
Tuesday, February 23[slides] Floating point multiplication. Instruction set architectures.
Thursday, February 25[slides] Introduction to assembly languages.PA 2 due; PA 3 (data representations) released
Tuesday, March 2[slides] Assembly: Data movement instructions. Data sizes and registers. Memory addressing modes.
Thursday, March 4[slides] Assembly: Arithmetic instructions.
Tuesday, March 9[slides] Assembly: Condition codes, conditional branches, conditional moves.
Thursday, March 11[slides] Assembly: Loops and switch statements.
Saturday, March 13Spring Recess Begins
Sunday, March 21Spring Recess Ends
Tuesday, March 23[slides] Assembly: Procedures and function calls.PA 3 due; PA 4 (assembly bomb lab) released
Thursday, March 25[slides] Assembly: Function call parameters and return. Recursion.
Tuesday, March 30[slides] Memory hierarchy: Arrays, locality, storage technologies.CS:APP Chapter 6
Thursday, April 1[slides] Memory hierarchy: CPU, cache, memory, storage device trends; spatial temporal locality.
Tuesday, April 6[slides] Cache hierarchy: Lines, sets, fully associative, and direct-mapped caches.PA 4 due
Thursday, April 8[slides] Cache hierarchy: Cache simulation, cache replacement policies, write policies.
Tuesday, April 13[slides] Cache hierarchy: Cache performance metrics, writing cache-friendly code.PA 5 (cache performance lab) released
Thursday, April 15[slides] Cache hierarchy: Loop interchange, cache blocking, and cache-oblivious code.
Tuesday, April 20[slides] Digital logic: Transistors, basic gates, and universality of NAND and NOR gates.
Thursday, April 22[slides] Digital logic: Logic simplification using Boolean algebra identities and Karnaugh maps.
Tuesday, April 27[slides] Digital logic: Decoders, multiplexers, sequential logic overview.PA 5 due; PA 6 (digital logic) released
Thursday, April 29[slides] Computer architecture: Moore’s law, parallelism, hardware security, heterogenous architectures, quantum.
Monday, May 3Regular Classes End
Tuesday, May 4Reading Day
Wednesday, May 5Reading Day
Thursday, May 6Spring Exams BeginPA 6 due
Wednesday, May 12Spring Exams End

Resources

Technology Requirements: Students will need access to the Canvas site, and be able to join class via audio, at minimum.

Learning remotely presents new challenges.  For assistance with learning how to address these challenges, please consult the resources available here:  https://rlc.rutgers.edu/remote_instruction

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 deanofstudents@echo.rutgers.edu for assistance.  If you are facing other financial hardships, please visit the Office of Financial Aid at https://financialaid.rutgers.edu/.

Academic Integrity: https://www.cs.rutgers.edu/academics/undergraduate/academic-integrity-policy

http://nbacademicintegrity.rutgers.edu/home-2/academic-integrity-policy

https://nbprovost.rutgers.edu/academic-integrity-students