Introduction to Computer Architecture and Machine-Level Programming

Course
Identifier: 
COM S 321

Offered during Fall and Spring Semesters each year.

  1. Credits and contact hours
  2. Instructor’s or course coordinator’s name
  3. Text book, title, author, and year
  4. Other supplemental materials

Specific course information

  1. Brief description of the content of the course
  2. Prerequisites or co-requisites
  3. Required, elective, or selected elective? 

Specific goals for the course

  1. Specific outcomes of instruction:
  • An ability to analyze a problem and identify and define the computing requirements appropriate to its solution. (1)
  • An ability to design, implement, and evaluate a computer-based system, process, component or program to meet desired needs. (2)
  • An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems that demonstrate comprehension of the tradeoffs involved in design choices. (6)

Brief list of topics to be covered

  • Chapter 1: Computer abstractions and technology: Measuring and evaluating performance, metrics of performance, cost/benefit tradeoffs, instruction count, CPI, clock cycle time, comparing and summarizing performance, the switch from uniprocessors to multiprocessors (Sec 1.8), Amdahl's law (Sec 1.10)
  • Chapter 2: Instructions: Language of the Computer: Instruction set architecture and assembly language of LEGv8, signed and unsigned numbers, representing instructions - the LEGv8 instruction set, instructions for decision making, arithmetic and logical operations, arithmetic overflow, Parallelism and instructions: synchronization (Sec 2.11), a sorting example
  • Chapter 3: Arithmetic for Computers: Addition and subtraction, multiplication, division, parallelism and computer arithmetic (Sec 3.6), Streaming SIMD extensions (Sec 3.7)
  • Chapter 4: The Processor: Building a datapath, pipelining, pipelined datapath and control, hazards in pipelining, exceptions (Sec 4.9), parallelism via instructions (Sec 4.10)
  • Chapter 5: Large and fast: exploiting memory hierarchy: A framework for memory hierarchies, the basics of caches, Placement, replacement, and memory interaction policies, Virtual machines and virtual memory, parallelism and memory hierarchy: cache coherence (Sec 5.10)
  • Chapter 6: Introduction to GPUs.