Prerequisites: (ICS 21 or ICS 31 or CSE 41 or IN4MATX 42) and ICS 6B
Textbook: Andrew S. Tanenbaum and Todd Austin, “Structured Computer Organization”, 6th edition.
Course Overview
This course is a first introduction to computer system organization and assembly language programming. It examines a computer system from two different points of view: a programmer's view and a computer designer's view. The computer system is presented as a hierarchy of levels or layers. Each layer is built on top of the previous one and abstracts away the details of the lower layer while providing additional capabilities to the layers above.
The course introduces the basic elements used in designing a computer system, such as logic elements, functional units, memory subsystems, and I/O and the control for these subsystems. It presents a basic algorithm executed by the control unit which makes it possible for the computer to execute programs. The course describes how programs written in a high-level language, such as C or Java, get translated into machine (or assembly language) instructions which the hardware executes directly. It also explains why a general-purpose computer is designed the way it is and the influence of electronics on this design and its performance.
The different layers of a computer system are levels of abstraction. A level can be thought of as a grouping of similar elements at a given level of detail. The relationship between different levels is hierarchical and helps abstract away the details of the levels below. This grouping into a level and its abstraction to a higher level establishes a hierarchical relationship between elements of the computer system. This relationship aids in understanding the system and its programming by breaking it into more easily understandable sub-systems. It is also used in the design of computer systems to break it down into manageable tasks.
In our study of computer systems, the following levels are considered (top to bottom):
Application programs
Assembly Language programs
Operating System
Instruction Set Architecture
Computer Organization
Digital Logic
Hardware
At the top level are programs and data structures that implement a given application (e.g., an airline reservation system). At the lowest level are transistors and other hardware elements. This level is presented to help understanding of the computer organization and is abstracted away as quickly as possible. The bulk of the course concentrates on logic and computer organization levels and assembly language programming. The course also explains the relationship between and function of all the levels.
Instructional Objectives
The purpose of this course is to learn how a basic computer system is organized and the elements used to design it. The course also explains how the system executes programs and how a program one writes runs on a system. It will help you to better use the computer as a tool in solving science and engineering problems. After taking this course, you should be able to:
Describe the function, structure and technology of basic computer components
Explain computer operation at the instruction-set, register-transfer, and logic levels
Understand the process of program compilation
Name and explain the basic functions of an operating system
Program in an assembly language
Perform some simple analyses of a real architecture
The objective of the lectures is to introduce and help you understand new concepts. The lab has two objectives: illustrate some of the concepts introduced in lectures and introduce you to assembly language programming. Since ICS 51 deals with computer organization and assembly language relates more closely to system organization characteristics than do higher-level languages, they are both covered in this course.
Topics Covered (Tentative)
Course Requirements
The course is composed of five components: lectures, homework assignments, labs, midterm and final exam. Homework assignments serve as vital practice to prepare students for the midterms/final exam. The labs will focus on assembly language programming using a subset of MIPS instructions. Examinations will be based on lectures, lab assignments, homework assignments and required readings.
The lab will require additional lectures above and beyond those given during the class period. These lectures will be covered during discussion sections. New content will be covered in discussion. We do not take attendance, but you are strongly encouraged to attend.