Computer organization and architecture cover the inner workings of your computer, from electrical circuits to larger structures like caches and storage devices. During this course, we will work our way from the bottom-up: starting with transistors and circuits, we will construct simple processor that closely resembles processors in use today. Understanding how your computer works will help you write better programs; many of the techniques we use to write fast and reliable software depend on an understanding of how that software will be executed. Abstraction, indirection, caching, concurrency, and other key concepts in computer science are just as important in hardware as they are in software. As computing hardware grows more complex and diverse, understanding the differences between your CPU and your GPU—and when each is best-suited to a problem—will become more and more important.

Our main objectives for this course include:

  • Learning how electricity can be used to perform computational tasks
  • Learning to identify and explain the major components of a modern processor
  • Understanding why these components exist and how they interact with software
  • Learning to read and write programs in machine language

Why take this course?
Whether your goal is to pursue advanced computer science study, work on new processor technology, develop the next major operating system or programming language, or apply high-performance computing to any other field, this course will help! Understanding computer architecture and machine language will help you be a better programmer, and prepare you to deal with the inevitable bugs and perforamance pitfalls that are virtually guaranteed in computing.

What do I need to know?
I assume you have taken and passed CSC 161. That means you should be comfortable programming in C and dealing with pointers.


Our primary textbook is David A. Patterson and John L. Hennessy, Computer Organization and Design: The Hardware/Software Interface, Revised 4th Edition, Elsevier, 2012. ISBN 978-0-12–374750-1. I will supplement our primary textbook with eReserves and handouts from other textbooks, videos, and the occasional lecture.

Our textbook is fondly known as “Patterson & Hennessy” (not to be confused with “Hennessy and Patterson”, which is a more advanced textbook). Either the latest printing (with a dull green cover) or the original printing (with a blue cover) covers the required material. The latest printing has fewer errata, but either version will work. Do not buy other editions as they are quite different, including the newer 5th edition. I do not recommend the Kindle edition as it has received rather poor reviews. Some supplemental materials are included with the book on a CD. We will be reading from these materials early in the course. If the version of the book you have purchased does not include the CD, you can download all supplemental materials from the publisher. Finally, watch out for international editions that use ARM rather than MIPS as the primary example architecture.


Your classmates and partner(s) depend on your contributions to learn new material and complete the required work for this course. Don’t let them down! You are expected to arrive on time and actively participate in every class.

Because your participation is so important, I will only grant excused absences in exceptional circumstances. I will deduct 1.5% from your final grade for each unexcused absence and 0.75% for each time you are late to class. However, each student is allotted a 3% “penalty buffer,” so you may miss two classes or arrive late four times with no impact ony our final grade. This policy is intended to give you the flexibility to deal with brief illnesses or personal issues that require you to miss class.

If you need to miss more than two class periods for an exceptional reason (e.g. to attend an academic conference, for religious observance, to deal with a family emergency, or due to long-term illness) please talk to me as soon as possible and we will make an alternate arrangement.

If your are sick, please do not come to class. Stay in your room, rest, and seek medical care as needed. Student Health and Counciling Services (SHACS) offers health and mental health services to students.


My goal is to help you learn as much as possible in this course; please let me know what I can do meet your learning needs. If you have a disability that requires accommodations, please contact Disability Resources. Disability Resources will work with you to determine your needs, and will provide you with paperwork outlining the accommodations you require. Please give me this paperwork at least a week before the course activity for which you need accommodations. If timeline is not feasible for any reason, please contact me as soon as possible and we will find a solution.

Assignments & Activities

Under a normal 16 credit load, I expect that you will spend at least 40 hours per week on your studies (class time, homework, and studying). You should spend a minimum of 10 hours per week on this course, although more time may be required to earn an A or B in the course.


Our class meetings will consist largely of discussion and group activities. This format will require significant preparation on your part. Most of this preparation will consist of careful reading and reflection on this material through the use of a reading journal.


You should check the class schedule for updates and read any material that has been assigned before coming to class. Reading the textbook and supplemental readings entails the following:


You should quickly skim the reading once to get a sense of the material that is being covered, paying careful attention to subject headings and topic introductions. The first "reading" pass should be __very__ quick.


Next, read the material closely. Try to understand what individual steps of algorithms or mathematical proofs are accomplishing. Not everything will make sense at this point, but hopefully many things will.

Final Notes

After carefully reading the material, mentally review and try making a few notes to yourself about what you think are the most important concepts being covered, as well as any questions you have. These notes and questions will help you with your reading journal.

Many of the readings are fairly short, but can contain code or figures that require a significant amount of study. While I realize that not all concepts are best learned by reading, please make your best effort and come to class with questions. Then, we can proceed with discussion, examples, and exercises to improve your understanding in class.


Because much of our work involves collaboration and discussion, you will be evaluated on your participation. Participating in class involves:

  • being present in class (physically and mentally),
  • coming to class on time,
  • coming to class prepared,
  • asking questions,
  • making contributions to class discussion by volunteering and when called upon,
  • staying on task during collaborative exercies, and
  • working effectively with your group.

Students who consistently meet these criteria can expect to earn 90% (an A-) for their class participation grade. I will reward students who regularly provide significant insights or guide discussion in a productive manner. Students who fail to participate, or participate in counterproductive ways—by dominating the discussion or making inappropriate comments—will earn a lower score.

Significant Bits

On Wednesdays and Fridays, one member of the class will present a five minute overview, preview, insight, or review of a significant development in computer architecture or a relevant area. Our objective is to establish a practice of following technological developments in the popular and technical press as well as in research publication venues. In doing this, you will inform your classmates—at a high level—about something that relates to the course. Your presentation should include what the development is, why it is important, a tiny bit about how it is done, and perhaps something about who did it. You will be asked to present just once during the semester, so find something interesting and share it with us!

Suggested sources for material to present include:

Academic Publications

Trade Journals

Popular Press

You will need to sign up for your presentation date as part of homework 0, due in the evening after the first Monday class. Please share your proposed topic with me (in person or by email) at least two class periods before your scheduled presentation date.

Labs and Assignments

This course will have a mix of assigned problems and labs. For both labs and assignments, you will work with randomly assigned partners. Assignments will typically require written responses to problems, similar to extended exam questions. In lab, we will work with electronic components, with software, and with combinations of the two. You will build digital circuits (real and virtual), and you will write assembly programs for PIC32 microcontrollers that do fun tasks such as flashing lights and sounding buzzers.

Most labs can be completed during our weekly two hour lab section, while other labs will require out of class work and will take the place of a regular assignment.

We will be working with some relatively expensive equipment in this course. The equipment must stay in Noyce 3818, and the door should remain locked outside of lab times. You will be given the door combination, but you must not share this combination with any other students.


There will be four in-class midterms and a final exam for this course. The final exam will be cumulative, but will emphasize material not covered by the midterm exams.

You are expected to be present for exams on the following dates:

Exam 1
September 23, 2016
Exam 2
October 14, 2016
Exam 3
November 18, 2016
Final Exam
9:00am–noon on Wednesday, December 14

Do not make travel plans that will conflict with the exam schedule. If you are unable to be present for a required examination due to unforseen circumstances, you will need to contact me to schedule a make-up exam.


There will be no curves or competitive grading in this course. Every student has an opportunity to earn an A. Your final grade will be determined with the following weighting:

Class Participation
Labs and Assignments
In-class Exams
Final Exam

Note that half your grade is based on outcomes (final and midterm exams) and the other half is based on process (participation, preparation, and out-of-class work).

Academic Honesty

I encourage collaboration when it promotes learning. However, it is important for you to understand the course materials and demonstrate your own learning on exams. As an instructor, I will meet my obligation to bring any work suspected to be in violation of the College’s Academic Honesty Policy to the attention of the Committee on Academic Standing, after which there is no recourse with me.

Students are free to discuss readings, lab assignments, and homework assignments, but copying is not acceptable. The work you turn in must be your own. You must not share code, homework responses, or other submitted work with any other students. You must acknowledge the contributions of others, whether they come from other students in the class, or from print and online resources. In short, while you are encouraged to collaborate with others, you are expected to be able to construct and explain each solution on your own.

Exams are intended to assess your individual understanding of the course material. Therefore, collaboration on exams is not permitted. If you have questions on an exam, please bring them directly to me. Of course you are encouraged to collaborate when preparing for exams.

You will not be permitted to use study guides, textbooks, phones, laptops, or any other reference during exams. I do not expect you to memorize every detail covered in class, but rather to understand key concepts and demonstrate an ability to apply them in an exam setting. Therefore, I will provide you with some reference materials where necessary on exams. For example, an exam question on MIPS assembly will likely include a short list of MIPS assembly instructions for you to use when constructing your solution.


Written homework assignments are generally due before class, whereas electronic assignments typically must be submitted by 10:30pm. Assignments submitted after the due date will receive a reduction of 10% (one full letter grade) for each day they are late.

If classroom facilities or MathLAN are unexpectedly unavailable for three or more hours before a deadline that requires the use of these facilities, I will extend the deadline. Please contact me as soon as possible if this situation arises.

Getting Help

Office Hours

Please come by during my office hours to discuss course content, get extra assistance, or just talk about how the course is going. If you cannot make it to regular office hours, email me to schedule an appointment. Please provide at least three possible meeting times so I can pick one that works for me.

I enjoy getting to know students, but I prefer to reserve office hours for academic matters. If you would like to have a more informal conversation, I would be delighted to accept an invitation to have lunch with you at the Marketplace.


I am happy to answer questions by email, but please allow 24 hours for a response (except on weekends, when I may not answer email at all). You may also call my office phone number (x3127) for more urgent matters.