CSC 211 - Computer Organization and Design

Spring 2023

Synopsis: This course provides a view bridging the abstraction of software and the concrete reality of physics for computation. We will learn the founding logical principles use to construct basic computers and employ these principles to build small circuits and computer systems in laboratory.
Instructor: Jerod Weinman
Office: Noyce 3825
Phone: x9812
E-mail: [weinman]
Section 1 Ryu
Section 2 Sam
Course web page:
Class meetings:
MWF, Science 3820
Section 1
10:00-11:50 am
Section 2
2:00-3:50 pm


english 1  Accommodations
2  Overview
3  Textbook
4  Class attendance
5  Electronic Devices
6  Assignments and Activities
    6.1  Reading
    6.2  Participation
    6.3  Teamwork
    6.4  Significant Bits
    6.5  Laboratory Work and Homework Assignments
    6.6  Quizzes
    6.7  Exams
7  Grading
8  Academic Honesty
    8.1  GitHub Copilot
9  Deadlines
    9.1  Late Submissions
    9.2  Submission Rate Limits
    9.3  Final Deadline
10  Getting Help
    10.1  Discussion with Piazza
    10.2  Office Hours
    10.3  Email
    10.4  Academic Support

1  Accommodations

If you have any disability that requires accommodations, please meet with me right away so that we can work together to find accommodations that meet your learning needs. You will also need to provide documentation of your disability to the Coordinator of StudentDisability Services, Jae Hirschmann, located in Steiner Hall 209 (x3089).
Please also note that I require your accommodations. The synthetic fragrances found in deodorants, lotions, after shave, body sprays, laundry products, perfume, cologne, etc. make many people who suffer with asthma, allergies, environmental sensitivities, cancer, and migraines much sicker. I am sensitive to many such chemicals you may not even notice, so please try to avoid using such scented products before coming to class and especially if you visit my office.

2  Overview

The official catalog blurb for the course reads:
Study of both traditional and alternative computer architectures. Introduction to digital logic, microcode, Von Neumann architectures, data representations, fetch/execute model, RISC/CISC, instruction formats and addressing, machine and assembly language, memory architecture and algorithms, I/O architecture, and elements of distributed systems. Includes formal laboratory work.
This course addresses questions such as the following: By the end of this class, you should be able to:

Why take it?

You will find this course invaluable if you plan to go on to work or advanced study in computer science or computer engineering, or if you just want to understand how a computer really works at the lowest level. Moreover, programming in assembly is challenging-it will stretch your mind and deepen your appreciation of higher-level programming languages. Finally, understanding how computer hardware is structured can help you write more efficient programs in higher-level languages.
This course fulfills the CS major's systems requirement and is recommended for all CS majors.

What do I need to know?

This course assumes you have taken CSC 161. That means you should be reasonably adept at If you're a little rusty on the C, you should review your earlier class material or Walker's An Introduction to C Through Annotated Examples, and keep a C reference handy. (After all, even writers who are perfectly fluent speakers of English keep a dictionary or style manual close by when practicing their craft!)

3  Textbook

Our required textbook is
David A. Patterson and John L. Hennessy, Computer Organization and Design: The Hardware/Software Interface MIPS Edition, 6th edition, Elsevier, 2020. ISBN 978-0128201091.
Note that this is the most recent version of the book, and it is the MIPS edition. Do not use an international edition that uses ARM rather than MIPS as the primary example architecture. This textbook is fondly known as Patterson & Hennessy (not to be confused with Hennessy and Patterson , which is a more advanced textbook).
Supplemental material and appendices can be downloaded from the publisher:
Occasionally our discussions will be supplemented by other texts or research papers. I will provide these and note them in the detailed class schedule.

4  Class attendance

We will attempt for the course to be entirely inverted. You are expected to read (and think about!) the textbook material before coming to class, where our meetings will involve a mix of discussions and collaborative activities (e.g., clicker questions, problems from the text, lab exercises). In short: You are expected to attend and actively participate in class. I am expected to make class worth attending.
Because is a collaborative, discussion-based course, your presence is integral to your learning. Thus, 1.5% (0.06 grade points) will be deducted from your overall grade for each absence. I know that sometimes "things happen." Therefore, you will be granted one unexcused absence from class without penalty. However, this rebate is cancelled upon a second absence.
If you are going to be absent, you must send a written explanation (email is appropriate) before class except in the (rare) case of dire emergency. (Consider the analogy for phoning in sick for work; you wouldn't do it at 4 PM if your supervisor expected you at 8 AM.)
Because I do not wish you to risk harm to yourself or others, I typically annul absence penalties in case of illness, provided you notify me in advance.
If you know in advance that you will be absent for any planned reason (e.g., athletics, interviews, etc.), you must notify me in writing (again, email is fine) at least 7 days in advance to make arrangements for considering your absence excused.
Our discussions benefit from your contributions. However, if you do miss a class, you must first talk to a classmate about any material that you may have missed. After that, you may follow up with the instructor about any further questions or concerns.

5  Electronic Devices

With the exception of collaborative computer-based lab activities that use the existing MathLAN computers, the use of electronic devices (i.e., smartwatches, phones, tablets, and laptops) will be prohibited during class.
Why? When class begins, please put your electronic devices away until after the conclusion of the class.
Violations of this policy will negatively impact a student's grade.
Exceptions to this policy can be made as an accomodation for those with documented disabilities.
An exception may be made at the conclusion of lab classes, when you may wish to trade contact information with your partner or establish a schedule to meet for out-of-class collaboration.

6  Assignments and Activities

The Grinnell College definition of a credit hour states that a four credit course such as this translates to a minimum of 180 hours of total time both in and out of the classroom.7 That we meet for six hours of class each week implies you should spend at least six hours each week working outside of class.8
Such coursework will encompass the following elements.

6.1  Reading

Our class meetings will be heavily based on discussion and problem-solving, and this format will require significant preparation on your part. Most of this preparation will consist of careful reading and reflection on the material.
You should check the class schedule for updates and read any material that has been assigned before coming to class. Reading the textbook entails the following:
You should quickly skim through the reading once to get an overview of the material to be covered, paying particular attention to subject headings and topic introductions. This first "reading" can (and should) be very quick. (Expected time: 5 to 10 minutes.)
Next read the material closely. Try to understand what individual lines of code or pieces of circuits are accomplishing. Not everything will make sense at this point, but hopefully many things will. (Expected time: 30 to 40 minutes.)
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. You should also answer the "Check Yourself" questions and verify your answers. (Expected time: 5 to 10 minutes.)
Some of the readings are short (10-15 pages), while others are much longer (25-35) pages, mostly assigned for non-lab days. The texts contain low-level code, diagrams, and concepts that require a moderate amount of study. Rather than trying to cram it all into one session, try to spread your reading and review time over the multiple days before class. While I realize not everything is learned best by reading, you are asked to make your best effort and come to class with questions. Then we can proceed with discussion, examples, and exercises that enhance and clarify the material in class.

6.2  Participation

Because much of our work in this course involves collaboration and discussion, you are expected to demonstrate full participation.
Participating in class involves: Failure to participate regularly or participating in counterproductive ways (e.g., by dominating the conversation or making inappropriate comments) may negatively impact a student's grade.

6.3  Teamwork

Learning to work well as a member of a team is critical for jobs both technical and non-technical. Your lab work will of course involve working as a team, so it will behoove us to remember (or learn) what makes for being a good team member. To that end, we will use the research-backed CATME instrument9 for peer evaluation of team members' functioning along three critical dimensions:
  1. Contributing to the team's work ("helping the team achieve its goals or objectives by completing the assigned tasks")
  2. Interacting with teammates ("interactions within the team that contribute to a supportive environment")
  3. Expecting quality ("expressing the beliefs that the team is capable of quality work and encouraging the team to strive for quality")
Students will use a quick survey to assess themselves and their teammate(s) after each collaborative lab.
At three points in the course, students will receive feedback on their work as a team member in the form of a ternary rating:
EXCELLENT Rises above expectations
ACCEPTABLE Meets expectations
NEEDS IMPROVEMENT Fails to meet expectations
The feedback is based on a cumulative assessment supported in part on the anonymous ratings by team peers.

6.4  Significant Bits

Most class days one student will present a five minute overview/preview/insight/review of a recent development in the broad area of "computer systems." Our objective is to establish a practice of following technological developments in the popular and technical press as well as research publication venues. In doing this, you will inform your classmates, at a high level, about something that relates to the course material in principle and goal, rather than necessarily a particular topic. Your presentation should include what the development is, why it is important, a tiny bit about how it is/was done, and perhaps something on who did it. You are asked to do just one during the semester, so find something interesting and share it with us! See the course web page for the schedule, details, evaluation rubric, and suggestions for finding topics. The presentation counts toward your grade as an additional homework assignment.

6.5  Laboratory Work and Homework Assignments

This course will involve a mix of in-class labs and out-of-class homework assignments. For each, you will work with electronic components, with software, and combinations of the two. You will build digital circuits (real and virtual), and you will write assembly programs for microcontrollers that do fun tasks such as flashing lights and making music.
You will collaborate with a randomly assigned partner for each lab; homeworks are strictly individual tasks.
The results of some laboratory work will be ungraded, while other tasks will need to be completed and verified by the instructor or mentor as part of your course grade.
Participating in lab requires:

6.6  Quizzes

We will have short weekly quizzes. These will typically last around ten minutes at the start of class. Quizzes will cover topics up through the class prior to the quiz. Your two lowest quiz grades will be dropped before calculating the average.

6.7  Exams

As opportunities for you to demonstrate your design prowess and grasp of computer organization and architecture principles, there will be three in-class midterm exams as well as a cumulative final exam.
Exam   Week   Date
1 5 Wednesday 22 February
2 8 Friday 17 March
3 12 Friday 28 April
Final - May
2 pm Friday 19 May - Section 01
9 am Tuesday 16 May - Section 02
Do not make travel plans that will conflict with the exam schedule.

7  Grading

My goal is for everyone taking this course to be able to demonstrate mastery of the course learning outcomes. I would be very happy if you all met the goals above and received "A"s. The following weighting will provide a basis for evalution,
Assignments and Labs 43%
Quizzes 11%
Midterm Exams 33%
Final Exam 13%
with the caveat that you must pass the final exam to pass the course.
Grading will be based on the College's Grading System with the following brackets proposed:
Average at least Receives Grade Points Definition
3.75 A 4.00 Excellent
3.50 A- 3.67 Excellent
3.16 B+ 3.33 Good
2.83 B 3.00 Good
2.50 B- 2.67 Good
2.16 C+ 2.33 Satisfactory
1.50 C 2.00 Satisfactory
0.50 D 1.00 Passing
0.00 F 0.00 Failing
To compensate for the unpredictability of learning exercises' outcomes, the bracket minimums (left column) may be adjusted downward (but not upward).

8  Academic Honesty

As students, you are members of the academic community. Both the College and I expect the highest standards of academic honesty. (See the Grinnell College Student Handbook, e.g.,\#Honesty_in_Academic_Work). Among other things, this means clearly distinguishing between work and ideas that are your own, and those that should be attributed to others. I expect you to follow the collaboration policies given in this syllabus and on particular assignments. In particular:
  1. When you explicitly work as part of a group or team, you need not identify the work of each individual (unless I specify otherwise).
  2. You may discuss concepts (algorithms, ideas, approaches, etc.) described in the readings, during class, or explained within the lab assignments with anyone.
  3. You may only discuss homework assignments with the instructor.
  4. You may only discuss laboratory assignments (algorithms, solutions, write-ups, code, debugging, etc.) with your group members, CSC 211 mentors, or the CSC 211 instructors.
  5. All the work submitted (code, experimental data, write-ups, etc.) must be your own. Code or documentation provided by the instructor must be attributed, including code that you copy and subsequently modify. No other code or written work (from any source) may be shared with others or copied for your own use.
  6. All non-syntax consultations (including the textbook and language references) require formal citation within the related program or write-up; syntax consultations (e.g. manual page synopses) do not require citations.
  7. Any conceptual contributions by others (not in your group) must be acknowledged and attributed in your report. That is you must give specific attribution for any assistance you receive (whether in person or in print). The suggested acknowledgment format is
    1. "[Person X] helped me to do [thing Y] by [explaining Z]."
  8. Any program results or output must be faithfully recorded, not forged. (A thoughtful explanation of unexpected behavior can often be a worthwhile submission and is much better than the alternative.)
  9. You are responsible for safeguarding your work from being copied by others. This requires you to take reasonable precautions with hard copy printouts, file system permissions, and unattended workstations.
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.

8.1  GitHub Copilot

You are not permitted to use GitHub Copilot or any other programming assistance tool that is trained on others' code for this course. If you aren t already aware, GitHub Copilot is a machine learning system that suggests code as you type in VSCode. Copilot is trained on code hosted by GitHub, and offers suggestions that go far beyond the usual API-based autocomplete suggestions most programming editors produce (e.g., VSCode's Intellisense, which you are welcome to use for this course). There are major legal questions around Copilot's use of other code, particularly as it connects to open source licenses that place restrictions on the licensing of derivative works.10
For the purposes of this class, there is no ambiguity about the use of Copilot: code suggested by Copilot is a direct violation of honesty policy item #5 above.
If you use your own computer for any programming in this class I ask that you do not install GitHub Copilot, or uninstall it if you have already done so. If you prefer not to remove Copilot from your computer you are welcome to complete all work for this course on MathLAN machines, which will not have Copilot installed.

9  Deadlines

Assignments (labs and homework) are due at the specified time and date. Assignments due on days for which you have a prior excused absence must still be submitted by the deadline to avoid late penalties.
Deadlines of 10:30 PM are not arbitrary. It is intentionally several hours before classes start in the morning. Many people are unable to stop working until something functional (or nicely polished) results; when deadlines were the start of class, I got submissions at extremely unhealthy hours and comatose students the next day. Therefore, I establish this deadline to promote your ability to wind down, get eight hours of sleep, and eat breakfast before going to class. I realize you may shift your work for other classes, thwarting these stated goals, but I can conscionably do no other.

9.1  Late Submissions

A late penalty of two-thirds grade point will be deducted in each subsequent twenty-four hour period after the deadline. Although a maximum of 2 grade points will be deducted after seventy-two hours, assignments submitted later than seventy-two hours after the deadline will only receive autograder-allotted marks. Portions of the grade assigned by human evaluation may not be earned after the seventy-two hour period.
Autograding is only used on Assignments 1-5 and Labs 9-11. (Therefore Labs 1-8 are not generally accepted more than seventy-two hours late.)
Deadlines may be adjusted under the following circumstances.
  1. Deadlines for MathLAN computer-based assignments will automatically be extended by at least one twenty-four hour period if MathLAN is down for an unscheduled period of three or more hours during the week preceding the assignment due date. Please notify me as soon as possible if you think this may be warranted.
  2. Deadlines for Gradescope-submitted assignments will automatically be extended by at least one twenty-four hour period if Gradescope is down or significantly slowed for an unscheduled period of three or more hours during the week preceding the assignment due date.11

9.2  Submission Rate Limits

Assignments may be submitted to Gradescope multiple times for automatic evaluation. Resubmissions allow you to check that your work correctly interfaces with the grading system. However, this does not preclude the need for you to do your own careful testing. Thus, after four submissions, each subsequent submission will incur a rate penalty of one-third grade point for the autograded portion of the score.
For example, making six submissions before the deadline would allow for a maximum score of 4.0−(6−4)×[1/3]=3.33.
Rate limits and late penalties accumulate independently.

9.3  Final Deadline

Assignments may be submitted (with appropriate late and/or revision penalties) up until the final deadline of Sunday 14 May at 10:30 pm.

10  Getting Help

10.1  Discussion with Piazza

For class discussion, we will use Piazza, which is designed to get you help fast and efficiently from your classmates and myself. Rather than emailing questions, please to post your questions on Piazza at
You are highly encouraged to use Piazza for questions related to the course. If a post is related to an assignment, it must adhere to the standards of collaboration for that particular assignment.

10.2  Office Hours

Please come by during my office hours to discuss the course content, get any extra assistance, or just talk about how the course is going. Note that if multiple students have similar questions or issues, we may work together as a group. If you cannot attend a scheduled office hour, you may also email me to schedule an appointment; please include 3-4 possible meeting times so that I can pick one that works for me.

10.3  Email

Email is also a reliable way to contact me, but please allow 24 hours for a response (except on weekends, when I do not read email as regularly). You may also call me in my office (x9812) for more urgent matters (e.g., you will be missing a lab due to illness).

10.4  Academic Support

If you have other needs not addressed above, please let me know soon so that we can work together for the best possible learning environment. In some cases, I will recommend consulting with the Academic Advising staff. They are an excellent resource for developing strategies for academic success and can connect you with other campus resources as well: If I notice that you are encountering difficulty and I have reached out to you and not received a response, or if you have missed multiple class sessions or are not meeting our class objectives repeatedly, I will submit an academic alert via Academic Advising's SAL portal. This notifies you of my concern, along with the Academic Advising team and your adviser(s), so that they can reach out to you with additional offers of support.


With thanks to Charlie Curtsinger for the Quizzes and Github CoPilot section;, Janet Davis and her 211 syllabus for the Reading Suggestions, Overview, and Textbook sections; Joyce Stern for the Academic Support section
Copyright © 2012, 2014, 2015, 2019 Jerod Weinman.


1Mueller, P. A., & Oppenheimer, D. M. (2014). The pen is mightier than the keyboard: Advantages of longhand over laptop note taking. Psychological science, 25(6), 1159-1168.
2Carter, S. P., Greenberg, K., & Walker, M. S. (2017). The impact of computer usage on academic performance: Evidence from a randomized trial at the United States Military Academy. Economics of Education Review, 56, 118-132.
3Glass, A. L., & Kang, M. (2018). Dividing attention in the classroom reduces exam performance. Educational Psychology, 1-14.
4Sana, F., Weston, T., & Cepeda, N. J. (2013). Laptop multitasking hinders classroom learning for both users and nearby peers. Computers & Education, 62, 24-31.
5Ward, A. F., Duke, K., Gneezy, A., & Bos, M. W. (2017). Brain drain: the mere presence of one's own smartphone reduces available cognitive capacity. Journal of the Association for Consumer Research, 2(2), 140-154.
6Huey, M., & Giguere, D. (2022). The Impact of Smartphone Use on Course Comprehension and Psychological Well-Being in the College Classroom. Innovative Higher Education.
7Grinnell College. (2016) Grinnell College Semester Credit Definition.
8I consider this a minimum recommendation for achieving at least "satisfactory" (i.e., C-level) results (cf. Section 7). "Good" or "excellent" results may require a greater time investment.
9Ohland, M. W., Loughry, M. L., Woehr, D. J., Bullard, L. G., Felder, R. M., Finelli, C. J., Layton, R. A., Pomeranz, H. R., & Schmucker, D. G. (2012). The comprehensive assessment of team member effectiveness: Development of a behaviorally anchored rating scale for self and peer evaluation. Academy of Management Learning & Education, 11 (4), 609-630.
10You can read more about these issues at
11The Gradescope status board will be used to adjudicate the timing of the issue.