COMPUTER SCIENCE


Course Credits: 3 Units

Prerequisites: CMSC 131

CMSC 131: Introduction to Computer Organization and Machine Level Programming

Course Description

This course is an introduction to computer organization and interfaces between hardware and software. This course is intended to teach students how to program a computer or microprocessor based system in processor-specific assembly language. The course also teaches the importance and practice of integrating assembly with higher-level languages for computer programming.

Course Learning Outcomes

After completion of the course, the student should be able to:

  1. Describe major components of computer processor architecture and representation of data in memory.
  2. Convert numbers between decimal, binary, octal, and hexadecimal representations, and represent negative numbers using common formats.
  3. Implement arithmetic, comparison, branching, repetition, I/O, and bit operations and procedures in assembly language programs.
  4. Demonstrate knowledge of the use of registers, method of addressing, common instruction formats, stack processing, array and indirect processing.
  5. Develop correct, efficient and easily maintainable programs written in low-level language.
Course Outline

UNIT 1. Introduction

  1. Number Systems
  2. Computer Organization
  3. Assembly Language
  4. Creating a Program

UNIT 2. Basic Assembly Language

  1. Working with Integers
  2. Control Structures
  3. Translating Standard Control Structures

UNIT 3. Bit Operations

  1. Shift Operations
  2. Boolean Bitwise Operations
  3. Avoiding Conditional Branch
  4. Manipulating bits in C
  5. Big and Little Endian Representations

UNIT 4. Subprograms

  1. Indirect Addressing
  2. The Stack
  3. The CALL and RET Instructions
  4. Calling Conventions
  5. Multi-Module Programs
  6. Interfacing Assembly with C
  7. Reentrant and Recursive Subprograms

UNIT 5. Arrays

  1. Defining arrays
  2. String Instructions