powered by
Center for Curriculum and Transfer Articulation
Computer Organization and Assembly Language
Course: CSC230

First Term: 2006 Fall
Lec + Lab   4 Credit(s)   5 Period(s)   4.7 Load  
Subject Type: Academic
Load Formula: S


Description: Assembly language programming including input/output (I/O) programming and exception/interrupt handling. Register-level computer organization, I/O interfaces, assemblers, and linkers. Processor organization and design, data path, control, pipelining, and input/output. Memory organization with cache and virtual memory



MCCCD Official Course Competencies
1. Identify the five major components of a computer system and describe how the components interact and the effect on the system as a whole. (I)
2. Describe data representation, the instruction set, addressing modes, and register organization. (II, IV, XI, XIII)
3. Describe execution of instructions and hardware components used in each step. (II)
4. Manipulate data to perform arithmetic operations and floating point. (III)
5. Measure, report, and summarize performance of a computer and describe the major factors that determine it. (IV)
6. Describe three approaches to processor implementations: single-cycle, multi-cycle, and superscalar. (V)
7. Describe how pipelining enhances processor performance. (VI)
8. Describe data path, control, and branch hazards. VI)
9. Describe virtual memory and cache organization structures. (VII)
10. Describe data storage, networks, and peripherals. (VIII)
11. Describe what busses are and their role in connecting the major system components. (VIII)
12. Describe how the processor identifies different sources of interrupts and exceptions, and invokes the corresponding handler to deal with the interrupt or exception. (IX)
13. Use all registers in assembly language programs. (X)
14. Determine appropriate registers to use with specific assembly language commands. (X)
15. Use addressing modes to move information and perform computations. (XI)
16. Use conditional and unconditional branches to create loop, if-then, and case branching structures. (XII)
17. Write call procedures with parameter passing. (XIII)
18. Use input/output interrupts to control a hardware device. (XIV)
MCCCD Official Course Competencies must be coordinated with the content outline so that each major point in the outline serves one or more competencies. MCCCD faculty retains authority in determining the pedagogical approach, methodology, content sequencing, and assessment metrics for student work. Please see individual course syllabi for additional information, including specific course requirements.
 
MCCCD Official Course Outline
I. Computer Components and Interaction
   A. Component types
      1. Data path
      2. Control
      3. Memory
      4. Input
      5. Output
   B. Interaction
   C. System effects
II. Instructions
   A. Operations and operands of computer hardware
   B. Instructions in the computer including logical operations and making decisions
   C. Addressing for 32-bit immediates and addresses
   D. Assembling, starting a program, assembler function, and optimization
   E. Implementing an object-oriented language and arrays versus pointers
III. Arithmetic for Computers
   A. Signed and unsigned numbers
   B. Addition, subtraction, multiplication, division
   C. Floating point
IV. Assessing and Understanding Performance
   A. Central Processing Unit (CPU) performance and its factors
   B. Evaluating performance
V. Processor: Data Path and Control
   A. Logic design conventions and building a data path
   B. Single, multicycle, and superscalar implementation and exceptions
   C. Microprogramming: simplifying control design
   D. Introduction to digital design using a hardware design language
   E. Organization of a microprocessor implementation
VI. Enhancing Performance with Pipelining
   A. Pipelined data path and pipelined control
   B. Control, data hazards, forwarding, and stalls
   C. Branch hazards and using a hardware description language to describe and model a pipeline
   D. Exceptions
VII. Exploiting Memory Hierarchy
   A. Measuring and improving cache performance
   B. Virtual memory and common framework for memory hierarchies
VIII. Storage, Networks, and Peripherals
   A. Disk storage, dependability, and networks
   B. Busses and other communications between processors, memory, and input/output (I/O) devices
   C. Interfacing I/O devices to the processor, memory, and operating system
   D. I/O performance measures and designing an I/O system
IX. Processor, Assemblers, Linkers, and a Simulator
   A. Assemblers, linkers, loading, and memory usage
   B. Procedure call convention, exceptions, and interrupts
   C. Use of a simulator to program an assembly language
X. Data and Register
   A. Memory sizes and layout
   B. Data elements and size
   C. Register set organization
XI. Addressing Modes
   A. Direct, absolute, and immediate modes
   B. Index modes and applications to records
   C. Register indirect and other available addressing modes
XII. Control-flow Instructions and Applications
   A. Unconditional branches, self-relative
   B. Flag-based conditional branches
      1. Application to if-then-else structures
      2. Application to loops
   C. Indexed jumps, indirect branches, case branching
XIII. Procedure Calls and Parameter Passing
   A. Call, return
   B. Register, stack
   C. Pointers, indirection
XIV. Introductory input/output
   A. Introductory device control
   B. Interrupt handling
 
MCCCD Governing Board Approval Date:  4/25/2006

All information published is subject to change without notice. Every effort has been made to ensure the accuracy of information presented, but based on the dynamic nature of the curricular process, course and program information is subject to change in order to reflect the most current information available.