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
- Design, impement and debug C programs.
- Use Unix programming tools such as gdb, make and valgrind.
- Interpret IA32 assembly language programs.
- 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
- Compiling and linking in Unix
- Data types and basic language features
- Input and output
- Chars and strings
- Structs and Unions
- Functions and macros
- Multi-file applications and header files
- Variable scope and lifetime
- make and makefile
- Pointers
- Binary Integer Representation
- Bit manipulations
- Signed and unsigned arithmetic
- Assembly Language Programming
- Programming Environment
- Registers and memory
- Conditions and loops
- Switches
- Functions and the stack discipline
- Arrays
- Structs and Unions
- Buffer Overflow
- Computer Organization and the Memory
- Hardware components
- 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 |