Computer Organization
COMS 361.01
Fall 2003


Instructor

Professor Tom Valente
Office: Bagby 123
Phone: ext. 6210
Email: tvalente
Office hours: MW 2:30PM - 4:00PM, TuTh 12:00-2:00PM


Textbook

Computer Systems, Second Edition (2001), by J. Stanley Warford.


Course Description

It should be clear to you that one can operate a computer at various different levels of abstraction, with the highest levels corresponding to the greatest amount of detail that is hidden from the user. Indeed, a vast majority of people using computers today have never so much as taken a course in Computer Science. This was not the case a generation ago.

Computer Organization is the study of how a typical computer operates at several different levels of abstraction as well as the languages, data types, operations, and features normally available to someone using the machine at that level. In this course, we will proceed through several levels, from highest (and thus most familiar to you) to lowest. As we progress, we will peel away one-by-one the layers of a typical computer, each time eliminating some of the mystery behind how a computer operates when it is running a program. We will progress through several levels, from highest to lowest, beginning with ...

The Application Level This is where most people sit when using the computer, running such things as browsers, database programs, word processing programs, and spreadsheet programs. At this level, the computer is viewed as a special purpose (virtual) machine with all of the necessary high-level commands readily available to help solve the problem at hand. At this level, the user is typically not interested in the source code of the applications program he or she is running. Not surprisingly, we won't spend much time at this level since it will teach us little about how a computer ultimately operates.

The High-Order Language Level You are already familiar with this level and its model of computation. The abstraction is that we imagine a "virtual machine" capable of executing our programs directly. Usually, of course, in order for it to run, a program written in a higher-level language such as Pascal or C++ must first be translated (compiled) to a level corresponding roughly to the level defined by ...

The Assembly Level In order to study this (and the next) model of computation, we will study the hypothetical Pep/7 computer, described in our textbook. That computer is also simulated in software and may be downloaded from the textbook web site.

With the Pep/7 simulator, you will be able to do what programmers often do when they operate at this level, namely write assembly language programs. Before running them, however, it is necessary to have your program translated (assembled) to binary, which is the language associated with ...

The Instruction Set Architecture (Machine) Level At this level, we finally begin to understand how a program in memory gets executed, at least algorithmically. This process, known as "interpreting", will be evident when we look closely at machine language programs being executed. It is at this point that you can begin to write a C++ program that interprets the the machine languages of a simple hypothetical machine. To understand how these algorithms are finally executed by the hardware, we'll study ...

The Logic Gate Level Finally, we get to see how programs are ultimately executed by the hardware of the computer. Indeed we will study circuits to decode instructions, to simulate memory cells, and to do arithmetic! Using software, we can construct these circuits and do simulations to understand how they work. We should even get to see how these very simple circuits are themselves driven by a program in ROM known as a "microprogram".


Topics Outline and Schedule

Chapter Topics Approx Number of Lectures
1 Computer Systems 1
2 C++3
3 Information Representation3
4 Computer Architecture4
5 Assembly Language 3
6 Compiling to the Assembler Level6
10 Combinational Networks3
11 Sequential Networks and the Big Picture2

Grading:

Events Date Percentage
Test 1 Thursday, October 9th 10%
Test 2 Tuesday, November 18th 15%
Final Exam TBA 25%
Homework 1 per week most weeks 50%

Homework

Homework 1
Homework 2
Homework 3
Homework 4
Homework 5
Homework 6
Homework 7
Homework 8

Links

A Very Simple Example of Level 3 Programming
A Very Simple Example of Level 5 Programming