CIS360: Introduction to Computer Systems
Description of Content
CIS360 is a general introduction to computer systems.
CIS360 used to be strictly a course in assembler language programming and, as such, was considered a follow-up to CIS 221-222-321.
It has become increasingly clear that assembler language programming skills are becoming less important for computer science students to master.
Understanding the architecture (how the computer executes assembler instructions) is the more important aspect of a course at this level.
As a result, CIS360 is as much a precursor to CIS675, Computer Architecture, as it is a successor to CIS321.
The fundamental concept to understand is that everything in the computer is represented by one's and zero's; one's and zero's are electronically represented by current flowing or not flowing at a specific place, or by something being magnetized one direction or the other, etc.
At the lowest level, this course will cover various binary formats of assembler instructions and various ways in which data can be represented using one's and zero's and how these can be organized into a program.
At high levels, assembler language programming techniques will be studied and a specific assembler language will be used to illustrate these techniques.
The basic assumption is that some EE-type is available to actually build the electronic components and this course (and CIS 675) help you understand how they can be logically organized into a computing device.
The list of topics follows Chapters 1-7, and parts of 11 and 12 of the text (Computer Systems: Architecture, Organization, and Programming by Arthur B. Mccabe).
List of Topics
Data Representation (Chapter 1)
- All data is represented by one's and zero's.
This includes integers, floating point numbers, characters, and character strings.
We will cover various schemes to represent this data, mainly concentrating on characters and integers.
-
Huffman codes and parity bits
Basic Components (Chapter 3: Sections 3.1, 3.2.1-3.2.3)
The basic components of a computer (CPU, memory, I/O devices) will be discussed:
- Memory: Types of memory, operational characteristics, and units of memory.
- CPU: A simple instruction set with the control signals necessary to fetch and execute an instruction.
Basic Assembler Instructions (Chapter 4: Secions 4.1-4.6)
- Basic address formats(0-address, 1-address, 2-address, 3-address) for instructions
- Simple calculations using these formats
- The description and importance of registers with respect to address format.
- Various types of instructions (arithmetic, flow of control, bit manipulation)
- Various types of operands (immediate, memory, register)
Addressing Modes and Organziation (Chapter 5: Sections 5.2.1-5.2.3)
-
Addressing modes: immediate, direct, indirect, absolute, indexed.
Subroutine Calling Mechanism (Chapter 6: Sections 6.1-6.6)
- Branch and link (jump to subroutine and getting back)
- Parameter Passing
- Stack allocation - local variables
- Conventions for saving and restoring registers
Representing Integers (Chapter 7: Sections 7.2)
- Representation of and arithmetic operations on unsigned integers
- Representation of and arithmetic operations on signed integers
Traps and Exceptions (Chapter 11: 11.3)
Traps and exceptions are ways a program interacts with the operating system.
A trap is essentially a subroutine call by a user program to an operating system (OS) routine (also called the trap handler.
Special handling is required in order to protect the OS resources from buggy (or malevalent) user programs.
Exceptions are error conditions detected in a user program that the OS must deal with.
As with traps, exceptions cause the flow of control to pass to the OS.
Exceptions are different from traps in that there is no explicit call to the OS error routine (also known as the exception handler).
Interrupts and DMA Transfers (Chapter 12)
Interrupts and DMA transfers are ways for the user program to interact with system I/O devices.
An I/O device will interrupt a user program so that the OS can take care of some I/O function.
A DMA transfer is an I/O process that is initiated by a user program.
This requires an independently executing DMA controller to process I/O concurrently with the user program.
The DMA controller will typcially interrupt the user program when it's done with the operation.
Last updated 12/11/03
360 syllabus