This course covers the design of complex computer systems making heavy use of the components and techniques discussed in CMSC 313 or CMPE 212 and CMPE 310. All parts of the computer system - CPU, memory and input/output - are discussed in detail. Topics include information representation, floating-point arithmetic, instruction set design issues (RISC vs. CISC), microprogrammed control, hardwired control, pipelining, memory caches, bus control and timing, input/output mechanisms and issues in the construction of parallel processors

Course Outcomes

  1. In-depth understanding of the inner-workings of modern computers, their evolution, and trade-offs present at the hardware/software boundary
  2. Broad knowledge of the state of the art in computer architectures
  3. Familiarity with performance metrics and benchmarks
  4. General knowledge of advances in microelectronics and their implication on computer design
  5. Experience the design process in the context of a reasonable size hardware
  6. Exposure to design tools and validation setup


C or better in CMSC 313


David Patterson and John Hennessy, Computer Organization and Design, The Hardware/Software Interface, 5th Edition. Morgan Kaufmann, ISBN 978-0124077263


Dr. Marc Olano <>
ITE 354 (455-3094); Office Hours: MW 4:00-5:15


Atharva Muley <>
ITE 340; Office Hours MW 10:00-11:30


There is a Piazza site for this class. Everyone enrolled in the class will be added to this site. Class announcements will be made there, so you should either check this site periodically, or make sure it is set to send you messages by email. You should also use it for public communication with your classmates, and the instructor. Questions on concepts and algorithms, especially relating to the assignments, should be asked on Piazza.

Please only post messages appropriate for the entire class to see. Be sure to send messages about grades or other private matters directly to the instructor or TA.


Grades will be based on homework (25%), project (25%), midterm exam (25%) and final exam (25%).

Homework is due by the begining of class on the date due unless otherwise noted. Late homework will not be accepted, and will receive a grade of 0.


Topic dates may shift due to changes in class pace. This schedule will be updated if they do. Text listings show which chapter in the 5th edition of the text covers the concepts from that class. Chapters that are listed across multiple weeks will take us several weeks to cover. Homeworks and components of the project are due at the beginning of class on the dates indicated.

Date Topic Text Due
Jan 27/29 Introduction, Instruction Representation Ch. 1
Feb 3/5 Addressing, Number Representation Ch. 2  
Feb 10/12 Arithmetic, Multiplication, Division, Floating Point Ch. 3 HW1 (2/10)
Feb 17/19 Datapath Ch. 4  
Feb 24/26 Hard-wired Control, Microprograms Ch. 4 HW2 (2/24)
Mar 2/4 Performance Ch. 1  
Mar 9/11 Review, Midterm Exam   HW3 (3/9)
Mar 16/18 Spring Break Ch. 4
Mar 23/25 Midterm discussion, Pipelining Ch. 4  
Mar 30/Apr 1 More Pipelining Ch. 5  
Apr 6/8 Memory & Cache Ch. 5  
Apr 13/15 Virtual Memory, I/O Ch. 5 HW4 (4/13)
Apr 20/22 Bus & I/O Interfaces Ch. 5  
Apr 27/29 HDL Ch. 6 HW5 (4/27)
May 4/6 GPUs App. B.4, App. C  
May 11 Review   Project
May 14-15 FINAL EXAM 3:00pm May 14 - 3:00pm May 15

Academic Honesty

By enrolling in this course, each student assumes the responsibilities of an active participant in UMBC's scholarly community in which everyone's academic work and behavior are held to the highest standards of honesty. Cheating, fabrication, plagiarism, and helping others to commit these acts are all forms of academic dishonesty, and they are wrong.

For the individual assignments, you are allowed to discuss concepts, assignments and algorithms, but the actual programming is expected to be your own work. Submit a readme with each assignment describing the assignment and also any and all help you received.

Sexual Misconduct and Abuse

Any student who has experienced sexual harassment or assault, relationship violence, and or staking is encouraged to seek support and resources. There are a number of resources available to you.

With that said, as an instructor, I am considered a Responsible Employee, per UMBC’s Policy on Prohibited Sexual Misconduct, Interpersonal Violence, and Other Related Misconduct.  This means that while I am here to listen and support you, I am required to report disclosures of sexual assault, domestic violence, relationship violence, stalking, and/or gender-based harassment to the University's Title IX Coordinator. The purpose of these requirements is for the University to inform you of options, support, and resources.

You can utilize support and resources even if you do not want to take any further action.
You will not be forced to to file a police report, but please be aware, depending on the nature of the offence, the University may take action.

If you need to speak with someone in confidence about an incident, UMBC has the following Confidential Resources available to support you:

Other on-campus supports and resources:

Child Abuse and Neglect Please note that Maryland law requires that I report all closure or suspicions of child abuse or neglect to the Department of Social Service and/or the police.

Additional confidential resources are listed on the UMBC Title IX page.