CSC 211 - Computer Organization and Design
Fall 2018
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.
| Instructor: | Jerod Weinman |
| Office: | Noyce 3825 |
| Phone: | x9812 |
| E-mail: | [weinman] |
| |
| Mentor: | Hoang Cao |
Course web page: http://www.cs.grinnell.edu/~weinman/courses/CSC211/2018F
Class meetings, 2:00-3:50 pm, MWF, Science 3819
Contents
1 Accommodations
2 Overview
3 Textbook
4 Class attendance
5 Electronic Devices
6 Assignments and Activities
6.1 Reading
6.2 Participation
6.3 Significant Bits
6.4 Laboratory Work and Homework Assignments
6.5 Quizzes
6.6 Exams
7 Grading
8 Academic Honesty
9 Deadlines
10 Getting Help
10.1 Discussion with Piazza
10.2 Office Hours
10.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 3rd floor of the Rosenfield Center (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:
- 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;
- explain the basics of how hardware performance is specified and measured.
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/appendices.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
This course will 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
(mostly 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 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.)
Because I do not wish you to risk harm to yourself or others,
I usually moderate penalties in case of illness.
If you know in advance that you will be absent for any reason, 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. 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 (smartwatches, phones, tablets, or laptops) will be prohibited
during class.
Why?
- Taking notes on laptops is generally less effective for learning than
writing longhand, which forces you to consolidate information as you
process it.1
- Distractions (email, messages, social media, etc.) hinder your own
learning23 as well as that of those around you.4
- Even the mere presence of such devices impedes cognition.5
When class begins, please put your electronic devices away until after
the conclusion of the class.
Exceptions to this policy can be made as an accomodation for those
with documented disabilities.
6 Assignments and 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).6 Thus, you should plan to spend a minimum of 10 hours/week
on work for this course:
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:
- 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, mostly assigned for either Mondays or Fridays.
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, 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 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 when appropriate
- making positive contributions to class discussion by volunteering
and when called upon
- staying on task during collaborative exercises, and
- working effectively with your group.
Students who regularly meet these criteria can expect to earn an A-
for their participation grade. I will reward students who regularly
provide significant insights or guide discussion in productive ways
with a higher participation score. Students who fail to participate
regularly or who participate in counterproductive ways (e.g., by dominating
the conversation or making inappropriate comments) can expect to earn
a lower score.
6.3 Significant Bits
From time to time, one member of the class 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.4 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 AVR microcontrollers
that do fun tasks such as flashing lights and making music.
You will work with a randomly assigned partner for each lab and homework.
The results of some laboratory work will be ungraded, while other
tasks will need to be completed and verifiedby the instructor or mentor
as part of your course grade.
Participating in lab requires:
- doing any assigned readings,
- printing a copy of the lab exercises (as posted in the schedule) and
reading them before lab,
- completing any exercises assigned as preparatory work,
- arriving on time,
- beginning your work promptly and staying on task,
- planning ahead and working neatly,
- being proactive about solving your own problems or asking for help
when needed,
- working collaboratively with your lab partner, and
- being considerate of others, particularly by putting things back where
they belong when you are done with them.
6.5 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.
Your lowest quiz grade will be dropped before calculating the average.
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 | 4 | Monday 1 October |
| 2 | 7 | Friday 19 October |
| 3 | 11 | Monday 19 November |
| Final | - | TBD |
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
familiarity and fluency with the course concepts. 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,
| Homework | 40% |
| Class Discussion | 10% |
| Quizzes | 10% |
| Midterm Exams | 30% |
| Final Exam | 10% |
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.,
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 homework assignments with others. Your
written work must be your own. You must not share code (unless explicitly
permitted) or copy written solutions. In short, although you may collaborate
with others to understand how to solve problems, you should be able
to construct and explain each solution on your own.
- 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 as well as file system permissions.
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.
9 Deadlines
Assignments 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.
A late penalty of one letter grade will be deducted in each subsequent
twenty-four hour period after the deadline.
While these late penalties may seem extreme, we make two contradictory
observations:
- 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.
- With each assignment being worth approximately [40%/16 assignments]=2.5%
of your grade, a one day late penalty amounts to a [2.5%/4]=0.625%
reduction in your overall grade, which is 4 grade points×0.625%=0.025
grade points overall. Using the grade brackets above, in most cases
it would take a week of penalties to lower your grade bracket. Hardly
extreme.
The deadline of 10:30 PM is not arbitrary. It is intentionally
several hours before classes start in the morning. Because many people
are unable to stop working until something functional (or nicely polished)
results, I got submissions at extremely unhealthy hours and comatose
students the next day when deadlines were the start of class. 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.
Exception: 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.
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,
which is linked directly from the P-Web course or at https://piazza.com/grinnell/fall2018/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.
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.
I enjoy getting to know my students, but I prefer to reserve office
hours for academic matters. If you would like to have a more informal
conversation, I would be delighted to accept an invitation to eat
lunch with you at the Marketplace.
Email is also a reliable way to contact me, but please allow 24 hours
for a response (except on weekends, when I do not regularly read email).
You may also call me in my office (x9812) for more urgent matters
(e.g., you will be missing a lab due to illness).
Acknowledgments
With thanks to Charlie Curtsinger for the Quizzes section, 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 Jerod
Weinman.
This work is licensed under a Creative
Commons Attribution-Noncommercial-Share Alike 4.0 License.
Footnotes:
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.
6This is a minimum recommendation for achieving "satisfactory"
(i.e., C-level) results. "Good" or "excellent" results may
require a greater investment.