CS 150

From CS Wiki
Jump to: navigation, search

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

URL: http://www2.cs.uidaho.edu/~rinker/cs150/index.html

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

  1. Digital logic
  2. Number systems, bases, and floating point representation
  3. Arithmetic-Logic Unit design
  4. CPU structural design
  5. Control Unit Design
  6. Multi-cycle CPU design
  7. Assembly and Machine Language
  8. Subroutines
  9. Stack operations
  10. I/O, bus systems and interfacing
  11. C-language interface
  12. Pipeline CPU theory and design
  13. Memory and cache design
  14. Performance metrics

Course Outcomes

  1. Convert between binary, hex and decimal number representations. (a)
  2. Perform addition and subtraction using signed (2’s complement) and unsigned binary and hexadecimal numbers. (a)
  3. Design and evaluate combinatorial and sequential logic circuits with multiple inputs and outputs. (c)
  4. Design a finite state machine from specifications: input, state transitions, output (c)
  5. Generate machine code from assembly language instructions (hand-assemble) (a)
  6. Generate assembly language from machine code (hand-disassemble) (a)
  7. Design, implement and evaluate assembly language programs that implement basic functionality such as: arithmetic functions, I/O, and interrupt handling. (c)
  8. Be able to invoke a simple assembly language program from a high-level language (C/C++) program. (c)
  9. Demonstrate the ability to design simple assembly language programs that makes appropriate use of a registers, static memory locations and a stack. (c)
  10. Demonstrate the ability to design simple digital circuits and assembly language programs to solve given problems. (c)
  11. Draw and/or analyze a finite state diagram. (c)
  12. Interpret the data flow diagram describing the architecture of a stored program computer. (b)
  13. Write the RTL sequence to describe the execution of an instruction. (c)
  14. Trace the execution of an instruction through the data path and determine the resources and control signals required to execute it (b)
  15. Understand the tradeoffs in implementing different kinds of instructions. (j)
  16. Explain the rationale for implementing different instruction addressing modes. (a)
  17. Understand the assembly-language implementation of high-level language constructs (branches, loops, function calls, interrupts). (a)