State University of New York at Oswego

Computer Science Department



  1. COURSE NUMBER AND CREDIT

    CSC 322 - 3 S.H.

  2. COURSE TITLE

    Systems Programming

  3. COURSE DESCRIPTION

    Computer systems programming, including assembly language.   Standard operating system calls, standard C library functions, performance measurement, code optimization, advanced control flow mechanisms, processes, threads, and low-level I/O.

  4. PREREQUISITES

    CSC 222, CSC 241

  5. COURSE JUSTIFICATION

    This course is intended to be a required course for the B.S. in Computer Science degree.   Graduates of the more technical B.S. program are expected to have more in-depth knowledge of what goes on "under the hood" when programs are executed.   It is also fair to expect such graduates to be familiar with the inner workings of real-world systems programs that are typically written in the C language (with an admixture of assembly code, when necessary).

  6. COURSE OBJECTIVES

    1. Learn programming methods for writing "systems" software
    2. Understand relation of programming techniques and efficiency
    3. Understand relation of high-level language programs to assembly code and machine organization
    4. Development of C programming skills

  7. COURSE OUTLINE

    1. PROGRAMMING "CLOSE TO THE MACHINE"
      1. C Programming
      2. Assembler Programming
      3. (Binary) Machine Code
      4. C-to-Machine Code Translation
    2. MACHINE-LEVEL DATA REPRESENTATION
      1. Characters
      2. Numbers
      3. Pointers and Address Arithmetic
    3. SAFE/EFFICIENT USE OF MEMORY
      1. Static vs. Dynamic Memory Allocation
      2. Global vs. Module-level vs. Local Variables
      3. Caching Considerations
      4. Virtual Memory Considerations
      5. Standard C library & UNIX system calls
    4. MODULARIZATION & COMPONENT LINKING
      1. Criteria for Modularization
      2. Interfaces and Implementations
      3. Type Managers and Objects
      4. Static vs. Dynamic Linking
      5. Shared code/Reentrancy
      6. Standard C library & UNIX system calls
    5. PERFORMANCE MEASUREMENT & CODE OPTIMIZATION
      1. Performance Profiling Tools
      2. 90/10 Rule
      3. Space vs. Time Optimization
      4. Hand vs. Compiler Optimization
    6. ADVANCED CONTROL FLOW MECHANISMS
      1. Signals and Interrupts
      2. Traps and Exceptions
      3. Non-local jumps in C
      4. Standard C library & UNIX system calls
    7. MULTIPROCESSING
      1. Processes
      2. Threads
      3. Standard C library & UNIX system calls
    8. LOW-LEVEL INPUT/OUTPUT
      1. File objects
      2. Buffered and Unbuffered I/O
      3. Standard C library & UNIX system calls
  8. COURSE REQUIREMENTS

    1. Attendance at lectures
    2. Readings from texts
    3. Programming assignments

  9. MEANS OF EVALUATION

    1. Quizzes
    2. Group/Individual programming assignments

  10. RESOURCES

    Intel Corporation. Intel Architecture Software Developer's Manual, Vols. 1-3. 1999

  11. BIBLIOGRAPHY

    R.E. Bryant & D.R. O'Hallaron.  Computer Systems: A Programmer's Perspective,  Prentice Hall, 2003.

    P.H. Winston.  On to C,  Addison-Wesley, 1994.

    S.P. Harbison & G.L. Steele.  C: A Reference Manual, 5th ed.,  Prentice Hall, 2002.

    P.L. Plauger.  The Standard C Library,  Prentice Hall, 1992.

    D.R. Hanson.  C Interfaces and Implementations,  Addison-Wesley, 1997.