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.