CMSC 22200 Computer Architecture

Spring 2018


Course Hours and Location: Tuesday and Thursday, 11am-12:20pm:20am, Ry 276


Lab Hours and Location: Thursday, CSIL  (attend the session you signed up for)

                                                Session 1: 3:30pm – 4:50pm CSIL3

                                                Session 2: 2:00pm – 3:20pm CSIL4

                                                Session 3: 3:30pm – 4:50pm CSIL4



Fred Chong (

  Office Hours: Tue 10:00a – 11:00a, Wed 1:30p-2:30p Ry278 (in the annex, go to the back of the building on the 1st floor before going upstairs)


Teaching Assistants:


Mohammad Reza Jokar (

  Office Hours: Mondays 4:30pm - 5:30pm Eckhart 131


Course Schedule


Course Description

Computing systems have advanced rapidly and transformed every aspect of our lives for the last few decades, and innovations in computer architecture is a key enabler. Residing in the middle of the system design layers, computer architecture interacts with both the software stack (e.g., operating systems and applications) and hardware technologies (e.g., logic gates, interconnects, and memories) to enable efficient computing with unprecedented capabilities. In this course, students will learn the fundamental principles, techniques, and tradeoffs in designing the hardware/software interface and hardware components to create a computing system that meets functional, performance, energy, cost, and other specific goals. Example topics include instruction set architecture (ISA), pipelining, memory hierarchies, input/output, and multi-core designs. In addition, we will discuss advanced topics regarding recent research and trends. This course also includes hands-on labs, where students will enhance their learning by implementing a modern microprocessor in a C simulator.



Students are expected to be able to program in C and have basic computer systems background (e.g., have taken CMSC 15400)



Labs: 50%

Exam I: 25%

Exam II: 25%



 Computer Organization and Design: ARM Edition, Patterson and Hennessy (Required)



There are two in-class exams, 4/26 and 5/29.

There are no make-up exams, except for extenuating situations, e.g., illnesses requiring hospitalization, a death in the immediate family (siblings, parents, grandparents). Please contact me immediately if you think you have a legitimate reason to be absent.  I will require documentation.



Each lab, the TA will hold glorified office hours with students on computers. It is highly recommended that you attend lab, as the TA will give significant advice on how to implement the labs.


Lab Submission

All lab assignments are posted online at the class website.

You will be working in groups of 2 for all lab assignments, and we require only one copy of the work to be turned in from each group.

Watch out - they build on each other. Make sure you start early so you can complete them before the deadline. Otherwise, you will stay behind for the next assignment.


Late Policy

All lab assignments are due at 11:59pm on the due date. You may use 2 late days (these are intended to include legitimate excuses, so donÕt ask for more).  Once you run out of late days, you can turn in lab assignments up to 24 hours late for a 10% penalty and 24-48 hours late for a 20% penalty. HOWEVER, after two days past the due date, they will not be accepted (you canÕt combine late days and the penalty to be more than 2 days late).


General Information on Lab Assignments, Use of Reference Simulators, etc.

First, the purpose of the lab assignments is to enhance your understanding of computer architecture concepts. We always try to be as specific as possible in the write-ups; however, there can still be multiple valid implementations. You are free to implement the processor simulator based on your understanding as long as they satisfy the lab requirements. Furthermore, we are very reasonable when it comes to grading, and if you can show us that you truly understand course materials, we will not take off points even if there are a few *small* discrepancies between your implementation and the write-up.

Second, we provide the reference simulators just to help with understanding the requirements of the lab and testing your code. However, if your results do not match ours exactly, it doesn't necessarily mean that you implementation is incorrect (and, of course, you won't lose points if your implementation is correct). You should use good judgement when referring to the results of the reference simulators, and you're always welcome to ask clarification questions.

Finally, we only guarantee that our reference simulators are correct for the test cases provided.



Important announcements will be made via Piazza. It will also be used for you to post questions for the course personnel. Do not post code publicly on Piazza. Check your code into svn or use private posts instead.

You need to sign up for the class. Follow this link:


Note on academic dishonesty and plagiarism

Cooperative work is an important part of learning; you are encouraged to study together, discuss the lectures, laboratory concepts and computer architecture issues.


For lab assignments, you will be working in groups of 2, and you may discuss anything you want with your partner. If you get stuck, it's important that you seek out the proper help - always go the TAs or myself first. Be careful that you DO NOT,

-- copy work (even one line) from another group's assignment or file.
-- copy work (even one line) from a published source without credit (and permission from instructor).
-- lend another group your assignment.                                                                              
-- look at another groupÕs working code to fix your problem
-- e-mail or transfer any of your files to another student whoÕs not your lab partner.

If you have a bug, you may ask a student who has gotten farther in the lab to help you find your mistake.  You may not look at his/her project if that student is not your lab partner.

If you violate these rules, you will receive a grade of F.



Prof. Yanjing Li

Prof. Diana Franklin (class materials from CS154 in UCSB)

Prof. James Hoe (class materials from 18447 in CMU)

Prof. Onur Mutlu (class materials from 18447 in CMU)