| Credit Hours: | 4 |
| Course Coordinator: | Wu-chang Feng |
| Course Description: | Introduction to computer systems from a software perspective. Topics include: Basic machine organization. System programming using C and assembly language. Introduction to system programming tools (gcc, makefile, gdb). Data representation (bits & bytes, characters, integers, floating point numbers, Implementation of control flow, procedure class, and complex data types at machine level. Linking and loading. Exceptions and interrupts. Process control and signals. System calls, File I/O. Timing and improving program performance. Introducton to memory hierachy, dynamic memory allocation techniques. Prerequisite: CS 162. |
| Prerequisites: | CS 162. |
| Goals: | Introduce computer systems from a software perspective. Teach
C and assembly language programming and reading skills.
Teach basic systems programming skills and tools. Show how
to measure and improve program performance based on an
understanding of key aspects of machine architecture.
Upon the successful completion of this course students will be able to:
|
| Example Textbooks: | Computer Systems: A Programmer's Perspective, Bryant and O'Hallaron, Prentice
Hall, 2002.
The C Programming Language, 2nd ed., Kernighan and Ritchie, Prentice Hall, 1998. |
| References: | None. |
| Major Topics: | Exceptions and Interrupts Processes and Process Control File I/O and System Calls Performance Measurement Performance Improvement Memory Hierarchy Memory Allocation |
| Laboratory Exercises: | Programming system calls (4 weeks)
Measuring program performance (2 weeks) Improving program performance (2 weeks) Program memory allocator (2 weeks) |
| CAC Category Credits | Core | Advanced | |
| Data Structures | |||
| Algorithms | |||
| Software Design | 0.5 | ||
| Computer Architecture | 2.5 | ||
| Programming Languages |
| Oral and Written Communications: | None. |
| Social and Ethical Issues: | None. |
| Theoretical Content: | None. |
| Problem Analysis: | Lab and homework problems in programming and improving performance. |
| Solution Design: | Lab and homework problems in programming and improving performance. |