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] |
| |
Mentors: | |
Section 1 | Ryu |
Section 2 | Sam |
- Course web page:
- https://weinman.cs.grinnell.edu/courses/CSC211/2023S
- Class meetings:
- MWF, Science 3820
- Section 1
- 10:00-11:50 am
- Section 2
- 2:00-3:50 pm
Contents
english
1 Accommodations2 Overview3 Textbook4 Class attendance 5 Electronic Devices6 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 Exams7 Grading8 Academic Honesty 8.1 GitHub Copilot9 Deadlines 9.1 Late Submissions 9.2 Submission Rate Limits 9.3 Final Deadline10 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:
- 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, 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:
http://booksite.elsevier.com/9780128201091.
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?
- 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 cognition5 and may also create anxiety and lower comprehension.6
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:
- 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 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:
- 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.
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
instrument
9 for peer evaluation of team members' functioning along three critical
dimensions:
- Contributing to the team's work ("helping the team achieve
its goals or objectives by completing the assigned tasks")
- Interacting with teammates ("interactions within the team
that contribute to a supportive environment")
- 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.
- Peer teamwork feedback can influence lab grades. Students
who generally exceed expectations may improve their grade (i.e., by
at most one-third grade point). Students who generally fail to meet
expectations may lower their grade (i.e., by at most one-third grade
point).
- Giving peer teamwork feedback is required. Students who do
not complete one or two peer assessments in a timely fashion will
have their lab grade average lowered by one-third grade point. Students
who do not complete three or four peer assessments in a timely fashion
will have their lab grade average lowered by two-thirds grade point.
Students who do not complete five or more peer assessments will have
their lab grade average lowered by one grade point.
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:
- 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.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.,
https://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 the instructor.
- 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.
-
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.
-
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.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.
- Important:
- 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.)
- Exceptions:
- Deadlines may be adjusted under the
following circumstances.
- 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.
- 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.
- Note:
- 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
https://piazza.com/grinnell/spring2023/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.
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:
http://www.grinnell.edu/about/offices-services/academic-advising.
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.
Acknowledgments
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
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.
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
https://www.plagiarismtoday.com/2021/07/08/github-copilot-and-the-copyright-around-ai/.
11The Gradescope status board
https://gradescope.statuspage.io
will be used to adjudicate the timing of the issue.