CS63: Principles of Computer Organization

Earlham College
Department of Computer Science
Ray Ontko, Instructor

Fall Semester 1997-98
Dennis Hall, Room 231
9:00-9:50 MWF


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 machine architectures. 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 discipline.

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.

Pre-requisite Courses

There are two pre-requisite courses listed for Principles of Computer Organization. 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 caveat. Note that 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 text and its 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 final exam. There will also be programming projects to help you apply what you have learned, and individual research projects 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 grading options 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 motto are discussed below.

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 (Prentice-Hall, 1990). 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, individual research.


I have created a homepage for the course: http://www.cs.earlham.edu/courses/cs63/. I will place handouts, the web pages you develop for your research projects, 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 cs63-l@earlham.edu. 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 cs63-l-request@earlham.edu.


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. As always, 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 for credit.

I have placed a copy of the publisher's problem solutions on reserve in 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 the course. These are intended as practice for the final exam and can be used to get feedback on how well you're mastering the course material. 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. As always, show your work. Again, the quizzes are optional and do not take part in your course grade.

Final Exam

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 the course. 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: 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.

Research Project

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 Doctor HTML 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.

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.

Programming Project

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 your choice. 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.

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.

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.

Plan A

Plan B 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.

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.

Letter Grades

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%
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%
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%
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%
greater than 63%less than or equal to 67%
D-greater than 60%less than or equal to 63%
NPgreater 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.

Show Your Work

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.

Due Means Due

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.

Course Schedule

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 interest. 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.

Week 1 Aug 25-29
Week 2 Sep 1-5
Week 3 Sep 8-12
Week 4 Sep 15-19
Week 5 Sep 22-26
Week 6 Sep 29 - Oct 3
Week 7 Oct 6-10
Week 8 Oct 13-17
Week 9 Oct 20-24
Week 10 Oct 27-31
Week 11 Nov 3-7
Week 12 Nov 10-14
Week 13 Nov 17-21
Week 14 Nov 24-28
Week 15 Dec 1-5
Week 16 Dec 8-12
Week 17 Dec 15-19

How to Reach Me

I am sharing an office, Dennis 202B, with Charlie Peck 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.

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 rayo@ontko.com. Note that rayo@cs.earlham.edu and ontkora@earlham.edu 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 Charlie Peck. 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 is 935-4283. 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, Ray Ontko (rayo@ontko.com).
If you're curious about why I copyright, see Peter Suber's Why Copyright Web Documents?.