Course Catalog URL
Identifier
COMS 3210
Professor(s)
Last Updated: Spring 2025
Offered during Fall and Spring Semesters each year.
- Credits and contact hours: 3 credits, 3 contact hours
- Textbook, title, author, and year: Computer Organization and Design: The Hardware/Software Interface, David A. Patterson and John L. Hennessy.
- Other supplemental materials: The C Programming Languague, Brian W. Kernighan and Dennis M. Ritchie.
Specific course information
- Brief description of the content of the course: Introduction to computer architecture and organization. Emphasis on evaluation of performance, instruction set architecture, datapath and control, memory-hierarchy design, and pipelining. Assembly language programming.
- Prerequisites or co-requisites: Minimum of C- in COMS 2280 and MATH 1650; COMS 2300 or CPRE 2810; ENGL 2500
Specific goals for the course
- To understand aspects of computer architecture and program performance.
- To adopt an evolutionary approach to learning by presenting fundamental concepts first in the context of an easy-to-understand instruction set such as ARM, and building more complex ideas from simple ones.
This course has three major ABET outcomes:
- An ability to analyze a problem and identify and define the computing requirements appropriate to its solution.
- An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs.
- 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.
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.