CS 252: Systems Programming
Prerequisite:
CS 25000 (Computer Architecture)
CS 25100 (Data Structures and Algorithms)
Detailed Syllabus:
Program Generation, Representation, and Transformation
- Introduction, review of addresses, pointers, memory layout, text, data, and bss segments, global and local variables
- Compilers, linkers, loaders and binding times.
- File types, object (.o), executable files (a.out), static libraries (.a) and shared libraries(.so)
Scripting
- Shell and command-lines, local and environment variables, binding times, strings and escapes, path and program selection
- Shell scripts, conditional (if and case) and iterative (while and for) statements, string evaluation
- Unix tools: sed, echo, test, find, etc.
- Additional shell commands such as trap and eval 8. Awk programming, scripts that use create programs
UNIX Systems Programming and File Systems
- Unix File Systems, hierarchical directory structure, files, inodes
- Hard and symbolic links, file names, file access and access lists, permissions
- Unix System calls. Open, close, read, write, pipe, dup, dup2, etc.
- Process creation and execution using fork and exec
- File descriptors, inheritance, and relation to processes
Threads and Synchronization
- Preemptive scheduling, context switch
- Thread creation, synchronization, and scheduling
- Critical Sections
- Mutex Locks, semaphores or condition variables
- Deadlock and deadlock prevention
Networking Programming
- Socket Basics, IP Addresses and Port numbers
- Clients and Servers, Basic socket programming
- Concurrent Servers
Programming and Project Tools
- Unix make, uses in compiling and testing, other uses
- Version control systems
- Using a symbolic debugger
Last Updated: Jun 20, 2025 11:16 AM