Computer Science 281
Exam 1 Review (draft)
Cavaet: Although I do not intentionally leave out material
from exam reviews, you will be responsible for all material covered
for this exam period, including reading, lectures, and homework. If
you do spot an ommission in the following, please do let me know.
The following is intended only as a guide for your study. Although
some exam questions may be similar to the items listed below, this
review is intended primarily to guide your study.
The first hour exam will be held on Friday, Feb. 15, and will
cover chapters 1 and 2 of Paul, together with material on binary
numbers. You may also find chapter 1 of Tannenbaum useful in your
review. You should certainly review the homework assigned as well.
The outlines for exams in the second and third weeks are available in
powerpoint format in Week2.ppt and Week3.ppt, available in the
handouts folder on Plato.
Basic architectural issues:
- Be able to discuss the notion of levels of virtual machines,
and describe where assembly language programming enters into the
picture (Tanenbaum).
- Be able to describe (in very general terms) an accumulator
machine, a stack machine, and a load/store machine. I may give you
a few instructions for one of these machines and ask you to write
the code to do a calculation.
- Be able to give a brief description of pipelineing and say why
it is useful. Be able to say why nop's are occasionally necessary.
Although we will cover annulled branches before this exam, they
will not be on this exam (but probably the next one).
The M4 macro preprocessor:
- Be able to say what a preprocessor does
- Be able to write a simple M4 example file (similar to the
homework exercise, but perhaps involving arguments). Look at
example1.m - example3.m (I think that's all of them).
Compile/Assemble/Link:
- The process of creating and running a program under Unix is a
bit different than our earlier experiences with Visual C and
JCreator. Be able to write down the appropriate Unix commands to
compile and link a C main program with an assembly language
subroutine, and be able to say what the link editor does.
Assembly language programming:
- Be prepared to write a complete assembly language subroutine
along the lines of the programs we will have written before the
exam (i.e., including the exercises due Monday and Tuesday).
Although I am generally more forgiving of syntax errors (to an
extent) than is the assembler, you should be as accurate in syntax
as possible. We currently are using a very limited set of
instructions, so a sheet of assembly language statements will
probably not be provided for this exam (it may possibly be
provided in later exams when we have a larger set of instructions
to worry about).
- Be able to list the three basic sets of control structures,
and show how they may be implemented in assembly language.
Cultural Issues:
- In lectures, we have touched upon some matters of history, and
these are an important part of your understanding of computer
science. You should be prepared to give brief descriptions
of the following ideas, people, and machines:
- Structured programming
- What can go wrong with the GOTO statement?
- Who was Charles Babbage?
- Who was Ada Lovelace?
- Who was John Von Neumann?
- Who was Commander Grace Murray Hopper
- What was the 1401, and why is your instructor so fond of
it? (it was the second machine for which I wrote a program and
got paid for it - the first being an IBM 1620 in the basement
of the administration building at the University of Idaho. You
guess the year).