CS 14 -- Course information


Be sure to read all of this page!

Overview

CS 14 is a course that will cover the basic topics of computing architecture. More specifically, we will see how basic propositional logic can be the basis for computing any function. From there, we will develop computing devices with memories and programmable instructions -- in essence, we will see the basics of how CPUs and full computer systems are constructed as well as the concepts that make general-purpose computation possible.

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:

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 on assembly language programming because we will need to understand how CPU's are programmed before building such a computational device.

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

Lectures are every Monday, Wednesday, and Friday at 10 am in Seeley Mudd 206.

Labs are on Thursdays, in Seeley Mudd 006 (a.k.a. the digital lab), and last for 50 minutes each. There are three lab sections:

You will have registered for one of these sections, and you must attend the lab section for which you have registered. While you may request to attend a different lab section from your usual one due to a transient conflict, the lab sections must be kept small and balanced in numbers.

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, musical or theatrical 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. 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 make no value judgement about your choice of priorities -- I simply expect you to know the course material and to complete the work well and on time.


Texts and materials

The text we will use is Patterson and Hennessy's, Computer Organization and Design: The Hardware/Software Interface, Third Edition. You can find this book at the Jeffery Amherst College Store. This is one of the few well-written CS texts and is worth having. It will also be the case that the book will provide more in-depth presentation of many of the topics that we cover in lectures. It is strongly recommended that you regularly review the lecture material by reading the relevant text.

There will also be a body 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 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 on 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 less than 48 hours before a deadline will be treated as a special case.


Exams

There will be three exams in this course:

  1. The first one-hour mid-term exam, given during week 5 of classes, during a lecture hour.
  2. The second one-hour mid-term exam, given during week 10 of classes, during a lecture hour. This exam does not include material covered on the first mid-term.
  3. A three-hour final exam, given during a scheduled final examination slot. This exam will cover all of the course material. The time and place of this exam will be posted when the Registrar makes it available.

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, problem sets, and exams in this course except where explicitly noted on the assignment. 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 your work, nor see another's work. On programming assignments, that means no viewing of code that is not yours and no showing of code that is yours. This distinction applies to actual, compilable code and to any type of pseudocode. On circuit designs, that means no sharing of circuits or circuit diagrams. Most importantly, 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. Kaplan
Last modified: Thu Jan 26 10:05:34 EST 2006