CS-511: Accelerated Fundamentals of Computer Systems:

Computer Organization

 

Course Syllabus

© 2000 Charles Abzug

 

 

 

Summary Course Description:

Students learn how a digital computer works through thorough study of the principles of operation of a simple but workable machine. They cover the principal subsystems of a computer, including the central processing unit (CPU), memory, input/output ports, communications bus, and several types of input/output devices (including keyboard and video display terminal). Number systems and various schemes for the digital representation of numbers are also discussed, as well as the principles of digital integer arithmetic, to provide insight into several different ways that arithmetic calculations can be made in digital computers.

The major computer subsystems are surveyed, including the CPU, system bus and subsidiary buses, primary storage (RAM and ROM), and secondary storage (HDD and floppy drives),

Basic electronics is reviewed, in order to convey an understanding of the operation of logic circuits (AND gates, OR gates, NOT gates, buffer gates, XOR gates and XNOR gates) and digital integrated circuits. The types of integrated circuits that are studied include simple combinational logic, such as latches, flip-flops, and registers, combinational logic of intermediate complexity, including multiplexors, demultiplexors, encoders and decoders, and progressing upwards to more highly complex integrated circuits, such as an Arithmetic Logic Unit (ALU), a bus, "Random Access Memory" (RAM) and "Read-Only Memory" (ROM) modules.

Computer operations are introduced, along with the representation of computer operations in an Assembly Language. Implementation of program statements in a Higher Level Language, such as C or C++, is studied through the decomposition of each higher-level language statement into a sequence of machine or Assembly-Language instructions, and some of these are further decomposed into sequences of micro-operations. The operation of major subsystems of the computer is examined through decomposition of a subsystem into an organized set of simpler circuit elements.

Additional critical subjects covered include the principles of hierarchical computer organization, machine instruction sets, addressing modes, CISC vs. RISC, input/output processing, and interrupt handling, as well as the application of many of these concepts to modern personal computers, and the boot process. The student partitions the hard drive on his/her own computer and installs the LINUX operating system into a separate bootable partition on the machine, in addition to the Windows-95/98 or Windows-NT operating system already there, in order to gain deeper insight into the boot-up process and to prepare the groundwork for the study of Operating Systems in the next course.

 

 

Required Textbooks and Materials:

 

Andrews, Jean (1999). A+ Guide to Managing and Maintaining Your PC - Comprehensive. Third Edition. Cambridge, MA: Course Technology. ISBN 0-619-00038-4.

This book provides a substantial amount of practical information about the IBM PC and compatibles. It covers both hardware and operating software issues, such as the installation of floppy disk drives and hard disk drives and of assorted types of adapter cards, management of memory, installation and basic operating principles of several operating systems, and instructions on how to assemble your own PC from components. The book is not quite up-to-the-last-minute in terms of its coverage of PC technology (that would be almost impossible to accomplish), but it has the advantage of having an excellent series of laboratory exercises as well as highly useful summary and review sections, and it is about as up-to-date as a textbook can be. This book is an excellent investment for the Computer Science student.

 

Maxfield, Clive Richard; & Brown, Alvin (1997). Bebop Bytes Back: An Unconventional Guide to Computers. Madison, AL: Doone Publications. 97-65591; ISBN 0-9651934-0-3.

 

Peleg, Alex; Wilkie, Sam; & Weiser, Uri (1997). "Intel MMX for Multimedia PCs." Communications of the ACM, 40 (1): 25-38.

This article discusses the general subject of Intel's "multimedia extensions" (MMX) to the instruction set of its Pentium chip. It includes a superbly written section on Saturation Arithmetic. It is available on-line through the Carrier Library.

Kofler, Michael (1999). Linux. Second Edition. Reading, MA: Addison-Wesley.. ISBN 0-201-59628-8.

This is a very decent general text on Linux, is very moderately priced (around $40.00), and also includes two CD-ROMs with a robust version (6.0) of Red Hat Linux, which you will be required to install on your own PC. By selecting this text, I avoid requiring you to spend additional funds to purchase a Linux distribution.

 

Suggested Supplementary Materials:

Maxfield, Clive Richard (1995). Bebop to the Boolean Boogie. An Unconventional Guide to Electronics Fundamentals, Components, and Processes. Solana Beach, CA: HighText Publications. TK7868.D5M323 1995; 821.39'5-dc20; 94-41062; ISBN 1-878707-22-1.

This book provides a superbly readable account of the basic principles of electronics and digital logic, including a description of how Integrated Circuits, hybrid circuits, and printed-circuit-boards are made, in each case discussing several alternate technologies.

 

PowerQuest Corporation's PartitionMagic software. URL for product information:
http://www.powerquest.com/product/pm/PMdescription.html URL for sales information: http://www.powerquest.com/product/index.html

This software package allows the user to resize and move existing disk partitions, and also to create new partitions, on a computer that is already in use with an installed operating system as well as data already present on the system. It greatly simplifies the problem of converting a computer that has been set up to boot under a single operating system into one that can boot up under a choice of two or more, with the selection made at boot-up time. If you use this product, be sure to follow all the cautionary recommendations that come with it.

 

Symantec Corporation's "Partition It" software. URL for both product and sales information:
http://www.symantec.com/sabu/qdeck/partition-it-ex/main.html

This software package also allows the user to resize and move existing disk partitions, as well as to create new partitions, on a computer that is already in use with an installed operating system as well as data already present on the system. It therefore also simplifies the problem of converting a computer that has been set up to boot under a single operating system into one that can boot up under a choice of two or more, with the selection made at boot-up time. This product carries a smaller list price than the one described previously. I have never used it, and therefore do not know which of the two is better. If you use this product, be sure to follow all the cautionary recommendations that come with it.

Sobell, Mark H. (1997). A Practical Guide to LINUX. Reading, MA: Addison-Wesley Publishing Company. QA76.76.063S5948 1997; 005.4'469-dc21; 97-8248; ISBN 0-201-89549-8.

 

 

 

Learning Objectives:

By the end of this course, the student should:

  1. understand the operational characteristics of computer hardware, including basic machine subsystems and their principal components;
  2. understand the principles of positional number representation, and be able to convert a number represented in any possible radix to the equivalent number represented in any other radix;
  3. understand the difference between information and its representation on a machine, and be able to interpret a sequence of bits differently according to whether it represents an integer in any of several different representational schemes, a text character, a machine instruction, a memory address, etc.;
  4. understand how data are moved around and manipulated inside a computer, and also inside representative major subsystems, and be able to describe the operation of the machine in terms both of machine language instructions and micro-operations;
  5. understand the operation both of floppy disk drives and of hard drives, be able to explain how a disk is organized to hold data, and be able to install or replace a disk drive in a PC;
  6. understand how memory is organized in a modern digital computer, be able to explain the memory map of a PC, and be able to ascertain the memory configuration of a PC and replace/reconfigure the memory as needed;
  7. understand the principles of integer computer arithmetic, and be able to specify what would be the register contents and status flag conditions resulting from addition or subtraction of two numbers using the rules of unsigned numbers, signed-magnitude numbers, ones' complement and two's complement numbers, and saturation arithmetic;
  8. understand the basic principles of machine operations, addressing modes, and assembly language, and be able to write a simple assembly language program that could be used to implement a single instruction in a higher-level-language program, making use of one or more of the addressing modes of the assembler;
  9. understand the principles of basic electronic and logical circuits, and be able to design simple combinational and sequential circuits conforming to a specified functionality;
  10. understand the principles of Boolean Logic and the major theorems that govern circuit simplification, and be able to apply selected theorems to reduce the number of elements necessary to implement Boolean functions;
  11. be able to select for purchase a reasonable collection of computer components, and assemble them into a working Personal Computer (PC); and
  12. understand the sequence of steps that takes place when a computer is booted up, and be able to partition a hard disk drive and install an alternative operating system, so that at boot-up time one of the operating systems installed on the machine can be selected to run.

 

 

Relevance of this Course to the Curriculum:

Why have we seen fit to incorporate this course as a prerequisite for our Computer Science curriculum? The topics of Assembly Language, Computer Organization, and Computer Architecture, which are all spanned by CS-511, are integral to understanding how computers work, and therefore have traditionally been part of every quality Computer Science curriculum for as long as Computer Science has been recognized as a separate field of study. It is inconceivable that any respectable Computer Science Department can award a degree to a student who does not have at least a basic understanding of these areas. The material of this course conveys understanding of how application programs are actually executed, as well as providing a basis for understanding how operating systems work.

 

 

Instructor:

Prof. Charles Abzug

 

 

Course Outline:

  1. Principal Elements of a Computer
    1. Central Processing Unit (CPU) or Microprocessor
    2. Bus
    1. Power Bus
    2. Data Bus
    3. Address Bus
    4. Control Bus
    1. Memory
    1. Rewritable Memory ("Random Access Memory", or RAM)
    2. Not-Readily-Rewritable Memory ("Read-Only Memory", or ROM)
    1. simple ROM
    2. Programmable "Read-Only Memory" (PROM)
    3. Erasable Programmable "Read-Only Memory" (EPROM)
    4. Electrically Erasable Programmable "Read-Only Memory" (EEPROM), also known as "flash memory"
    1. Memory Size
    2. Memory Addressing
    3. The Memory Map
    4. Direct Memory Access (DMA)
    1. Input and Output, and Data Storage:
    1. HDD (Hard Disk Drive)
    2. Floppy Disk
    3. "ZIP", "JAZ", etc.
    4. CD-ROM
  1. Integer numbers and their representation (positional number systems)
    1. Decimal Numbers
    2. General Number Representation: the Radix
    3. Binary Numbers
    4. Octal Numbers
    5. Hexadecimal Numbers
    6. Interconversion among Number Representations
    1. Other radices to decimal
    2. Decimal to other radices
    3. Binary to Octal and Octal to Binary
    4. Binary to Hexadecimal and Hexadecimal to Binary
  1. Basic Electronics
  2. Transistor Circuits
    1. NMOS, PMOS, and CMOS
    2. Logic Gates:
    1. NOT
    2. Buffer
    3. AND and NAND
    4. OR and NOR
    5. XOR (odd function)
    6. XNOR (even function)
    1. Simple Logic Circuits: Small-Scale Integration (SSI)
    2. Boolean Algebra
    3. Complex Logic Circuits: Medium-Scale Integration (MSI)
  1. Computer Operations
    1. What does a bit sequence represent?
    1. Instruction
    2. Address in memory or elsewhere
    3. Data
    1. Number: Multiple schemes for representing binary numbers
    1. Unsigned Integer
    2. Signed-Magnitude
    3. Ones' Complement
    4. Two's Complement
    1. Text
    2. Other forms of data
    1. Controlling the computer
  1. Integer Arithmetic
    1. Understanding Decimal Addition and Subtraction
    2. Addition and Subtraction in Binary
    3. Integer Arithmetic in Digital Computers
    1. Limitation in the Number of Bits Represented
    2. Addition and Subtraction using each representation
    1. Unsigned Integer Arithmetic
    2. Signed-Magnitude Arithmetic
    3. Ones' Complement Arithmetic
    4. Two's Complement Arithmetic
    5. Saturation Arithmetic
  1. Writing and storing programs, retrieving programs from storage, and running programs
    1. Source Code
    2. Object Code
  1. Understanding the CPU
    1. Accumulator
    2. Basic Addressing Modes: Implied, Immediate, and Indirect
    3. Status Flags
    4. Basic Arithmetic-Logic Unit (ALU)
    5. Arithmetic Instructions
    6. Shifter/Rotator
    7. Internal Communications Paths
    8. Instruction Register
    9. Control Logic
    10. Program Counter and Auxiliary Program Counters
    11. Simple Control Instructions:
    1. Unconditional Jump
    2. Conditional Jumps
    1. Intermediate Addressing Modes:
    1. Indirect
    2. Indexed
    3. Autoincrement and Autodecrement Indexed Addressing
    1. Pre-indexed
    2. Post-indexed
    1. Stack and Stack Pointer
    2. Intermediate Control Instructions
    1. Jump to Subroutine
    2. Return from Subroutine
    1. Interrupt Vector
  1. Input and Output
    1. Numeric Keypad and Display
    2. Keyboard
  1. Simple Video Display
  2. Basics of Assembly Language
  3. Installation of the LINUX Operating System on a PC
    1. Partitioning or Repartitioning the Hard Disk
    1. Resizing (downsizing) an existing partition
    2. Creating new partitions in unpartitioned free space
    1. swap partition
    2. root partition
    3. other partitions
    1. Running the installation program
    2. Setting a root password
    3. Creating a boot diskette
    4. Installing the LInux LOader (LILO)
  1. Basic LINUX operations
    1. Booting up and shutting down the computer
    1. BIOS
    2. Device Drivers
    1. System Management

 

 

 

Course Practices:

Relationship of Course Sessions to Readings: Course sessions will cover some of the material in the readings, but will also include material not covered by the readings. Therefore, students must do all of the readings and must also attend classes. I do take attendance at every class, but information on attendance does not get factored into the grading process. If you miss out on a class, it is your responsibility to find out what was covered, and to obtain the material from one of your fellow students.

Assignment, Homework, and Term Project Policy: All work submitted must be machine-generated, and must be submitted both in hard- and in soft-form. It must have your name, course number, semester (Fall 2000) and date of submission in the upper left corner of the first page, and must be stapled together.

Late Submissions Policy: All work is due at the designated date and time. Penalties for late submission are:

Date Submitted

Penalty from Maximum Credit

One day late

10%

Two days late

20%

Up to one week late

40%

Up to two weeks late

60%

Over two weeks late

100%

 

Crisis Policy: If you should become seriously ill or if you encounter some family- or work-related crisis, please get in touch with me as soon as possible. I will endeavor to work out with you some reasonable arrangement.

 

Grading Policy:

A grade of A, either on an individual assignment or for the entire semester, indicates excellent understanding of the concepts covered. A grade of B indicates adequate comprehension of the material. A grade of C indicates a lower level of achievement than expected, but nevertheless sufficient to warrant receipt of credit for the class, while a grade of F indicates work far below satisfactory, demonstrating insufficient ability in the skills or level of knowledge required.

Course assignments include a substantial amount of readings, several group laboratory projects as well as individual laboratory projects, several programming assignments, and a term project, and a written final examination. The will be an individual effort, and will consist of both a written paper and an oral presentation.

Makeup of the overall grade for the semester will be as follows:

Deliverables (individual point assignments vary)

40 pts

Term Project (15 points written paper, 15 pts oral presentation)

30 pts

Written Final Exam:

30 pts

TOTAL:

100 pts

 

Opportunities to be announced, and participation in class discussion can earn extra points :


<10 pts

 

 

Rules for the Examination:

    1. No calculators, no books, no notes.
    2. The JMU Honor Code must be scrupulously observed.
    3. Your handwriting must be legible to the instructor;
    4. Drawings must be neat, technically correct, and properly labeled;
    5. You must provide exactly ONE answer to each test question. In the event that more than one answer is provided, the answer that is wrong is the one that will be graded.
    6. The examination must be taken at the scheduled time.

 

 

Class Meetings:

Classes meet during the Fall 2000 semester on Wednesday evenings from 1800 to 2230 hrs in ISAT/CS Room 243.