- Future Students
- Academic Progams
- Undergraduate Program
- Current Semester CS Courses
- New Course Offerings
- Upcoming Semesters
- Previous Semesters
- Canonical Syllabi
- Course Access & Request Policy
- Academic Integrity Policy
- Grad Student Registration
- Variable Title Courses
- Study Abroad
- Professional Practice
- Co-Op Professional Practice
- Non-Co-Op Professional Practice
- ISS Application Process for International Students (CPT, OPT, RCL, Program Extension, COEL)
- Pass/Not Pass Spring 2020
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
4. Shell and command-lines, local and environment variables, binding times, strings and escapes, path and program selection
5. Shell scripts, conditional (if and case) and iterative (while and for) statements, string evaluation
6. Unix tools: sed, echo, test, find, etc.
7. Additional shell commands such as trap and eval 8. Awk programming, scripts that use create programs
UNIX Systems Programming and File Systems
9. Unix File Systems, hierarchical directory structure, files, inodes
10. Hard and symbolic links, file names, file access and access lists, permissions
11. Unix System calls. Open, close, read, write, pipe, dup, dup2, etc.
12. Process creation and execution using fork and exec
13. File descriptors, inheritance, and relation to processes
Threads and Synchronization
14. Preemptive scheduling, context switch
15. Thread creation, synchronization, and scheduling
16. Critical Sections
17. Mutex Locks, semaphores or condition variables
18. Deadlock and deadlock prevention
Networking Programming
19. Socket Basics, IP Addresses and Port numbers
20. Clients and Servers, Basic socket programming
21. Concurrent Servers
Programming and Project Tools
22. Unix make, uses in compiling and testing, other uses
23. Version control systems
24. Using a symbolic debugger