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:
- How does a computer actually work inside?
- How can we get electricity to perform abstract tasks like adding and
storing numbers?
- What actually happens when our programs are executed by a computer?
- How do we design languages and hardware to work together?
- How do we make computers faster?
By the end of this class, you should be able to:
- construct digital logic circuits to implement a variety of functions;
- write programs in assembly language;
- identify the major components of a computer and explain how they work;
- consider hardware design issues that can affect software performance,
such as instruction set architecture, pipelining, caching, and hardware
parallelism.
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
- the practice of programming (problem analysis, program design, debugging,
etc.), and
- programming in the C language (memory allocation, pointer arithmetic
and dereferencing, etc.)
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:
- When you explicitly work as part of a group or team, you need not
identify the work of each individual (unless I specify otherwise).
- You may discuss concepts (algorithms, ideas, approaches,
etc.) described in the readings, during class, or explained within
the lab assignments with anyone.
- You may only discuss the assignment (questions, not solutions)
with others outside your gruop. Your written work must be your own.
You must not share code (unless explicitly permitted) or copy written
solutions (either manually/visually or electronically).
- All the work submitted (code, experimental data, write-ups, etc.)
must be your own. Code or documentation provided by the instructor
must be attributed; no other code or written work (from any
source) may be shared with others or copied for your own use.
- 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.
- 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
"[Person X] helped me to do [thing Y] by [explaining
Z]."
- 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.)
- 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 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.
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.
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.