Computer Systems I

Course Information

Be sure to read all of this page!


The topics

For most computer users, a computer system is a mysterious box, plugged into a mysterious "network", on which they use mysterious "software". For many purposes, these users need to know little about the box, the network, and the software. They don't need to understand how these components interact, nor how they work internally; they need only for the device to carry out its purported tasks.

Of course, someone must understand how each of these components work, and how the group of them work together. In fact, there are so many components and layers at work in a computer system when someone is performing a typical task (e.g., web browsing, word processing) that no single person knows exactly how every part of the system works.

Our goal is to understand how these components are structured and how they interact. We will find that each component can (and should) be broken into layers. Moreover, each layer is the result of combining operations and capabilities from the layer below, resulting in qualitatively different operations and capabilities. Somehow, by building one layer on top of another, complete, complex systems can be built. We will see that hardware systems, software systems, and networks are all the result of this type of layering, and that certain conceptual ideas and problem repeat themselves across layers and across systems.

As the first in a two-course series, this course will cover only some of the layers from each type of system. Since previous experience with programming is not a prerequisite, we will focus primarily on hardware systems, and cover software and network systems topics for which we can develop the programming and algorithmic background necessary. This course alone should largely demystify how machines can perform calculations automatically.

Here is a brief list of many (but not all) of the topics that we will cover, in roughly the order that we will cover them:

The nature of the labs and projects for this course will vary with the material throughout the semester. A good deal of time will be spent in our digital lab (Seeley Mudd 006), where we will create computing circuits from basic electronic parts. That is, we'll be working with chips, wires, buttons, and blinking lights. There will also be some time spent in the computer lab (Seeley Mudd 014) on assembly language programming, as well as operating system and networking simulations.

This course should be fun, as there is a great deal of hands-on experience with the material. It is also a great demystifying course, as you will have a much better understanding of the operation and principles behind the computers that surround us. Note, however, that it is a course with a great many details, as well as a course that is exceedingly cumulative. It will be critical that you stay on top of lectures and labs at all times.


Lectures and labs

This class meets on Monday, Wednesday, and Friday of each week, from 11:00 am to 11:50 am. Both Monday and Wednesday will always be used for lecture in Seeley Mudd 207.

However, Friday will be used for different things at different times of the semester. On most Fridays, we will hold lab either in Seeley Mudd 006 (the digital lab) or Seeley Mudd 014 (the computer lab). Which lab room we use will depend on the material and assignment for that week. On a few Fridays, we will use the time for an additional lecture in Seeley Mudd 207, our usual lecture room. I will be sure to announce where the Friday time is to be spent each week.

You will be responsible for all of the lectures and labs, and so missing either is strongly discouraged. I will not teach material twice, so if you miss a lecture or a lab, you're on your own. If you must miss lecture or lab due to an illness or other emergency situation, contact me and we will arrange to handle the situation. If you have a conflict with a lecture or lab -- for an athletic event, performance, or other extra-curricular activity, or to depart early for or arrive late from a vacation, or any other non-emergency -- then the choice is yours to miss or to attend. If you choose to miss the class meeting, I do not want to know why nor even that you are missing class. You have elected, voluntarily, not to attend, and you must be prepared to obtain and learn the material that you missed on your own. I, of course, recommend that you choose to attend the class meeting when these conflicts arise. Do not underestimate the willingness of those who run extra-curricular programs to make accommodations for your academic demands.

Participation will be a very important element of this class, both in the lectures and the labs. As you will see in the grading section, below, your participation will affect your final grade in a substantial way. The points to be earned for partitipation are not perfunctory! You really must participate in order to earn these points. Participation implies preparation: If you do not understand the material, then you should come and talk to me immediately in order to get up to speed.


Texts and materials

At the moment, there is no standard text for this class. I will try to find a reasonable reference for the digital logic and basic CPU structure elements of the course. The mixture of material in this class implies that there are few texts that cover what we need, and I am reluctant to require the purchase of many expensive texts to cover all of the material. I will come up with a list of useful texts for references, but your best resource will be class meetings.

There will also be a collection of references for the chips that we use in labs. These will be posted in PDF format on the course's Documents page. I will also bring copies to labs, but you may find the online versions easier to keep track of, depending on your organizational proclivities.


Assignments, deadlines, and extensions

There will be a number of labs, projects, and problem sets. The deadline for each will be stated clearly on the assignment, down to the minute. The assignment will also state the manner in which you are expected to submit or show your work. Late submissions will receive failing grades. Futhermore, failure to complete any one of the labs may result in a failing grade for the course. The labs are too important to the course not to be completed.

An extension for any assignment must be requested, in writing (email counts as writing), at least 48 hours prior to the deadline. The determination as to whether or not a particular situation merits an extension will be made on a case-by-case basis. Scheduled events are not sufficient reason to warrant an extension. Rather, extensions are intended for unusual circumstances that prevent you from planning your time well in order to meet the deadline. Note that a sudden onset of illness or other emergency situation that occurs less than 48 hours before a deadline will be treated as a special case.


Exams

There will be two exams in this course:

  1. A one-hour, mid-term exam, given during week 7 of classes, during a lecture hour.
  2. A three-hour final exam, given during a scheduled final examination slot. This exam will cover all of the course material. The date and time of the final exam will be posted when the Registrar has scheduled it.

Grading

Your final grade will be determined by a formula roughly like the one below:


Academic dishonesty

You will be expected to do your own work on all labs, projects, problem sets, and exams in this course except where explicitly noted on group assignments. While I encourage you to interact with your classmates and discuss the material and assignments, there is a limit to the specificity of such discussions. I seek to make that limit clear here.

It is acceptable to discuss any assignment for the class with a classmate. You may even discuss your approach to a particular problem, or review relevant material for a problem with another person. However, you may not show another student your work, nor see another student's work. If in doubt, ask me. If you are unusure whether or not a particular kind of communication would rise to the level of academic dishonesty, then you should contact me immediately and find out.


The Big Picture

There will be so many details to remember and understand in this course that it is easy to miss the forest for the trees. Don't forget, now and then, to consider the bigger picture: that from one simple level of capabilities, you can create another, fundamentally different, more complex level. As you repeat this process, you develop something so complex from components that are so simple that it seems nearly impossible that the former could arise from the latter. Only because we have seen the progression, step by step, do we see how it is done.


Scott F. H. Kaplan
Last modified: Wed Aug 13 23:54:42 EDT 2008