CS63: Principles of Computer Organization
Department of Computer Science
Ray Ontko, Instructor
Fall Semester 1997-98
Dennis Hall, Room 231
Why this course?
Principles of Computer Organization answers the question
"How do computers work?". It examines the underlying
components and the basic organizing
principles in the construction of computer systems. It
includes an examination of transistors and simple logic circuits,
micro-processor components, microcode, machine language,
assembly language, operating systems, and a variety of
By studying the fundamental organizing principles of computer systems,
we are better able to understand, design, and implement complex systems.
By way of comparison, a course on "computer architecture" might
answer the question "How do I design a computer?" It would
devote considerable attention to identifying which functionality
should be included in a system, to evaluating a number of options
for acheiving the design goals, and to explaining techniques for
implementing them. Principles of Computer Organization
is about understanding the inner workings of computer systems
from a conceptual standpoint, rather than from an engineering standpoint.
Upon successful completion of this course, the computer will
no longer seem a "black box" to you. The magical incantations that
we call programs will no longer simply "work"; they will have
a "meaning" that is grounded in the layers of physical and
virtual machinery upon which they run. More importantly,
you will have encountered a number of diverse paradigms for
solving problems using computer systems. This course should give you
a robust framework upon which to hang new knowledge within the
This course is also about learning the skills needed to acquire
this kind of knowledge. It is about careful reading of a
scientific text. It is about using exercise problems to
probe and develop your understanding of the material.
It is about bringing material up to date and finding the leading
edge of a field within the discipline. And, it is
about interacting closely with others in your discipline
to learn, investigate, and understand more thoroughly than
might be possible through individual, lone scholarship.
In short, this course is not just about learning the
subject matter, it is also about developing habits
and methods appropriate to the discipline and to
scholarly inquiry in general.
There are two pre-requisite courses listed for Principles of Computer
CS38: Advanced Programming assures a level of mastery
of programming and the development of a mental structure
for the inner workings of a computer.
CS61: Algorithms and Data Structures develops a
more formal understanding of specific algorithms and
data structures which are fundamental to the discipline.
I consider CS38 (or equivalent) to be an absolute requirement
for taking this course. Students who have not taken CS61
(or equivalent) will find the material accessible, but
may find the programming assignments more challenging and
the sections on virtual memory and caching a little ungrounded;
I encourage you to consider taking the course with this
MATH25: Discrete Mathematics develops an understanding
of symbolic logic and number representation, and is a co-requisite for CS61.
I consider MATH25 (or equivalent) to be an absolute pre-requisite
for taking this course.
This course will use a
exercise problems to help you build a
foundation for understanding the principles of computer organization.
There will be practice
quizzes to help you gauge your understanding and
prepare for the
There will also be
programming projects to help you apply
what you have learned, and individual
to help bring the material up to date and to help you develop the skills
for finding the leading edge in the field.
Your full participation and engagement
in the course is a critical part of learning the habits and methods
appropriate to the discipline.
I will ask you to choose from among two different
for the course; choose the one that will help you get the most out of it.
These topics and the course schedule,
how to reach me, and a possible
This syllabus and other handouts will be available,
where practical, on the course homepage.
There is a listserv available to
facilitate e-mail correspondence
between members of the class.
The required text for the course is
Andrew S. Tanenbaum,
Structured Computer Organization, Third Edition
It includes wonderful explanation
of the material and excellent exercise problems to probe and
develop your understanding. It is a "classic" in the field
and is used in many
similar courses at other institutions.
Although computer technology surges ahead at breakneck pace,
the text is surprisingly current. To see what has happened
in the field since 1990, you will be doing some additional,
I have created a homepage for the course:
I will place handouts, the web pages you develop for your
and other information related to the course there. If you know of
any links that should be added to the page, please let me know.
There is a list-serv available to facilitate e-mail correspondence
among members of the class. It is
Feel free to use this list-serv to carry on discussions related to
the material, the course, or other topics of interest to
class members. If everyone uses e-mail regularly, I will
also distribute class announcements by e-mail when possible.
Commands to join or modify your subscription to the list,
should be sent to email@example.com.
There are approximately 250 exercises (problems) in the text.
As in many texts of this type, they are an excellent way
to probe the depth of your understanding of the material and
apply your new knowledge to novel problems.
Read the text carefully and you should
be able to do most of the exercises; the others may require
you to think creatively to apply what you've learned.
For those who choose grading Plan A,
you will have a about 10 to 15 problems due at each class session.
show your work, and
due means due.
For the purpose of grading,
I will throw out any exercise problems which are not answered
correctly by at least one person in the class.
The exercises are worth 40% of your grade.
For those who choose grading Plan B,
the exercise problems
are an excellent way to prepare for the quizzes
and the final exam.
I heartily encourage you to do all the exercise problems, even if not
I have placed a copy of the publisher's problem solutions on reserve
Wildman Science Library.
Time permitting, I will also place on
the course homepage
my own solution sets for the exercises.
Feel free to use these to check your own work and understanding.
Please do not use them to circumvent your learning procesess.
Looking at the solution before you've given the problem your best effort
not only deprives you of the thrill of solving the problem, but
it also deprives you of proper preparation for the exam.
There will be a number of quizzes throughout the semester, one
at the end of each chapter in the text.
The quizzes are not required and do not figure in your grade for
These are intended as practice for the
and can be used to get feedback on how well you're mastering the
The quizzes are based on the exercise problems and are similar to those
you will encounter on the final exam.
The quizzes will be take-home; I will make them available to you,
and you are on your honor to do them independently, without the
text or other reference materials, and within one hour. I will
mark any that are turned in, and solutions will be available
as handouts and on the course homepage
after the due date.
I strongly encourage you to take advantage of the quizzes as a
means for gauging your progress and for letting me know where you
are in the course.
show your work.
Again, the quizzes are optional
and do not take part in your course grade.
There will be a final exam on Wednesday, December 17, at 2:00 PM.
You will have up to two hours to take the exam.
Except under extreme circumstances, it will be offered only at
the time scheduled by the Registrar of the College.
It will cover all concepts and methods discussed or presented in
If you do all the exercises, do the take-home quizzes, take the research
and programming projects seriously, and fully engage yourself in the
class, you should do well on the exam.
The exam is worth 20% of your grade under
grading Plan A, or
60% of your grade under
grading Plan B.
This course is not only about learning the material in the text,
reading some new material in the library, and writing a few programs.
If it were, there would be very little reason for us to meet
as a class. A good student could learn the material
in about one fifth the time by studying the text carefully,
working through all the problems and programming assignments
in the text, and following up on many of the citations given
throughout the text and in the bibliography. Indeed, this is
the point of the text.
We meet as a class for a number of reasons:
Your full participation in the course, then, is essential.
Engagement in the course includes, but is not limited to:
- To discuss the material, share insights that each of us may have
had while working through the text. Doing so enables us to learn
more (or better) than we might as independent scholars. In discussion,
we also have the opportunity to discover our misconceptions
by expressing ourselves and listening carefully to others.
- To present our research to one another. By presenting the
fruits of our individual labors we take a stand for what we
believe to be true and put our own work in the light
for review by our peers. This is perhaps the most important
aspect of method in computer science, or in any discipline
for that matter.
- To review the work of others. We learn not only by
exploring material through independent scholarship, but
also by seeing others' approaches and solutions to similar
- To develop our abilites to express our thoughts in real-time.
It is one thing to be able to figure things out, and another to
have the thoughts fully developed and ready for action. How
well do we know the material if we can't engage in signficant
discussion and inquiry?
Participation will be a factor of your grade, literally.
Your grade on the subject matter will be multiplied by
your grade in participation. 100% mastery of the material
accompanied by 50% engagement in the course results in a 50%
(i.e., non-passing) grade.
- Preparation. Read the text carefully, inquisitively.
- Punctuality. Show up to class on time.
- Attendance. Come to all the classes.
- Discussion. Come prepared to ask questions, and ask them.
Come prepared to answer questions, and answer them.
- Research. Get excited about your research. Follow as many leads
as you can, as deeply as you can. Make a contribution by
summarizing what you have learned so that others may follow.
- Programming. Write lucid programs that get directly to the
core of the problem, that are readable by others, that you would
be proud to publish to the world as an expression of your intellectual
integrity and character.
Computer science and computer technology are areas of
intense activity and productivity. What is known and
what can be done is rapidly changing and it is difficult
to keep up with even one area of the discipline. For this
reason it is particularly appropriate that we spend time
bringing a topic up-to-date, and learn the skills for doing so.
As part of the course, then, you will research a topic of
your own choosing from among many we discuss in the class.
You should prepare a web page with
links to all the useful information you were able to find
on your topic. The primary audience for your page is the
other students in the class, although the page should be
useful to others on the world wide web.
Note that the objective of this assignment is NOT to produce
a clever web page. The objective is to add value for your
classmates (and to the world wide web in general) by providing content.
For my favorite rant on bad web page design, see
Eric S. Raymond's
The HTML Hell Page.
Consider using Weblint and
to help imrove the HTML in your page.
Your page should include
a brief survey of the topic (1-3 pages) and an
annotated bibliography including a number of web and non-web
sources. The bibliography should not be just a list of links;
each citation should be annotated with information which clearly
describes the nature and utility of the information in the source.
For an excellent example of an annotated bibliography
(and a good starting place for your research),
refer to Chapter 9 in the text.
There are a number of opportunities to learn more about the specific
architectures mentioned in the text:
In other words, choose an architecture topic,
learn as much about it as you can,
and prepare a web page that serves as a blazed trail for the rest
of us to follow.
- Intel: Since the 80386 architecture, Intel has release the
80486, the Pentium, and the Pentium MMX architectures. What are
the key differences between each successive generation of the
architectures? AMD and CYRIX have produced clones for some of
these architectures. What did they produce and how are they
different from the prototypes?
- Motorola: What processors has Motorola introduced since the 68030?
What are the key differences?
- Sun: What processors has SUN introduced that implement the SPARC
architecture? How has SPARC evolved?
- MIPS: What processors has MIPS introduced since R3000? What are the key differences in the processors?
- IBM: What architecture is used in the RS/6000? How does it differ from other machine architectures we've discusse?
- DEC: What architecture is used in the Alpha? How does it differ from other machine architectures we've discussed?
- Cray: What can you find about the Cray architecture?
- Thinking Machines: What can find out about the Connection Machine?
- NCI: What can you find out about the N-Cube?
- Any other architecture you might enjoy researching.
Your page will be
displayed for a number weeks near the end of the course, and will
be reviewed by other members of the class; be prepared to defend your
work and offer constructive criticism to others.
Your grade for the research project will be based on the quality
of your page and the quality of the criticism you offer others.
As always, due means due.
This assignment will be 20% of your grade in the course.
The programming project is an opportunity for you to
apply some of what you've learned in the course. The
program need not be a large one, but should include
creation of at least one virtual machine. It may require
you to design your own language for that machine, or you may
implement an existing design. You may
wish to pick a programming topic related to your research
project. In fact, I encourage it.
Some possible programming projects:
Note that all of these include writing a translator or interpreter
that implements a virtual machine and writing at least one program
that demonstrates the functionality of the machine. If you write
a translator, it should produce code that can be executed on
some real or virtual machine. You may use any appropriate "language"
to implement your translator or interpreter; be prepared to defend
You should prepare a web page that provides access
to your source code, documentation, and any test data or programs so
that others may view and try your program.
- A hardware ALU not unlike that in Tanenbaum. Using discrete
logic circuit components, design and construct a working ALU.
- A logic circuit simulator implementation of part or all of Mic-1.
- A logic circuit simulator implementation of a simple RISC machine.
- A program which simulates Mic-1, that is, one which reads a
Mic-1 microprogram into a control store and executes the microprogram.
Of course, your implementation will also need to operate on a memory
containing a program which would also need to be loaded.
- A program which compiles Mic-1 MAL into a form suitable for loading
into a control store. In other words, a program which converts from
ASCII MAL into 32-bit Mic-1 instructions.
- Microcode in Mic-1 implementing a simple stack machine.
Note that you would design the instruction format for your stack machine
language, and that you would need to test the microprogram on a Mic-1
simulator running a simple program in your stack machine language.
- Microcode in Mic-1 implementing an extension to Mac-1 (Mac-1+(?)).
You should define the extensions and decide what functionality in
Mac-1 you'll sacrifice. For example, you might give up the SWAP
opcode to implement an expanding opcode architecture that allows you
to implement 16-bit operands, multi-operand instructions, additional
registers, HALT, RESET, PUSHA, POPA, or whatever. You should, of
course, implement your microcode on one of the available Mic-1
simulators, and write a conventional machine level program which
demonstrates your new features.
- A program which compiles Mac-1 assembly language, that is, a Mac-1
assembler. In other words, it converts ASCII text similar to that
in Fig. 4-11(b) (Tanenbaum, page 181) into 16-bit Mac-1 instructions.
- A program which simulates a Mac-1 machine. In other words, it
reads a Mac-1 program (as a sequence of 16-bit words) and executes
the instructions as defined in Fig. 4-14 (Tanenbaum, page 185).
- A program which simulates a simple stack machine architecture.
Note that you would need to design the stack machine language, and
write a simple program in your language.
- A program which simulates a simple RISC architecture. Note that
you would need to design the RISC machine language, and write a
simple program in your language.
- A number of operating system level routines for Mac-1. For example,
you could include routines which handle multiplication, division,
conversion to and from ASCII, reading or writing a line of text,
or even floating point operations.
- A simulator for one of the historically significant machines
mentioned in chapter 1 of the text. The ENIAC, EDSAC, EDVAC,
UNIVAC, PDP-1, PDP-8, PDP-11 might be reasonable choices. Pick
an architecture and learn enough about it to implement a reasonable
subset of its instructions. Of course, you will need to write a
test program (or two) to demonstrate your simulator.
- A programmable filter program (one which reads from stdin and writes
to stdout according to simple instructions contained in a file)
- A virtual machine translator/interpreter of your own design
You should pick a project before midterm, sooner if possible.
Your programming project will be due two weeks prior to
the end of the semester.
Your program will then be available (via your web-page)
for comment for one week, during which time you will be able to
make changes based on comments from the others in the course.
During the final week of the semester others in the class will
attempt to use your program and offer their comments and criticism.
The grading for the programming project will be divided between
functionality and style:
Note that the bulk of the grade is on the functionality
of program. In other words, Does the program work? If
the program doesn't have to work, I'll bet I can write one
smaller, faster, sooner than the one you wrote (or at least
no worse than). By definition, programs which don't work are useless.
- Functionality 60%
- Programming style 20%
- Review of others' work 20%
A significant portion of your grade is for programming style,
by which I mean the readability, maintainability, extensibility,
and accessibility of the code. Few programs are ever the
work of one person, and the most successful programs are
often those that are modified and enhanced by others, both
in industry and academia. Code which is unreadable or not
understandable is ignored; write code which others would enjoy
reading and enhancing.
Your grade for the programming project will be based on the quality
of your program and the quality of the criticism you offer others.
As always, due means due.
This assignment will be 20% of your grade in the course.
A word of warning: the functionality portion of the grade
will not be a linear scale. If you set out to accomplish
10 things and only accomplish 5 of them, you will probably
get 25% of the functionality points (assume an x**2 curve, 0<=x<=1).
Programs which only half-work are
often useless. So, choose the scope of your project carefully,
and be sure to deliver what you set out to accomplish. As
with many programming efforts, 80% of the project can be
accomplished in 20% of the time; the remaining 20% often
takes 80% of the time. Keep this in mind as you plan and
work on your project.
The primary goals of this course are to learn the material
and the methods.
I have attempted to create a mechanism for grading that
supports a wide variety of learning styles, but you will
not do well in this course (indeed you may not pass)
without learning the material and participating.
Participating without learning is not acceptable;
learning without participating is not acceptable.
Therefore, your subject-matter grade will be multiplied by
your participation grade.
For your subject-matter grade, there are two grading
"plans" available to you for the course.
I will ask you to pick one plan on or before the "Last Day to
Add a Course" (Wednesday, September 3). The difference between
the two plans is whether the daily exercises will count in your
grade, and the weight of the final exam in your grade.
Please pick the plan that supports the learning strategy
that will work best for you. It's your education; make the most of it.
- Exercises 40%
- Research 20%
- Programming 20%
- Final Exam 20%
Note that Plan A puts the largest emphasis on the exercises and
a lesser emphasis on the final exam, while Plan B involves no
grade weight for the exercises and shifts the lion's share of
the emphasis to the final exam.
- Research 20%
- Programming 20%
- Final Exam 60%
For most students, I strongly recommend Plan A.
If you seriously embrace and work through all the exercises,
work through issues on each problem set in class, and turn them
in for me to look at, you will be as prepared as you could
possibly be for the final.
If you are the sort of person who needs the structure and
discipline of a schedule, this is probably the right choice for you.
This is the easiest, most risk-free way to learn all the material
and get a good grade in the course.
If you need more flexibility in your schedule or do not
work well under a rigid schedule of assigned reading and exercises,
you may choose Plan B. Under this plan, I still recommend
you read the text cover-to-cover, do all the exercises, take
the quizzes, attend all the class sessions, and do the other
required assignments for the course. By choosing plan B,
you're simply required to do the programming and research projects
and walk on water in the final.
Remember, you must choose a plan at the beginning of the course.
You cannot change plans after the "Last Day to Add a Course"
(Wednesday, September 3). If I do not hear from you by that
time, I will assume that you have chosen Plan A.
For your participation grade, I will assess your level
of engagement in the course based on the criteria listed
above under participation.
Again, your final grade for the course will be computed
by multiplying your subject-matter grade by
your participation grade.
I will use a weighted average numerical grade when computing your
grade for the course. For the purpose of assigning letter grades,
the following conversion table will be used:
|A+||greater than 97%||less than or equal to 100%
|A ||greater than 93%||less than or equal to 97%
|A-||greater than 90%||less than or equal to 93%
|B+||greater than 87%||less than or equal to 90%
|B ||greater than 83%||less than or equal to 87%
|B-||greater than 80%||less than or equal to 83%
|C+||greater than 77%||less than or equal to 80%
|C ||greater than 73%||less than or equal to 77%
|C-||greater than 70%||less than or equal to 73%
|D+||greater than 67%||less than or equal to 70%
|D ||greater than 63%||less than or equal to 67%
|D-||greater than 60%||less than or equal to 63%
|NP||greater than 0%||less than or equal to 60%
For example, if you chose Plan A, and got 92% of the exercises correct,
93% on the labs, 87% on the research, and 84% on the final exam,
and had a participation grade of 100%,
you would get a
"B+" (92 * 40% + 93 * 20% + 87 * 20% + 84 * 20% = 89.6%).
Under Plan B, assuming with the same scores for the lab, research,
and final exam,
and had a participation grade of 100%, you would get a
"B" (93 * 20% + 87 * 20% + 84 * 60% = 86.4%).
Clearly, different sets of scores could produce a higher grade for
Plan B over Plan A;
Plan A only "beats" Plan B if you do better on the exercises than on the
final exam, and vice versa.
The point here is that you understand how I compute the grade you receive
on your transcript.
When doing the exercise problems and those on quizzes or the final exam,
show your work. I will not give credit for the correct answer
unless all the appropriate steps leading from known or given facts
to the correct answer are shown.
By definition, the answer is demonstrably correct only if you have shown it
to be correct and true.
Assignments will not be accepted for credit after
they are due. Assignments are due during class when called for,
or at the beginning of class if you are absent. Do not miss class
to finish an assignment.
The following schedule lists due dates for all assignments and reading.
I reserve the right to adjust the schedule to meet the needs of the
class, particularly with regard to the reading and problem assignments.
On days when problem sets are due, I will devote available time
to answering specific questions about the problems, or other questions from
the reading. I will address questions of interest to the largest
number of class members present before addressing questions of individual
I will lecture from time to time where I have additional commentary
which may be valuable.
Later in the semester the focus
will shift toward your research and programming projects; always
be prepared to discuss your own work. Although you will each have
different subject-matter for your project, the methods you use
will be similar; some discussion of research and programming
method will be appropriate during that part of the course.
In general, the class sessions are available for
you to get answers to questions you generate while reading,
working on the problems, or from your research and programming.
Always be prepared to discuss
the material from the text and your own work in depth.
I will facilitate or lead discussion which I think will be most
valuable for the class as a whole.
Be sure to bring your brain and your most inquisitive self.
Make the most out of coming to class; it's your time.
- Fri: First day of class, introductions, course overview, mechanics.
- Mon: Labor Day (no class)
- Wed: Last Day to Add a Course. Grading Plan choice due.
Read Preface, Ch 1. Probs 1-11 due.
Research Project tentative proposals due.
Read Appendix A. Probs 1-14 due.
- Tue: Quiz 1 (Ch 1) due.
Read Appendix B.
- Fri: Probs 1-10 due.
Research Project Web Page (very rough draft due).
Read Ch 2, Sec 1-2. Probs 1-9 due.
- Tue: Quiz 2 (Appendices A, B) due.
Read Ch 2, Sec 3-4. Probs 10-18 due.
Probs 19-25 due.
"Web Searching" with Sara Penhale.
Read Ch 3, Sec 1-2. Probs 1-9 due.
- Tue: Quiz Ch 2 due.
Probs 10-16 due.
Research Project Web Page (rough draft due)
Read Ch 3, Sec 3-4.
Read Ch 3, Sec 5-6.
Probs 17-26 due.
"Research Resources in Computer Science" with Sara Penhale.
Read Ch 3, Sec 7-8.
Probs 27-37 due.
Read Ch 4, Sec 1-2.
- Tue: Quiz Ch 3 due.
Read Ch 4, Sec 3-4.
Probs 1-5 due. 7-9 extra credit.
Probs 10-14 due. 15-16 extra credit.
- Mon: Preview Day.
Read Ch 4, Sec 5, 7 (Sec 6, opt). Probs 19-25 due. 26-27 extra credit.
- Wed: Programming Project proposals due.
- Fri: Midterm Break (no class)
Read Ch 5, Sec 1-2.
- Tue: Quiz Ch 4 due.
Read Ch 5, Sec 3-4.
Probs 1-9 due.
Read Ch 5, Sec 5-6.
Probs 10-20 due.
Probs 21-30 due.
- Tue: Quiz Ch 5 due.
Read Ch 6, Sec 1.
Probs 1-7 due.
Probs 8-15 due.
Read Ch 6, Sec 2-3.
Read Ch 6, Sec 4-5.
Probs 16-25 due. Operating Systems Lab
(Probs 26-31 optional).
Research Projects due.
Research Project Evaluations Begin
- Tue: Quiz Ch 6 due.
Read Ch 7, Sec 1.
Prob 1 due.
Read Ch 7, Sec 2.
Probs 5-8 due.
Research Project Evaluations End.
Final Research Project Due
Read Ch 7, Sec 3.
Probs 10, 13, 17-20.
Read Ch 7, Sec 4.
Probs 21-23 due.
Read Ch 7, Sec 5.
Programming Projects due
- Tue: Quiz Ch 7 due.
- Wed: Thanksgiving Break (no class)
- Fri: Thanksgiving Break (no class)
Assembly Language Lab.
Programming Project Evaluations Begin
Read Sec 8.1-8.1.4. Probs 2, 4, 6, 8, 10.
Read Sec 8.2-8.2.3. Probs 24-28.
Programming Project Evaluations End
Read Sec 8.2.4-8.3. Probs 29, 31, 33, 35, 40.
Final Programming Projects Due.
- Thu: Quiz Ch 8 due.
- Fri: Last day of class
I am sharing an office, Dennis 202B, with
in the Math/Computer Science area in Dennis Hall, 2nd Floor.
During the Fall 1997 semester, Charlie and I anticipate that
I will normally be there in the morning, he in the afternoon.
- Mon: Reading Day (no class)
- Tue: Final Exams
- Wed: Final Exams
- Thu: Final Exams
I will be on campus and generally available to the course from 8:-10:
MWF throughout the semester. I will likely be around more often,
mostly in the mornings, so feel free to stop by my office.
I can be available at other times by appointment.
I check e-mail several times each day, and e-mail is often the best
way to get a specific answer to a specific question. My e-mail
address is firstname.lastname@example.org.
Note that email@example.com and firstname.lastname@example.org
may also work, but these are forwarded hopefully to the
first address listed above.
My campus mailing address is Drawer 98.
I share this with the rest of the department, so this is not
necessarily a good place to turn in assignments.
If you want to turn in an assignment, please place it under the
door to my office with the following clearly shown: your name,
my name, and the date and time you left it.
My campus telephone extension is 1667.
I share this phone with
If you wish to leave voice mail for me, dial my company voice mail
at 966-6221, voicemail box 9001.
My phone number at Ray Ontko & Company
Please feel free to call me there.
When I'm not on campus, it's where you're most likely to find me,
often past 5:00 pm. If I'm not there, leave a message including
the phone number I should call and when I might reach you there.
My home phone number is 935-1598. Please don't call before 9:00 am
or after 9:00 pm unless it's an emergency.
If it's an emergency, please do not hesitate to call.
Consider adopting the following motto for your involvement in the course:
"Work hard. Learn lots. Stay Excited. Have fun."
Copyright © 1997,
If you're curious about why I copyright, see
Why Copyright Web