0% found this document useful (0 votes)
10 views

System Programming Syllabus

The System Programming Syllabus outlines a comprehensive curriculum covering various topics in system programming, including the C programming language, processes, memory allocation, threading, synchronization, deadlock, virtual memory, networking, filesystems, signals, and security. It also includes sections on honors topics, an appendix with additional resources, and post mortems of notable security incidents. Each section provides a structured approach to learning, with topics, questions, and further reading to enhance understanding.

Uploaded by

cyarahtandon
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

System Programming Syllabus

The System Programming Syllabus outlines a comprehensive curriculum covering various topics in system programming, including the C programming language, processes, memory allocation, threading, synchronization, deadlock, virtual memory, networking, filesystems, signals, and security. It also includes sections on honors topics, an appendix with additional resources, and post mortems of notable security incidents. Each section provides a structured approach to learning, with topics, questions, and further reading to enhance understanding.

Uploaded by

cyarahtandon
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

System Programming Syllabus

1. Introduction
 Authors
2. Background
 Systems Architecture
 Debugging and Environments
 Valgrind
 GDB
 Homework 0
 University of Illinois Specific Guidelines
3. The C Programming Language
 History of C
 Crash course introduction to C
 Language Facilities
 The C and Linux
 Common C Functions
 C Memory Model
 Pointers
 Common Bugs
 Logic and Program flow mistakes
 Topics
 Questions/Exercises
 Rapid Fire: Pointer Arithmetic
4. Processes
 File Descriptors
 Processes
 Process Contents
 Intro to Fork
 Waiting and Executing
 exec
 The fork-exec-wait Pattern
 Further Reading
 Questions/Exercises
5. Memory Allocators
 Introduction
 C Memory Allocation API
 Intro to Allocating
 Memory Allocator Tutorial
 Case Study: Buddy Allocator, an example of a segregated list
 Case Study: SLUB Allocator, Slab allocation
 Further Reading
 Topics
 Questions/Exercises
6. Threads
 Processes vs threads
 Thread Internals
 Simple Usage
 Pthread Functions
 Race Conditions
 Topics
 Questions
7. Synchronization
 Mutex
 Condition Variables
 Thread-Safe Data Structures
 Software Solutions to the Critical Section
 Working Solutions
 Implementing Counting Semaphore
 Barriers
 Ring Buffer
 Extra: Process Synchronization
 External Resources
 Topics
 Questions
8. Deadlock
 Resource Allocation Graphs
 Coffman Conditions
 Approaches to Solving Livelock and Deadlock
 Dining Philosophers
 Viable Solutions
 Topics
 Questions
9. Virtual Memory and Interprocess Communication
 Translating Addresses
 mmap
 Pipes
 Named Pipes
 Files
 IPC Alternatives
 Topics
 Questions
10. Scheduling
 High Level Scheduler Overview
 Measurements
 Measures of Efficiency
 Scheduling Algorithms
 Topics
 Questions
11. Networking
 The OSI Model
 Layer 3: The Internet Protocol
 Layer 4: TCP and Client
 Layer 4: TCP Server
 Layer 4: UDP
 Layer 7: HTTP
 Non-Blocking IO
 Remote Procedure Calls
 Topics
 Questions
12. Filesystems
 What is a filesystem?
 Storing data on disk
 Permissions and bits
 Virtual filesystems and other filesystems
 Memory Mapped IO
 Reliable Single Disk Filesystems
 Simple Filesystem Model
 Topics
 Questions
13. Signals
 The Deep Dive of Signals
 Sending Signals
 Handling Signals
 Blocking Signals
 Signals in Child Processes and Threads
 Topics
 Questions
14. Security
 Security Terminology and Ethics
 Security in C Programs
 Cyber Security
 Topics
 Review
15. Review
 C
 Processes
 Memory
 Threading and Synchronization
 Deadlock
 IPC
 Filesystems
 Networking
 Security
 Signals
16. Honors topics
 The Linux Kernel
 Containerization
17. Appendix
 Shell
 Stack Smashing
 Compiling and Linking
 Banker’s Algorithm
 Clean/Dirty Forks (Chandy/Misra Solution)
 Actor Model
 Includes and conditionals
 threads.h
 Modern Filesystems
 Linux Scheduling
 The Curious Case of Spurious Wakeups
 Condition Wait Example
 Implementing CVs with Mutexes Alone
 Higher Order Models of Synchronization
 Actor Model and Goroutines
 Scheduling Conceptually
 Networking Extra
 Assorted Man Pages
 System Programming Jokes
18. Post Mortems
 Shell Shock
 Heartbleed
 Dirty Cow
 Meltdown
 Spectre
 Mars Pathfinder
 Mars Again
 Year 2038
 Northeast Blackout of 2003
 Apple IOS Unicode Handling
 Apple SSL Verification
 Sony Rootkit Installation
 Civilization and Ghandi
 The Woes of Shell Scripting
 Appnexus Double Free
 ATT Cascading Failures - 1990

You might also like