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
- Course Number: 01:198:211 Sections 05, 06, 07, and 08
- Instructor: Yipeng Huang (http://cs.rutgers.edu/~yh804)
- Email: yipeng.huang@rutgers.edu
- Course Type: Undergraduate
- Credits: 4
- Learning Management System (LMS): https://rutgers.instructure.com/courses/104725
When and where to find the class
Lectures
Tuesdays & Thursdays 3:20 PM - 4:40 PM Eastern Time. Join here: https://rutgers.zoom.us/j/96684867178. 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
https://rutgers.instructure.com/courses/104725/pages/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 team@piazza.com.
Find our class signup link at: https://piazza.com/rutgers/spring2021/01198211
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
- Computer Systems: A Programmer’s Perspective (CS:APP, 3rd ed.) ISBN: 9780134092669
- Modern C (https://modernc.gforge.inria.fr/)
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% |
Syllabus
Date |
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 |
Resources
Academic integrity resources
https://nbprovost.rutgers.edu/academic-integrity-students
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 success.rutgers.edu, 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: 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/.