Department of Computer Science 
CS 220 - Computer Organization

Fall 2003 Syllabus
COURSE OBJECTIVES:

This course explores the question, "How does a computer work?"  We study both the principles and the details of how a computer carries out the tasks required by programs written in Java and other high-level programming languages. We focus on two key levels of computer organization, known as the machine language level and the logic design level. The machine language level has a small set of instructions for storing and manipulating information that are directly executable by the computer. The logic design level defines the specific gate and circuit configurations that are needed for computers to give meaning to those machine level instructions.

Topics include addressing, memory, the fetch/execute cycle, RISC and CISC architectures, pipelining, parallel architectures, logic circuits, and computer arithmetic. The relation between machine language programs and Java programs, with which you are already familiar, will motivate much of this study. Examples will be drawn from modern computer architectures, such as the Intel Pentium and the Java Virtual Machine (JVM).

TEXT (required):
Tanenbaum, A., Structured Computer Organization, 4th Edition, Prentice-Hall, 1999, and handouts (JVM architecture and LogicWorks tutorial)

INSTRUCTOR:
Allen Tucker, 220 Searles Hall
Email address: allen@bowdoin.edu
Office Hours: TWTh 4:00-5:00, or by arrangement

COURSE INFORMATION:
Class meetings: MWF 9:30am -- Searles 126
     (some of these meetings will be in Searles 128 for lab work)
Course Web address: www.bowdoin.edu/~allen/courses/cs220/syllabus.html
Course group e-mail address: csci220@bowdoin.edu

COURSE OUTLINE:
Week of      Topics                             Readings                Work Due

Sept 1       Overview of computer organization  Chapter 1   
                                           
Sept 8, 15   Computer systems: processors,      Ch 2, 9.1.2, Appx A     Lab 1
             memory, input/output               (skip 2.3.6-2.3.10, 2.4.4-2.4.5)
                  
Sept 22, 29  The digital logic level:           Ch 3, 9.1.3, handout    Lab 2, Lab 3
             circuits, latches, arithmetic      (skip 3.5.1-2, 3.6.2-3, 3.7)                             

Oct 6        Memory: latches, registers, chips                          Lab 4
             CPU: chips, bus operations                                 test #1   

Oct 13, 20    The microarchitecture level:       4.1-4.3, 9.1.4, handout Lab 5
             data paths, registers, bus,                               
             IJVM and the Mic-1
Oct 27              Lab 6
         
Nov 3       Instruction set architecture       5.1 (except 5.1.5-6)    test #2                                               9.1.5

Nov 10, 17         
Nov 24       Performance: prefetching,          4.4.1-4, 4.5.1-2   Lab 7     
(1/2 week)   pipelining and cache memory          


Dec 1, 8     ISA data types, instruction        5.2-5.7 (skip Pentium   Lab 8   
     formats, addressing, control       and UltraSparc sections), 
                                                Appx B                                

Dec 15       final exam period (check exam schedule)   test #3
COURSE WORK: Weekly laboratory exercises in machine language programming and logic design will help solidify concepts introduced in classes and the reading. We will use a JVM Assembler, a microprogrammed simulator, and the LogicWorks logic design software in the iMac lab in Searles 128.  Each of these software packages has an accompanying lab manual, which will be available for use during the semester (you don't need to purchase one).

Each lab will be posted on the course Web site shown above; you should print and read it over at the beginning of the week it is assigned. We will sometimes hold class meetings in Searles 128 to preview the lab assignments. You may choose to work individually or in teams of two on the laboratory programming and logic design experiments. The written answers to all questions on the labs should, however, be done individually.

In addition to the labs, there will be two open-book in-class tests during the semester and a third test during final exam period. All lab work, class participation, and test results will contribute to your course grade. You are expected to follow Bowdoin's Computer Use Policy as well as the Academic Honor Code while completing all work for this course.