CISC 221/3.0 Computer Architecture

Original Author: Dave Dove
Last Revised: October 15, 2009

Calendar Description

The descriptive levels of computer architecture. Instruction-set architectures. Assembly Language. Data representation. Support for operating-system management and high-level languages. Input/output and interrupts. Designing for performance. Digital Logic.

Prerequisite: CISC 124/3.0; CISC-220/3.0 is recommended.


Writing quality program code requires more than just knowledge of algorithms, data structures, and programming languages. The statements and structures you choose can have a big impact on the performance and security of the machine code generated by the compiler.

The software designer should understand how a compiler maps high level languages to the low level instructions understood by the hardware and how the hardware executes those instructions. By thinking low level and writing high level, the software designer will help the compiler produce code that will use the processor, memory, and other resources efficiently. A working knowledge of these principles is also necessary in order to understand how some types of security vulnerabilities occur and how they can be avoided.

This course provides a firm grounding in the characteristics and operation of the hardware/software interface that may be required to produce the best quality software. It will answer many basic questions about computer operation which might otherwise be stumbling blocks to understanding more complex software topics.

The courses to which this course is a prerequisite are

  • CISC-340/3.0 (Digital Systems)
  • CISC-324/3.0 (Operating Systems)
  • CISC-426/3.0 (Real-Time Systems)
  • CISC-434/3.0 (Distributed Systems)
  • CISC-437/3.0 (Performance Analysis)
  • CISC-441/3.0 (Advanced Computer Architecture)
  • CISC-458/3.0 (Programming Language Processors)
  • ELEC-476/3.0 (Modelling and Systems Simulation)

This course is required in CSCI, SODE, COMP-M-BCH, BMCO, COGS, COMP-G-BCP, and CISC-G-BA.

Introduction to Computer Architecture
Course description, terminology, levels of abstraction, computers as multi-level machines.

Introduction to C programming
Program Structure, data types, operations, control structures, functions, arrays.

Instructions - Language of the Computer
Basic instruction set, operand specification, CISC (e.g., Intel IA-32) and RISC (e.g., MIPS) architectures; mapping high level languages to machine language instructions.

Assembly Language Programming
Assembly language program structure, linkers, debugging techniques, system call mechanism.

Data representation and computer arithmetic
Representing signed, unsigned, floating point numbers. Computer addition and subtraction.

Enhancing Performance
Caches, pipelining, instruction-level parallelism and superscalar processors. Multiprocessors and clusters.

Storage Management
Memory management and memory hierarchy. Uniprogramming, multiprogramming. Segmentation. Virtual memory and demand paging.

Devices, Interrupts and Connectivity
I/O, role of operating system, interrupts and traps. Interrupt service routines. Event driven programming. Buses and networks.

Digital Logic
Combinational networks, truth tables, boolean algebra. Sequential networks.
Possible Texts
  • D. Patterson, J. L. Hennessy: Computer Organization and Design, The Hardware/Software Interface, Morgan Kaufmann Publications, 2005.

  • C. Hamacher, Z. Vranesic, S. Zaky: Computer Organization, 5th edition, McGraw Hill, 2002.

  • W. Stallings: Computer Organization & Architecture, 6th edition, Prentice Hall, 2003.

  • J. S. Warford: Computer Systems, 3rd edition, Jones and Bartlett, 2005.