CS 252: Systems Programming

Prerequisite:

CS 25000 (Computer Architecture)

CS 25100 (Data Structures and Algorithms) 

 

Detailed Syllabus:

Program Generation, Representation, and Transformation

  1. Introduction, review of addresses, pointers, memory layout, text, data, and bss segments, global and local variables
  2. Compilers, linkers, loaders and binding times.
  3. File types, object (.o), executable files (a.out), static libraries (.a) and shared libraries(.so)

 

Scripting

  1. Shell and command-lines, local and environment variables, binding times, strings and escapes, path and program selection
  2. Shell scripts, conditional (if and case) and iterative (while and for) statements, string evaluation
  3. Unix tools: sed, echo, test, find, etc.
  4. Additional shell commands such as trap and eval 8. Awk programming, scripts that use create programs

 

UNIX Systems Programming and File Systems

  1. Unix File Systems, hierarchical directory structure, files, inodes
  2. Hard and symbolic links, file names, file access and access lists, permissions
  3. Unix System calls. Open, close, read, write, pipe, dup, dup2, etc.
  4. Process creation and execution using fork and exec
  5. File descriptors, inheritance, and relation to processes

 

Threads and Synchronization

  1. Preemptive scheduling, context switch
  2. Thread creation, synchronization, and scheduling
  3. Critical Sections
  4. Mutex Locks, semaphores or condition variables
  5. Deadlock and deadlock prevention

 

Networking Programming

  1. Socket Basics, IP Addresses and Port numbers
  2. Clients and Servers, Basic socket programming
  3. Concurrent Servers

 

Programming and Project Tools

  1. Unix make, uses in compiling and testing, other uses
  2. Version control systems
  3. Using a symbolic debugger
Last Updated: Jun 20, 2025 11:16 AM