CO 430 Syllabus of Record
I. Catalog
Description
CO 430 Introduction to
System Programming 3C-0L-3SH
Prerequisites: CO 300 and CO 310
Concepts and
techniques of systems programming with an
emphasis on assembly, linking, loading, and macro processing
for user programs.
Overviews of higher-level language
translation and system control. Programming and research
projects.
II. Course
Objectives
Upon successful
completion of the course, the student will be
able to
A. Analyze an
assembly language to determine the complexity of
the assembler and the architecture of the machine that it
runs
on.
B. Describe
several ways the passes of an assembler can be
constructed to accommodate the architecture and loading.
C. Write a
two-pass assembler that creates object modules for
programs written in a simple assembly language.
D. Describe how a
linker/loader creates an executable program
from an object module and write such a linker/loader for a
simple two-pass assembler.
E. Describe how a
macro processor works and write a simple one.
F. Describe the
phases of compilation.
G. Describe the
functioning of the principal parts of an
operating system.
H. Use the
systems programming problem solving approach.
III. Detailed Course Outline
1. What is System Programming? (4 hrs)
A. Discussions of the assignments
B. Explanations of specific system features
C. Suggestions on use of resources
2. Operating system functions (3 hrs)
A. Device management
B. Memory management
C. CPU management
D. File system management
E. Accounting and security
F. User services
3. Machine Considerations for Assemblers (3 hrs)
A. Instruction Formats
B. Instruction Types
C. Addressing Modes
D. Addressable Units and Address Spaces
E. Registers
F. Data Types and Representations
4. Assembly Language Forms (1 hr)
A. Statement Formats
B. Directives
C. Literals
5. Assembly Process
A. Data Bases
(2 hrs)
(1) Fixed Tables (Opcodes
and Directives)
(2) Dynamic Tables (Symbols and Literals)
(3) Organization and Access
B. Pass 1 Actions (4 hrs)
(1) Building Tables
(2) Keeping the Location Counter
(3) Error Handling
(4) Handling Multiple CSECTs
C. Pass 2 Actions (3
hrs)
(1)
Error Handling
(2) Parsing Operands and Expressions
(3) Code Generation
D. One-Pass Assemblers (1 hr)
6. Linking and Loading
A. Object Files (4 hrs)
(1) Relocation Information
(2) Unresolved Forward References
(3) Inter-PSECT References
(4) External References
(5) Record Forms
B. Linking Tasks (1 hr)
(Allocation, Relocation, Resolution and Loading)
C. Approaches/Implementations (4 hrs)
(1) Absolute Loader
(2) Transfer Vectors
(3) Direct Linking Loaders
(4) Linkage Editor
(5) Dynamic Loading
(6) Dynamic Linking
D. Effects of Memory Management Approaches (1 hr)
7. Macro Processing (6
hrs)
A. Types of Macros
B. Definitions (including nesting)
C. Invocation (including nesting)
D. Expansion, Substitution, and Labels
E. Macro Processor Organizations
F. Interaction with the Assembler
G. Functions and Loops
8. Compilation process (3
hrs)
A. Lexical analysis
B. Syntax analysis (parsing)
C. Semantic analysis
D. Storage allocation
E. Code generation and optimization
IV. Evaluation
Methods
45% Examinations. Two mid-term exams and the final exam each
count equally toward the 45%. Examinations consist of
short-answer, analysis, and what-if questions.
35% Challenges. Students are given a collection of tasks
related to systems programming. Some involve
programming, some do not, most require some type of
research into manuals and the computer system being used.
Each task
(challenge) is worth a specific number of
points. A number of
points smaller than the actual total
is set as a perfect score to encourage sutdent
selection
in doing the tasks.
15% Programming
Project. A medium sized programming
project
(500-1000)
lines is given related to the lecture
material. Possible
projects include writing a machine
emulator, a linker, a debugger, a disassembler.
5% Research Project. An analysis of the workings of a
specific machine.