Apr 26, 2024  
2019-2020 Course Catalog 
    
2019-2020 Course Catalog [ARCHIVED CATALOG]

Add to Portfolio (opens a new window)

CSCI 2016 - Introduction to the Organization of Computer Systems

Credits: 4
Hours/Week: Lecture 4 Lab None
Course Description: This course is an introduction to hardware/software components of a computer system. Topics covered will include data representation, computer arithmetic, basic logic design, machine-level programs, instruction set architectures, processor and memory organization, storage hierarchy, optimization techniques and future trends. Students will write programs in a low-level language, such as assembly language.
MnTC Goals
None

Prerequisite(s): CSCI 1082  with a grade of C or higher or instructor consent.
Corequisite(s): None
Recommendation: CSCI 1020 

Major Content
  1. Evolution of computer architecture and influence on development of systems; future trends
  2. Boolean algebra and simplification, simple combinational and sequential logic design, and implementation
  3. Binary representation of different types of data; numeric data representation including signed and unsigned integers and floating point formats
  4. Basic operation and organization of the Von Neumann machine including cpu, memory, buses, and fetch/execute cycle; Von Neumann bottleneck; memory types and organization; interleaving
  5. Machine language concepts and characteristics including instruction formats, addressing modes, RISC versus CISC, and relationship to logic circuits
  6. Assembly language programs including standard programming structures, subroutines, I/O and macros; conversion process from higher-level language to assembly language to machine language
  7. Storage system concepts, types and operations; characteristics of media formats and tradeoffs; access time, throughput, bandwidth
  8. Storage hierarchy pyramid and operation; principle of locality
  9. Memory cache concepts and operations; different types of cache including direct, associative, and set associative; write policies and cache coherency in SMP systems
  10. Virtual memory techniques and concepts including segmentation and paging
  11. I/O: fundamental concepts including handshaking, buffering, programmed I/O, and interrupts
  12. Buses: bus protocols, arbitration, and direct-memory access (DMA)
  13. Improving performance through superscalar, pipelining, multi-threading, vector processors, GPUs and other concurrent techniques
  14. Pipelining operation and hazards; optimization techniques such as branch prediction and speculative and out-of-order execution
  15. Flynn’s revised taxonomy including SISD, SIMD, MISD, and MIMD; categorize current systems in this taxonomy
  16. Quantum computing, neural networks, DNA data storage and other emerging technologies

Learning Outcomes
At the end of this course students will be able to:

  1. design and implement simple combinational and sequential logic circuits.
  2. represent numeric and text data in current standard formats and convert between numeric formats.
  3. describe instruction execution cycle and how the processor and memory work
  4. describe machine instruction formats and discuss features and differences of instruction set formats and architectures.
  5. write assembly language programs that incorporate standard programming structures, subroutines, i/o and macros.
  6. describe the memory hierarchy including different levels and optimization strategies such as cache and virtual memory.
  7. discuss different i/o and storage devices and mechanisms including bus protocols, interrupts, and interfaces
  8. discuss concurrency techniques to bypass performance bottleneck including pipelining, superscalar, multi-core, and multi-threading
  9. list and compare the different architecture categories and describe emerging technologies.

Competency 1 (1-6)
None
Competency 2 (7-10)
None


Courses and Registration



Add to Portfolio (opens a new window)