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 performance 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). We will use the revised printing with a green cover, not the original printing with a blue cover. The revised printing has different problem numbers and some important corrections. 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 on your 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 Counseling Services (SHACS) offers health and mental health services to students. If you bring me a note from SHACS I will mark your absence as excused, even if you are only able to bring this information after missing class.

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 exercises, 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.

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.


We will have short weekly quizzes in this course. These will typically last around ten minutes at the start of class on Fridays. Quizzes will cover topics up through the Wednesday class prior to the quiz.


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
Friday September 22, 2017
Exam 2
Friday October 13, 2017
Exam 3
Friday November 17, 2017
Final Exam
Friday December 15, 2017 from 9:00am–noon

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 unforeseen 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

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

If you have questions or concerns about the course or would simply like to discuss the course material, please come to my office hours. To provide equitable access to all students regardless of course schedules, I hold my office hours by appointment. You can make an appointment at


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.


I strive to create a fully inclusive classroom, thus I welcome individual students to approach me about distinctive learning needs. In particular, I encourage students with disabilities to have a conversation with me and disclose how our classroom or course activities could impact the disability and what accommodations would be essential to you. You will also need to have a conversation about and provide documentation of your disability to the Coordinator for Disability Resources, John Hirschman, located on the 3rd floor of the Rosenfield Center (x3089).