CS 250: Computer Architecture

Prerequisites:

CS 18200 (Foundations of Computer Science)

CS 24000 (Programming in C)

Detailed Syllabus:

  1. Digital Logic:

    • fundamentals of digital logic;
    • using a breadboard to create a digital circuit;
    • using logic gates to build and test combinatorial circuits;
    • wiring and testing a circuit that uses a clock to control a sequence of operations.
    • Data paths and a fetch-execute cycle.
  2. Processors:

    • operand addressing and instruction representation;
    • RISC and CISC machines;
    • CPUs;
    • programming a RISC computer in assembly language;
    • converting among one's complement, two's complement, signed, and sign-magnitude representations;
    • writing code to test whether the underlying hardware uses one’s or two’s complement arithmetic;
    • writing code to test whether the underlying hardware uses big-endian or little-endian byte order;
    • writing a function in assembly language that is called from C;
    • calling a C function from an assembly language program;
    • rearranging instructions to avoid pipeline stalls.
  3. Memory:

    • physical and virtual memories;
    • access paradigm;
    • physical and virtual addressing;
    • caches and caching;
    • comparing programs that access an array in row-major and column-major order;
    • stepping through the mapping from virtual address to physical address;
    • calculating the memory bank into which a given memory location maps when using N-way interleaving.
  4. Input/Output:

    • buses and bus address spaces;
    • programmed and interrupt-driven I/O;
    • multiplexing;
    • a programmer’s view of I/O;
    • buffering;
    • basic role of a device driver.
  5. Design Considerations:

    • parallelism and parallel architectures;
    • data pipelining;
    • pipeline stalls and flush times;
    • performance of a data pipeline;
    • power and energy;
    • hardware modularity and module reuse
Last Updated: Jun 20, 2025 10:58 AM