Syllabus

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. You do not need to know anything about electricity, circuits, transistors, or computer architecture.

Inclusion Statement

It is my intention that students from all backgrounds and perspectives will be well served by this course and that the diversity that students bring to this class will be viewed as an asset. I welcome individuals of all ages, backgrounds, beliefs, ethnicities, genders, gender identities, gender expressions, national origins, religious affiliations, sexual orientations, socioeconomic backgrounds, family education levels, abilities, and other visible and invisible differences. All members of this class are expected to contribute to a respectful, welcoming, and inclusive environment for every other member of the class. Your suggestions are encouraged and appreciated.

This text is adapted from the LGBTQ+ Advocacy in STEM syllabus inclusion statement.

Textbook

Our primary textbook is David A. Patterson and John L. Hennessy, Computer Organization and Design: The Hardware/Software Interface, 6th Edition, Elsevier, 2020. ISBN 9780128201091. I will supplement our primary textbook with eReserves and handouts from other textbooks, videos, and the occasional lecture. There are also a few readings from the online-only supplemental material, available at https://www.elsevier.com/books-and-journals/book-companion/9780128201091.

Our textbook is fondly known as “Patterson and Hennessy” (not to be confused with “Hennessy and Patterson”, which is a more advanced textbook). We will use the sixth edition of this textbook. This edition has sections that were not available in previous editions, although you may be able to find equivalent readings for most days using the 5th edition. Do not buy other editions as they are quite different. Make sure you do not purchase a version of the book that uses ARM or RISC-v; we will be using the regular (MIPS) edition of the textbook.

Attendance

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.

However, I recognize you may need to miss class from time to time. For your absence to be excused, all you need to do is tell me you will be out no later than the day before class. If your absence is due to illness, an email before the start of class is sufficient. You are still responsible for material covered on days when you are out, so try to keep up with readings and notes from class.

If you miss class on the day of a quiz or exam you must notify me before class or you will not be permitted to take a make-up quiz or exam. We can try to schedule an alternate time for the quiz or exam (potentially during office hours), but the make-up must happen no later than one week after the scheduled quiz or exam. I cannot promise we will always be able to find make-up exam or quiz times, so please do your best not to miss class on these days, or let me know far ahead of time if your absence is unavoidable.

There will be a grade penalty for unexcused absences. I will deduct 1.5% from your final grade for each unexcused absence. If you arrive after we’ve started the main activity for the day’s class the penalty is the same 1.5%. However, every student has a 4.5% “penalty buffer,” so you may miss three classes with no impact on your final grade. Note: because the syllabus was posted late, attendance policies take effect starting in week 3.

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.

Readings

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.

Preparation

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:

Overview
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.
In-Depth
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. Plan ahead for some of the longer readings (approximately 30 pages) later in the semester. 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.

Participation

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. 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 thinks like flashing lights and sounding buzzers.

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

Quizzes

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. I will spend some amount of time each Wednesday to give you a preview of the material that will be on the quiz. There will also be mentor sessions that can help you prepare for quizzes. Because everyone has off days, I’ll drop the lowest quiz grade before calculating your overall grade in the class.

Exams

There will be two 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
Monday February 26, 2024
Exam 2
Monday April 8, 2024
Final Exam
Tuesday May 14, 2024 2–5pm

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. Any requests for make-up exams must be submitted at least one week before the scheduled exam.

Grading

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
10%
Labs and Assignments
30%
Quizzes
10%
In-class Exams
30%
Final Exam
20%

Some work may be graded by someone other than the instructor. However, any questions or concerns about grading should only be directed to the instructor.

The grading scale for this course will be:

A
93–100%
A-
90–93%
B+
87–90%
B
83–87%
B-
80–83%
C+
77–80%
C
70–77%
D
60–70%
F
0–60%

You may note that a score of exactly 90% could earn either a B+ or an A-. In this unlikely scenario, I will always choose the higher of the two grades. I also reserve the right to adjust this scale during the semester. You will be notified of any changes, and the scale will not change in the final two weeks of the course. You may ask me for your current grade in the class at any point; I will happily give you my best estimate based on the current scale and graded work so far, but these estimates are not guarantees of a specific final grade.

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.

You may not use AI assistance tools like GitHub Copilot and ChatGPT to help with work you submit for this course. If you have a way to use these tools that helps you with readings, practice problems, or other material that you do not need to turn in for credit that is fine. If you’re unsure whether a particular method of using AI tools is acceptable please ask me first.

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.

The only references you may use on exams are materials I provide with the exam, as well as a single-sided sheet of 8.5”x11” paper with handwritten notes that you have prepared yourself. You will not be permitted to use study guides, textbooks, phones, laptops, or any other reference during exams unless I say otherwise in class. 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.

Deadlines

Labs and assignments are generally due at 11:59pm on Monday nights. Assignments submitted after the due date will receive a reduction of 20%, and can only be submitted a maximum of 48 hours 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

Accommodations

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 Services. Disability Resources will work with you to determine your needs, and will provide you with paperwork outlining the accommodations you require. Please make sure I receive this documentation at least a week before the course activity for which you need accommodations. If this timeline is not feasible for any reason, please contact me as soon as possible and we will work together to find a solution.

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 https://calendly.com/curtsinger/office-hours.

Email

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