Introduction to Computer Architecture (CPSC 220)

Fall Semester, 2013



Vital Stats

In this course, you will learn about the "magic" underlying the programs you write in ordinary, high-level languages. Actual, physical computers are extremely complex electronic devices the support the storage of and execution of programs. However, these programs are not given in the kind of high-level languages that human developers are used to writing, but as groups of electrical pulses that pass through the computer's circuitry. The "magic" comes in the layers of abstraction that allow us to write human-readable programs that are executed as equivalent programs using the underlying commands of the computer itself—the machine language.
We will start with simple components, logic gates, and see how to combine them into circuits that can perform arithmetic, store data, and control the execution of the machine. Since machine-language programs are not human-readable in general, we will also learn to read and write programs in the computer's assembly language, a symbolic language that closely parallels the structure of machine language. Finally, we will study the key principles underlying the design of a computer's essential components: the CPU, memory, I/O, and so on.


Course Web Site

Check this site regularly for new assignments, changes to the schedule of topics, and course-related announcements.

Required Texts

Computer Organization and Design: The Hardware/Software Interface (4th Ed.), by D. Patterson and J. Hennessy (Morgan Kaufmann, 2012).

Format of the Course

Computer Labs and Assignments

This course has a weekly required lab component. For each lab, there will be one or more exercises for you to turn in, and those exercises will constitute the large majority of homework for the course. On some labs, you will have the option of working with a partner (in a few cases that might even be mandatory), but in most cases, you will be working on your own.

You will program in Java on about five labs. In about three labs, you will work with a program that simulates logic circuits. And in about six, you will program using the MIPS assembly language or machine language.

In addition to the labs, there will be some written homework assignments. Grades for labs and written homework will, together, count for 40% of your final grade in the course.


There will be two in-class exams, in Weeks 6 and 12

The final exam will be given per the Registrar's schedule.


Evaluation of your participation will be based on the quality of your preparedness for class, your active and engaged participation in discussions, and your diligent and effective work with your project team.

To receive full credit, I expect your attendance at every class, on time, having completed the assigned reading and all preparatory work. Such preparation is essential, both to your own success and that of the larger classroom community.

You may take up to 2 unexcused absences. Each absence after that will cost 5% of your final grade, up to the maximum 10% participation component (see "Grading", below).


Late Policy

Late homework will not be accepted, barring exceptional circumstances that are arranged with me, in advance.

Students with Disabilities:

Students with documented disabilities who may need accomodations, who have any emergency medical information an instructor should know of, or who require special arrangements in the event of an evacuation, should contact me as early as possible, preferably no later than the first week of classes.

If you are a student with a disability for which you may need accommodations, you should self-identify and register for services with the Coordinator of Disability Services at the Center for Teaching and Learning (CTL), and provide documentation of your disability. Disability related accommodations and services generally will not be provided until the registration and documentation process is complete. The guidelines for documenting disabilities can be found at the following website:

Please direct questions about this process or Disability Services at HWS to David Silver, Coordinator of Disability Services, at or x3351.

Academic Honesty:

I take this very seriously: a breach of academic honor will result in a failing grade for the course, and may be subject to further college sanctions. And you know what? It's incredibly disrespectful, both of our class community and of yourself. You're all grownups, and you know the difference. Don't cheat.

Collaboration: This is something of a gray area, and a common source of misunderstanding.

To clarify: Learning is usually more successful when it is done in community rather than in isolation. For all assignments, you are permitted—indeed, encouraged—to discuss course material with each other, to evaluate, trace, debug, refute, validate, or otherwise compare each others' work, and to adjust your own work if this collaboration results in new understanding.

However, you are not free to simply mail or print identical copies of the same work, and claim that it is the work of two separate individuals/groups. This is plagiarism, and is a breach of academic honor standards (it is also extremely easy to spot, especially in a class this small). While I encourage you to learn from each other, at the end of the day, the work you submit for a grade must be yours and yours alone.

If you find yourself unsure whether a form of collaboration or borrowing is acceptable, please ask me, in advance.


Relative weights for your final grade are as follows

How to Contact Me

In Person: The best way by far to get in touch with me is in person, during office hours. Any kind of class-related discussion is encouraged, whether it be a specific question about a homework problem, a request for encouragement and help getting started on an assignment, a point of confusion about the reading, or just plain curiousity about some of the further scientific directions that are possible. I am often available outside of office hours to answer questions, offer further explanation, or just to shoot the breeze. I am always available during posted hours. I encourage you to drop by.

Please note that my office (on the third floor of Lansing) is not wheelchair accessible. If this or another physical disability prevents your from reaching me there, please let me know, and I will happily arrange an alternative meeting place with you.

In Writing: Barring that, your best bet is by email, which I check late, early, and often. In fact, email is very often the most effective way for you to ask a question, as the effort involved in articulating what you want to ask can help clarify many things. It also makes it easier for me to give succinct replies to which you can refer later. I'm a pretty early riser, though, so don't assume I'll answer anything after 9 pm or so.

By Phone: Phone calls are, frankly, lousy. You're certainly invited to call (315-781-4652), but it's difficult to communicate technical questions and answers clearly without reading or writing down anything. Phone messages are generally a poor choice: you might wait as much as 24 hours before I get any voice mail message you leave.