CS 150: Computer Organization and Architecture
Catalog Description: Digital logic and digital systems, Machine level representation of data, Assembly level machine organization, Memory system organization and architecture, Interfacing and communication, Functional organization, Multiprocessing and alternative architectures.
Type: Required for all Computer Science majors
Total Credits: 3
Contact Hours: 3 lecture hours per week
Course Coordinator: Robert Rinker
Prereq: CS 120 or knowledge of the C programming language
Coreq: MATH 176
Textbook: Patt and Patel, Introduction to Computing Systems, 2nd Ed, McGraw-Hill, 2003.
Textbook URL: http://highered.mcgraw-hill.com/sites/0072467509/
Prerequisites by Topic: Knowledge of high level programming language including: basic data types (integers, floating point, Boolean, character, and pointers), control flow (if statements and loops), procedure calls and parameter passing.
Major Topics Covered
- Digital logic
- Number systems, bases, and floating point representation
- Arithmetic-Logic Unit design
- CPU structural design
- Control Unit Design
- Multi-cycle CPU design
- Assembly and Machine Language
- Stack operations
- I/O, bus systems and interfacing
- C-language interface
- Pipeline CPU theory and design
- Memory and cache design
- Performance metrics
Note: the primary Student Outcomes addressed in this course are (c), which is reinforced, and (i) and (j), which are introduced.
- Convert between binary, hex and decimal number representations.
- Perform addition and subtraction using signed (2’s complement) and unsigned binary and hexadecimal numbers.
- Design and evaluate combinatorial and sequential logic circuits with multiple inputs and outputs.
- Generate machine code from assembly language instructions (hand-assemble)
- Generate assembly language from machine code (hand-disassemble)
- Design, implement and evaluate assembly language programs that implement basic functionality such as: arithmetic functions, I/O, and interrupt handling.
- Demonstrate the ability to design simple assembly language programs that makes appropriate use of registers, static memory locations and a stack.
- Demonstrate the ability to design simple digital circuits and assembly language programs to solve given problems.
- Interpret the data flow diagram describing the architecture of a stored program computer.
- Write the RTL sequence to describe the execution of an instruction.
- Trace the execution of an instruction through the data path and determine the resources and control signals required to execute it
- Explain the rationale for implementing different instruction addressing modes.
- Understand the assembly-language implementation of high-level language constructs (branches, loops, function calls, interrupts).