Introduction to Computer Architecture
Department of Mathematics and Computer Science
Hobart and William Smith Colleges
Instructor: David J. Eck (email@example.com)
Course Handout: http://math.hws.edu/eck/courses/cpsc220_f12.html
Monday, Wednesday, Friday, 12:20--1:15 PM, Room Gulick 206A
Lab: Tuesday, 11:55--1:20, Gulick 208
See "Final Exam" section below for end-of-semester office hours.
|Lab 1, August 28
Java Bitwise Operators
|Lab 2, September 4
Intro to Logisim
|Lab 3, September 11
Machine Language Programming
|Lab 4, September 18
Writing a LARC Simulator
|Lab 5, September 25
|Lab 6, October 6
Assembly Language Subroutines
|Lab 7, October 16
|Lab 8, October 23 & 30
Larc in LogiSim
|Lab 9, November 6 & 13
Writing an Assembler
|Lab 9b, November 13 & 20
|Lab 10, November 27 and December 4
I/O in Larc
Final Exam: December 13
The final exam is 7:00 PM on Thursday, December 13, in our regular
An information sheet is
Office Hours for the End of the Semester:
Thursday, December 6: 11:00 -- 4:00
Friday, December 7: 2:00 -- 2:50
Monday, December 10: 10:30 -- 12:00 and 2:00 -- 3:00
Tuesday, December 11: 1:00 -- 3:00
Wednesday, December 12: 11:00 -- 3:00
Thursday, December 13: 11:00 -- 1:15
Fifteenth Week: December 3, 5, and 7
We will finish our discussion of division on Monday. The rest of the
day on Monday will be devoted to floating point numbers. On Wednesday
and Friday, we will review for the final exam.
For lab on Tuesday, you can continue working on Lab 10.
Your work for this lab should be in your homework folder by Saturday morning.
Fourteenth Week: November 26, 28, and 30
On Monday, we will discuss I/O and trap handling in the
Larc architecture, and we will prepare for this week's
lab, which requires you to
implement a system trap handler for Larc. YOu should be
sure to read Chapter 7 from the Larc manual, which was handed
out in class.
Starting on Wednesday, we will return to a topic that
we skipped over earlier in the term: floating point numbers
and multiplication and division of integers. This material
is covered in Chapter 3 of the textbook.
Thirteenth Week: November 19
There is no class on Wednesday or Friday this week, because of Thanksgiving break.
On Monday, we will continue talking about I/O, including I/O in the Larc architecture.
Twelfth Week: November 12, 14, and 16
On Monday, we will discuss the work that you will have to do for
the second part of
Lab 9. For the rest of the week, the topic will
be input/output systems. Unfortunately, the chapter in the book on I/O systems is not
very useful for us. So, the main reading will be Chapter 7 of the Larc
Manual; I will hand out a copy of that in class on Wednesday.
Eleventh Week: November 5,7, and 9
We start a new two-week lab this week —
writing an assembler for Larc. We will spend Monday, at least, talking about this
lab. After that, we will start looking at caching and the memory hierarchy.
As with pipelining, we will go for a general understanding of caching rather
than a detailed knowledge of how it is implemented. The memory hierarchy is
covered in Chapter 5 of the textbook. You should read sections 5.1 and 5.2.
Tenth Week: October 29, and 31; November 2
There is a test on Friday, November 2. An information sheet
We will just a bit more time on Monday talking about pipelining, and we will look at a
working implementation of Larc in Logisim. Aside from that, on Monday and Wednesday, we
will review for the test and we will start preparing for the next lab assignment, which
will be to write a Larc assembler in Java.
Ninth Week: October 22, 24, and 26
We begin a two-week lab on Tuesday, in
which you will construct a Larc CPU in LogiSim that can execute Larc
machine language programs, with the exception of traps. On Monday,
we will continue to prepare for that lab. From that we will move
on to pipelining in CPU architectures. For an introduction to
pipelining, read Section 4.6 in the textbook.
Eighth Week: October 15, 17, and 19
This week, we will look at sequential logic circuits, which we will
use primarily to build memory circuits. We will then talk about how the
register file for Larc can be constructed, and we will look at how all of
the main components of Larc -- memory, register file, ALU, PC -- can be
The lab for this week uses LogiSim
to build memory circuits.
The basic material on sequential logic and memory circuits can be
found in Appendix C of the textbook, sections C-7 and C-8. (Appendix C
is on the CD that comes with the text.) The construction of a MIPS
computer, paralleling what we are doing with Larc, is in Chapter 4,
Sections 1 through 4.
Seventh Week: October 10 and 12
Because of Fall break, there are are no classes on Monday or Tuesday
this week. There is no lab this week. Work from the assembly programming
labs, Lab 5 and
Lab 6, is due next Tuesday, October 16.
We will discuss the MIPS ISA in class this week. MIPS is described in detail
in Chapter 2 of the textbook, which covers many of the same topics that we have
looked at in the context of Larc. You should read Sections 2.9 and 2.10, which
will complete the reading from Chapter 2. (You should also read earlier sections of
Chapter 2, if you have not done so.)
After looking briefly at MIPS on Wednesday, we will discuss alternative architectures
on Friday. The reading is the first five pages of Section 2.20, a short section on the history of computer architectures,
which is on the CD that accompanies the textbook.
Sixth Week: October 1, 3, and 5
We will talk about subroutines and how they are implemented in LARC assembly language,
using a stack of activation records. The MIPS version of all this is in Section 2.8
of the textbook, where subroutines are called "procedures." Once we have finished
with subroutines in LARC, we will talk about MIPS and other possibilities for
assembly languages. You should read Sections 2.5 through 2.8.
In addition to our regular lab, we will have an extra lab this week on Friday, during
class time. In Tuesday's lab period, you can work on Labs 4 and 5. Lab 4 is due
by 9:00 AM on Friday. Lab 5 and Lab 6 will be due together at the next regular lab,
Tuesday, October 16.
Fifth Week: September 24, 26, and 28
There is a test on Friday, September 28. An information sheet
We will continue working with the LARC assembly language in class and
in lab this week. There is no additional reading, but you might want to
read ahead to Sections 2.5, 2.6, and 2.7 of the textbook. After covering
LARC, I plan to spend some time on other architectures, including the
full MIPS architecture. Sections 2.5, 2.6, and 2.7 cover some of the
same things that we have been doing with LARC, but using MIPS instead
Fourth Week: September 17, 19, and 21
This week, we move from the Larc machine language to Larc
assembly language. The reading for this material is Chapters 5 and 6
of the Larc Manual. Copies of those chapters will be handed out in class.
You should also read Section B.1 from Appendix B in the textbook, as a
general introduction to assemblers and linkers.
For lab this week, you will write
a program that simulates the Larc computer.
Note: The first test in the course comes up next week, on Friday,
Third Week: September 10, 12, and 14
We will continue working on the machine language (or "instruction set
architecture") of the Larc model computer. In
lab on Tuesday, you will write some
machine language programs and run them with a Larc simulator.
(Next week in lab, you will write a simulator.)
By the end of the week, we will start looking at the full
MIPS instruction set architecture.
You should finish reading Chapters 3 and 4 from the Larc manual, if
you haven't already done so. You should also read Sections 2.3 and 2.4
from the textbook (and review 2.2).
Second Week: September 3, 5, and 7
We will do a little more work with logic gates and binary numbers (including
negative numbers, and we will begin the study of the machine language for the
Larc model computer. As part of this, we will start thinking about how a
circuit might be built that could execute machine language instructions, but
you won't fully understand that until much later in the course.
You should read sections C1, C2, C3, and 2.4 from the textbook. I will
also hand out a reading on Wednesday consisting of Chapters 3 and 4 from
the Larc lab manual
This week's lab introduces the Logisim
logic circuit simulation program and asks you to use it to build some basic
First Week: August 27, 29, and 31
Welcome to the course!
This week will be an introduction to the ideas of computer architecture
and assembly language. You should read the following sections from the
textbook: Chapter 1, Sections 1 and 2; Chapter 2, Sections 1 and 2.
The class handout
is also a reading assignment.
We have a lab after only one day of class, so we will have to spend part
of the first class meeting preparing for the lab. The lab asks you to use
the bitwise and bit shift operators (
>>>) in a Java program. We will discuss these
operators in class on Monday, and there will be some information about the operators
in the lab worksheet.
There is also a homework assignment, which you will turn in at the start of
class on Wednesday.
Note that there is new version of Linux in the labs this semester.
You can find some basic information about it on the About Linux page,