CSC 211 - Computer Organization and Design

Fall 2015

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 coputers.
Instructor: Jerod Weinman
Office: Noyce 3825
Phone: x9812
E-mail: [weinman]
Course web page: http://www.cs.grinnell.edu/~weinman/courses/CSC211/2015F
Class meetings, 11:00-11:50 am, MTWF, Science 3819

Contents

1  Accommodations
2  Overview
3  Textbook
4  Class attendance
5  Assignments and Activities
    5.1  Reading
    5.2  Participation
    5.3  Significant Bits
    5.4  Laboratory Work
    5.5  Homework
    5.6  Exams
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, Autumn Wilke, located on the 3rd floor of the Rosenfield Center (x3124).
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
  1. the practice of programming (problem analysis, program design, debugging, etc.).
  2. 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, 4th edition, Elsevier, 2008. ISBN 978-0123744937.
To keep your used book costs down, note that this is not the most recent edition. This textbook is fondly known as Patterson & Hennessy (not to be confused with Hennessy and Patterson, which is a more advanced textbook). Either the revised printing (with a dull green cover) or the original printing (with a blue cover) covers the required material. The latest printing has fewer errata, while the original printing is easy to find used. Do not buy earlier editions (or the newer) as they are quite different. The Kindle edition received rather poor reviews. Finally, do not use an international edition that uses ARM rather than MIPS as the primary example architecture.
If your copy does not have the CD, you can download the contents from the publisher: http://booksite.elsevier.com/9780123747501/CD_ROM_Files.zip. You may also want to check your text against the published errata: http://booksite.elsevier.com/9780123744937/COD4e_errata_10-2009.pdf
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 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  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).1 Thus, you should plan to spend a minimum of 10 hours/week on work for this course:

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 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. (Expected time: 5 to 10 minutes.)
Many of the readings are fairly short (about 13±6 pages, or roughly 30-40 pages per week), but can 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  Participation

Because much of our work in this course involves collaboration and discussion, you will be evaluated on your participation.
Participating in class involves: 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.

5.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 will 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.

5.4  Laboratory Work

In your lab section, you 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 AVR microcontrollers that do fun tasks such as flashing lights and sounding buzzers. You may work with a partner of your choice, or if there is enough equipment, you may choose to work alone.
The results of some laboratory work will be ungraded, while other exercises will become part of your homework. I will post homework assignments promptly so that you can see how they relate to lab exercises.
You will be evaluated by your lab instructor on your active participation. Participating in lab involves: Students who consistently meet these criteria can expect to earn 100% (an A+) for their lab participation grade. Students who repeatedly fail to meet these criteria can expect to earn a lower score.
We will work with some relatively expensive equipment in this course. The equipment must stay in SCI 3818, and the door should remain locked outside of lab times. You will be given the door combination, but you must not make the combination public.

5.5  Homework

Weekly homework assignments will generally be due Monday evenings. Some assignments will be extensions of work begun in lab. The assignments will include both written problem solutions and computer programs.
All written work should use complete sentences with proper English grammar, including any mathematical calculations. Your textbook is one exemplar of this style of writing; see Section 1.4 as just one example. For more explicit style guidance, see
David Kramer. How to write mathematical English
The first section, "Mathematical English is English Prose" should be particularly helpful.

5.6  Exams

As opportunities for you to demonstrate your design prowess and grasp of computer organization and architecture principles, there will be four hour exams as well as a cumulative final exam.
Exam   Week   Date
1 4 Friday 25 September
2 7 Monday 12 October
3 9 Wednesday 4 November
4 12 Wednesday 25 November
Final - Thursday 17 December, 9 AM
Do not make travel plans that will conflict with the exam schedule.

6  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 30%
Class Discussion 10%
Lab Participation 5%
Hour Exams 40%
Final Exam 15%
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).

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. 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:
  1. 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 a good 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 overall, general wellness.
  2. With each assignment being worth approximately [25%/11 assignments]=2.27% of your grade, a one day late penalty amounts to a [2.27%/4]=0.57% reduction in your overall grade, which is 4 grade points×0.57%=0.0227 grade points overall. Using the grade brackets above, in most cases it would take more than two weeks (fourteen days) of penalties to lower your grade bracket. Hardly extreme.
The deadline of 10:30 PM is not arbitrary. It is intentionally 9.5 hours before class starts at 9 AM. 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 coming 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.

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/spring2015/f15csc21102/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.
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.

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 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 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.
ccbyncsa.png
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 4.0 License.

Footnotes:

1This is a minimum recommendation for achieving "satisfactory" (i.e., C-level) results. "Good" or "excellent" results may require a greater investment.