Assembly Language and Computer Organization

Prerequisites

B or better in CMSC 202

CMSC 341 recommended (additional programming experience)

Description

This course continues the development of programming and problem-solving skills, focusing on low-level systems programming and the internal organization of the modern computer. Both the C language programming and assembly language programming are used in this course. Programming topics such compiling and linking are investigated. Unix programming tools such as emacs, gdb and makefiles are used extensively. System level topics such as CPU architecture, internal computer memory and system control flow are also covered.

Course Objectives

The student will be able to

  1. Design, impement and debug C programs.
  2. Use Unix programming tools such as gdb, make and valgrind.
  3. Interpret IA32 assembly language programs.
  4. Describe basic computer hardware components

Program Outcomes

CMSC 313 supports the CMSC program outcomes:

  • (O1) and (O3) through development of programming assignments in C in the Unix environment and analysis of assembly language programs.
  • (O5) through an examination of basic computer hardware architecture

Text

Computer Systems: A Programmer's Perspective 2nd Edition, by Randal E. Bryant and David R. O'Hallaron, Prentice Hall Publishing, 2011, ISBN: 0-13-610804-0 (required)

The C Programming Language 2nd Edition, by Brian Kerhnigan and Dennis Ritchie, Prentice Hall Publishing, 1988, ISBN: 0-13-110362-8 (recommended)

Topics

  • C Programming
    1. Compiling and linking in Unix
    2. Data types and basic language features
    3. Input and output
    4. Chars and strings
    5. Structs and Unions
    6. Functions and macros
    7. Multi-file applications and header files
    8. Variable scope and lifetime
    9. make and makefile
    10. Pointers
  • Binary Integer Representation
    1. Bit manipulations
    2. Signed and unsigned arithmetic
  • Assembly Language Programming
    1. Programming Environment
    2. Registers and memory
    3. Conditions and loops
    4. Switches
    5. Functions and the stack discipline
    6. Arrays
    7. Structs and Unions
  • Buffer Overflow
  • Computer Organization and the Memory
    1. Hardware components
    2. Memory Hierarchy and Caching

Optional Topics

  • Linking
  • Dynamic Memory Allocation
  • Processor Architecture
  • Introduction to Virtual Memory
  • Processes and Exceptional Control Flow

Grading

0 – 10% 0 – 15 in-class Quizzes / Exercises
45 – 50% 5 – 6 programming assignments
45 – 50% 2 – 3 Exams

Updated Feb 16, 2012