This study guide provides the objectives, requirements, and timetable for this course.
Computer Science has been described as the ``mechanization of abstraction''. At the physical level comput ers are electronic machines that understand just two signals, a high voltage an d a low voltage. We call the high voltage ``1'' and the low voltage ``0''. Th us computers are machines that perform simple computations such as arithmetic a nd logic operations on 1's and 0's. Every computer understands a number of in structions that are encoded as 1Ős and 0Ős and uses data that is encoded in 1's and 0's. Since it is very difficult to program using just 1's and 0's, higher level languages have been invented that are translated into 1's and 0's.
Languages such as Pascal, Scheme, and C++ enable the use of abstract instructi ons to create sophisticated programs. Yet every program written in one of thes e languages must be translated into 1's and 0's before it can be executed on a computer.
Every program that is written,then, regardless of the language and the level, must eventually be turned into machine language. This means th at the abstractions that appear in higher level languages are directly related to real physical components in a machine. Thus to develop robust and efficient programs, it is essential to understand how your code will eventually be used.
This is easily evident in software that is "close to the metal", i.e. any program that contains assembly language code or that is written in C or C++. Examples include the obvious, operating systems (DOS, UNIX, OS/2, System 7, etc .) and compilers. It also includes many application programs like spreadsheets , word processors, statistical packages, etc. In all of this software, some as sembly language is used, much C is used, and many machine dependencies exist.
The goal of this course is to study computer architecture. To make this study concrete, we will study RISC organizations and the MIPS architecture in p articular. The course begins with a study of logic circuits. We will then di scuss all aspects of a computer including memory, the CPU (control and arithmet ic), buses and I/O organizations.
The objective is to understand as many architectural aspects of computers as possible.
We will work mostly at t he digital logic level. Though many issues at this level are determined by low er level concepts, we do not have the time nor the need to understand the lower level concepts. Several excellent courese are offered by the physics departme nt that cover architecture at the device level. The intension of this course i s to work on abstraction levels from digital logic up to assembly language. T he emphaises will be on the hardware/software interface. Thus we will examine pipelining in some detail since this is an issue that every compiler for RISC o r RISC like machines (including the Pentium) must address.
Finally, we wil l consider parallel machines. Even though microprocessor speed increases drama tically every year, it is not increasing fast enough to satisfy the needs of mo dern complex software. Thus alternative architectures, especially parallel arc hitectures, are becoming necessary and practical. We will consider some of the approaches and constraints to this approach.
You will not be an expert a t either instruction set design or computer architecture at the end of the cour se, but you will have a good understanding of general issues and their effect o n programming languages.
Warning. This is a difficult course. The course is half theoretical and half practical. You must have a thorough grasp on the mathematics taught in the discrete course and be very proficient in the Java language. Note that much of the course will be concerned with issues such as testing and
Data Structures, Algorithms, and Applications in Java, Sartaj Sahni, McGraw-Hill. This book will be used as the primary reference for the course. It comes with a CDROM that contains the software from the book.
Grading will be based on the following events:
Problem Sets (weekly; 10-12 total; each 20 pts) 25%
Exams (2 exams, 1 final; each 100pts) 40%. Exams will take place in class on
Tuesday, 2 October and Thursday, 8 November. The final will be at 10:30AM on
Monday, 17 December.
Projects (1 total; 100pts) 15%. Projects will involve the
implementation, testing, and performance evaluation of an advanced
data structure together with a theoretical anaylsis.
Paper (1; 100pts) 15%. The paper will involve the investigation of
an advanced data structure/algorithm that was not covered in class.
You will have to present the data structure/algorithm in class as
well as implement, test, and evaluate the data structure/algorithm.
Class Participation 5%.
Return to Student Pages.
Last Modified: 23 August 2001
THIS PAGE MAINTAINED BY: John Barr, Ithaca College