Academics
  /  
Courses
  /  
Descriptions
COMP_ENG 205: Fundamentals of Computer System Software


VIEW ALL COURSE TIMES AND SESSIONS

Prerequisites

Freshman programming requirement. COMP_ENG 203 helpful.

Description

CATALOG DESCRIPTION: Basics of assembly language programming and instruction set architectures. System stack and procedure calls. Techniques for writing assembly language programs. The course covers ARM32 instruction set and basic I/O. Interfaces between high-level languages and assembly codes will be discussed.

REQUIRED TEXTS: None

REFERENCE TEXTS: None

COURSE INSTRUCTORS: Prof. Russ Joseph (Winter)

COURSE GOALS: To teach (1) the ARM32 processor architecture and programming, (2) assembly language directives, operators, and program structure, (3) programming methodology, showing how to use assembly language to create both system-level software tools and application programs, and (4) interaction between assembly language programs and the rest of the system.

PREREQUISITES: First-year programming requirement or equivalent. COMP_ENG 203 helpful. 

PREREQUISITES BY TOPIC:

1. Fundamental concepts about computers and software

2. Programming concepts of high-level languages

3. Syntax of a language

4. Structured programming

DETAILED COURSE TOPICS

  • Introduction to assembly languages, data representation in computers
  • Programmer's view of computer organization, ARM32 processor architecture and memory management, basic elements of assembly language
  • Data definition and transfer instructions, addressing modes
  • Integer addition, subtraction, and multiplication
  • Unconditional and conditional branch instructions, condition codes
  • Conditional structures, loops
  • Stack operations, procedures
  • String operations, data layout, bit manipulation
  • Basic I/O operations

 GRADES:

  • Quizzes: 30%
  • Programming Assignments: 30%
  • Final exam: 30%
  • Class participation: 10%

COURSE OBJECTIVES: When a student completes this course, they should be able to:

1. Write efficient procedures and small programs in ARM32 assembly.

2. Understand the layout of code and data in memory.

3. Understand how the runtime stack is managed.

ABET CONTENT CATEGORY: 100% Engineering (Design component)