Computer Organization and Design
Monday, Wednesday, Thursday at 4:35 - 5:40, Room 110 WVH
Final Exam: TBA
John Casey, firstname.lastname@example.org
617 - 373 - 3550
for the current calendar.
Watch here for updates: assignments,etc.
Amod will run the lab on
Wednesday, Feb. 4, from 12 to 1.
Just for this week there will be no lab on Thursday.
I'm having an eye exam early this afternoon. As soon
as I can see well enough to drive, I'll be back.<
I expect to be back in time for class. If not, go work
on Lab 1 and Lab 2 - having everybody in the lab will
make things be faster and smoother.
The lab for this course:
there will be a lab put up on the calendar page
each week. Do it, and then go to the lab on
the first floor of WVH for
a couple of minutes during the scheduled hours
and show that you have done it.
The lab will br run by Amod Joshi
(email@example.com) and the hours
Monday, 3:30 pm - 4:30 pm
Thursday, 3:00 pm - 4:00 pm
Friday, 11:00 am - 12:01 pm.
What questions will you be able to answer after this course?
- How are programs written in a high-level language
translated into the language of the hardware, and how does the
hardware execute the resulting program?
- What is the interface between the software and the hardware,
and how does the software instruct the hardware to perform needed functions?
- What determines the performance of a program, and how can a programmer
improve the performance?
- What techniques can be used by hardware designers
to improve performance?
- What are the reasons for and the consequences of
the recent switch from sequential processing to
Prerequisites: Some programming experience, or a course
like CS U211, plus some data structures. If you are currently
taking CS U213, that should be OK.
What do we study?
A one-phrase answer is: how the hardware runs the software.
Another part of the answer is: the hierarchical nature of all
We want to get experience working at the hardware-software interface,
so we make choices:
our hardware is the MIPS family of chips; our software is in
MIPS assembly language, and in C.
The topics covered will include C and assembly language programming,
how higher level programs are translated into machine language,
how object-oriented languages are implemented,
the general structure of computers, interrupts, caches,
and related subjects.
By the end of the quarter, you should know:
what operations the chip can perform
what data structure represents each of those operations
how the hardware decodes each operation, and carries it out
what happens when the hardware detects an exception or interrupt
all operations are carried out by doing boolean algebra on single bits
how all this affects performance
how to write small programs in assembly language
1. Students are expected to attend classes regularly, to be on time, and not
to leave the classroom before the class is over.
2. Weekly labs: these will be held in the big lab on the first
floor of West Village H.
More information about them will be posted later.
2. Readings, exercises, quizzes, four
one exam, and a final.
We encourage people to get together and discuss the assignments,
prepare for tests, etc. But this is not the same as copying
some one else's code or answers to assignments. If I find
material that is substantially the same in two submissions, then
the minimum penalty will be twice the full credit for that work. That is,
if something were worth 100 points, it will be as if you scored -100.
This Week's Schedule
Reading Assignment: Patterson and Hennessy,
Chapter 1(easy reading), and
Sections 3.1, 3.2.
1. David A. Patterson and John L. Hennessy.
and Design: The Hardware/Software Interface.
Morgan Kaufmann, San Mateo, 2005.
Often referred to as P&H.
Much modern material added to the third edition. This is recent -
copyright 2009 -
and more exciting.
2. You'll need a reference for C. We require:
Brian Kernighan and Dennis Ritchie.
The C Programming Language: Second Edition.
Prentice Hall, 1988.
Sometimes referred to as the New Testament;
commonly called K&R.
Readings from this will be assigned, but you may
be able to avoid buying the book. The readings
will be short, perhaps 5 to 20 pages; you
may be able to keep up by using
someone else's copy.
Other Ways to Learn
"The 1990s saw the emergence of the Internet
and the World Wide Web, the first successful handheld
computing devices(personal digital assistants or PDAs),
and the emergence of high-performance digital
consumer electronics, from video games to set-top
These changes have set the stage for a dramatic change in
how we view computing."(Quoted from H&P's other book)
And this has lead to an explosion of new ways
of teaching about the place where software meets
Three wonderful books with very different
approaches are in the collection at Snell library:
Randal E. Bryant and David O'Hallaron.
Computer Systems: A Programmer's Perspective.
A strong emphasis on optimizing performance, and
a way of seeing programs run on real machines.
Yale N. Patt and Sanjay J. Patel.
Introduction to Computing Systems: From Bits and Gates
to C and Beyond.
The title says it: start from transistors and logic gates,
and work through the design of a tiny, but real,
machine, and arrive, bottom-up, at C programs.
Andrew S. Tanenbaum.
Structured Computer Organization.
Also a bottom-up approach: start with digital logic
and end with assembly language.
A MIPS simulator that will run on every keyboard-equipped
computer you own - it's one Java archive file. It's called
MARS (Google: MIPS MARS), and, unlike every programming
environment you've used before, it can run programs both forward
and backward(think about debugging).
MARS was written by Ken Vollmar(Missouri State), and
Pete Sanderson(Otterbein College).