CS222 Computer Architecture

Fall 2019

Course Hours and Location: Tue and Thur, 2pm-3:20pm, Ry 251

Lab Hours and Location: Wed, CSIL3 (attend the session you signed up for)

Session 1: 2:30pm – 3:50pm

Session 2: 4:00pm – 5:20pm

Session 3: 5:30pm – 6:50pm


Fred Chong (chong@cs.uchicago.edu)

Office Hours (11/1-12/3): Tue 3:30-5pm, JCL 239

Yanjing Li (yanjingl@uchicago.edu)

Office hours: (10/1 - 10/31): Tue 3:30-4:30pm, JCL 309

Teaching Assistants:

Casey Duckering (cduck@uchicago.edu)

Office Hours: During lab sessions

Zayne Khouja (zayne@uchicago.edu)

Office Hours: Mon 4:30-6pm @ JCL 207, Thur 12:30-2:00pm @ JCL 205, Fri 3:00-4:30pm @ JCL 207

Course Schedule

CS222 F19 Schedule

Lab Materials

Lab 0

Lab 1

Lab 2

Lab 3

Lab 4


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.

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 (see course schedule).

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

Using the Reference Simulator

We always try to be as specific as possible in the lab write-ups, but certain statements may still be vague or ambiguous to you. In this case, you should run the reference simulator, understand its behavior, and match your own simulator with the reference simulator.

We provide the reference simulator to help with understanding the requirements of the lab and testing your code, and we also use it for grading. However, it is possible that your results do not match ours but your implementation is still correct. In that case, please bring it to our attention. In general, we are very reasonable when it comes to grading, and if you can show us that you truly understand the course materials, we will not take off points even if there are a few *small* discrepancies between your implementation and the write-up.

We only guarantee that our reference simulator is correct for the test cases provided.

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 is not your lab partner.

If you violate these rules, you will receive an F grade.


Dr. 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)