CSC 211 - Computer Organization and Design

Fall 2020

Synopsis: This course provides a view bridging the abstraction of software and the concrete reality of physics. 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 simulations.
Instructor: Jerod Weinman
E-mail: [weinman]
Mentor:
Virtual Office:
https://grinnellcollege.webex.com/meet/weinman
Course web page:
http://weinman.cs.grinnell.edu/courses/CSC211/2020F
Class meetings:
MTWThF, 1:00 pm - 2:50 pm

Contents

1  Accommodations
2  Overview
3  Textbook
4  Class attendance
5  Assignments and Activities
    5.1  Reading
    5.2  Laboratory Assignments
6  Grading
7  Academic Honesty
8  Deadlines
9  Getting Help
    9.1  Discussion with Piazza
    9.2  Office Hours
    9.3  Email

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 Disability Services, John Hirschmann, located on the third floor of Goodnow Hall (x3089).

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, 5th edition, Elsevier, 2015. ISBN 978-0124077263 .
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: http://booksite.elsevier.com/9780124077263/index.php. You may also want to check your text against the published errata: http://booksite.elsevier.com/9780124077263/errata.php
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., response questions and exercises from the text). In short: You are expected to attend and actively participate in class. I am expected to make class worth attending.
Because our synchronous class meetings are based on collaborative problem solving, your presence is integral to your learning.
Although class sessions will be recorded for those unable to attend, and I will not explicitly grade based on your attendance, I want to be abundantly clear that I do expect you to attend our synchronous meetings.
If you miss a session for any reason, I would appreciate a note from you acknowledging that fact. I strongly prefer you notify me before class. (After all, you wouldn't call in sick for work at the end of the work day.) I require you to let me know beforehand of your absence on any lab day, so I can make any necessary adjustments to lab partner assignments.
You do not need to give me a reason for your absence (I understand that current circumstances present innumerable complexities), but I want ensure you are heeding the fact that you will have (make-up) work to do in order to meet our desired learning outcomes. You should expect to hear from me if I find you missing significant amounts of class, particularly if you are not communicating with me about it.
Our discussions (and your learning) benefit from your contributions, so I trust you are making every effort to attend. However, if you do miss a class, you must first review the recorded session and discuss with a classmate your questions about any material that you may have missed. After that, you may follow up with the instructor about any further questions or concerns.

5  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.1 That we meet for ten hours of class each week implies you should spend fourteen hours each week working outside of class. For example, you might spend four hours completing the lab assignments (two hours for each of the two labs per week), leaving you three hours to read, review, and study each of the remainng three day's class material.2
Such coursework will encompass the following elements.

5.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 study any material that has been assigned before coming to class. Reading the textbook entails the following:
Overview
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.)
In-Depth
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. The texts contain low-level code, diagrams, and concepts that require a moderate amount of study. 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.

5.2  Laboratory Assignments

This course will involve thirteen laboratory assignments we will start during class, but which you will likely complete out-of-class. You will build simulated digital circuits and will write low-level assembly programs.
You will collaborate with a randomly assigned partner for each lab. Working with a partner will help ensure you can take some advantage of the principle that "Given enough eyeballs, all bugs are shallow."3 Working with an assigned partner will increase the chances of being exposed to different ways of thinking and problem-solving as well as help you practice the skills you'll need in the real world, where you often do not get to choose your coworkers.
Working collaboratively means everyone whose name appears on a submission has contributed to and understands all parts of the work. I reserve the right to briefly interview you to ask questions about your work. The kinds of questions I would ask will be easy for anyone who contributed to and understands their submission.
All group members are jointly responsible for ensuring a submission is made. For this reason, I recommend submitting collaborative labs while you are sitting "together." Moreover, with analogy to pair programming, pair submission helps prevent incorrect files from being uploaded. Uploading the wrong file will incur a one grade point penalty.
You will use Piazza (see Section 9.1) 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.

6  Grading

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
The logistics of grading will happen via the Gradescope (https://www.gradescope.com) website. Since the College login will not be used during this term, please ensure the password you choose adheres to the Grinnell College Password Policy (https://grinco.sharepoint.com/sites/its/ServiceCatalogPages/Password%20Information.aspx)

7  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.,
http://catalog.grinnell.edu/content.php?catoid=12\&navoid=2537\#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: 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  Deadlines

Assignments are due at the specified time and date. I strongly encourage you to attend to these. Labs begun on Tuesdays will be due the following Friday. Labs begun on Thursdays will be due the following Monday.
In the software production world, missing critical release deadlines can have significant consequences for individuals, teams, or even entire companies. Planning carefully with deadlines in mind is an important habit to develop. After all, in the academic world, missing assignment deadlines has consequences not only for your grade, but impacts your time available for other coursework and can negatively affect your general wellness overall.
In particular, several of the laboratory assignments will build upon one another; you will not be able to start the next lab until you and your partner complete the previous portion. In order to avoid a catastrophic cascade, you should plan to complete the work by the given deadlines.

9  Getting Help

9.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, which is linked directly from the P-Web course or at https://piazza.com/grinnell/fall2020/csc211/home.
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.

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

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

Acknowledgments

With thanks to Janet Davis and her 211 syllabus for the Reading Suggestions, Overview, and Textbook sections, along with some language from bullet three for the Academic Honesty section.
Copyright © 2012, 2014, 2015, 2019 Jerod Weinman.
ccbyncsa.png
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 4.0 License.

Footnotes:

1Grinnell College. (2016) Grinnell College Semester Credit Definition.
2I consider this a minimum recommendation for achieving at least "satisfactory" (i.e., C-level) results (cf. Section 6). "Good" or "excellent" results may require a greater time investment.
3This principle is dubbed Linus's Law by Eric S. Raymond in The Cathedral and the Bazaar, O'Reilly Media, 1999, p. 30.