-
Notifications
You must be signed in to change notification settings - Fork 85
Home
This coursebook is being built by students and faculty from the University of Illinois. It is based on a crowd-source authoring wikibook experiment by Lawrence Angrave from CS @ Illinois, but is now its own .tex based project. It's source is located at the github link which you can find a pdf version of the book as well.
This book is an introduction to programming in C, and system programming (processes, threads, synchronization, networking and more!). We assume you've already had some programming experience, in an earlier computer science course. If you have any typos to report or content to request, feel free to file an issue at the link above. Happy Reading!
-- Bhuvy
1. Introduction <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
2. Background <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
3. The C Programming Language <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
- History of C
- Features
- Crash course introduction to C
- Preprocessor
- 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 <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
- File Descriptors
- Processes
- Process Contents
- Intro to Fork
- Waiting and Execing
- exec
- The fork-exec-wait Pattern
- Further Reading
- Questions/Exercises
5. Memory Allocators <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
- Introduction
- C Memory Allocation API
- Intro to Allocating
- Memory Allocator Tutorial
- Case study: Buddy Allocator, an example of a segregated list
- Further Reading
- Topics
- Questions/Exercises
6. Threads <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
- Processes vs threads
- Thread Internals
- Simple Usage
- Pthread Functions
- Race Conditions
- Topics
- Questions
7. Synchronization <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
- Mutex
- Condition Variables
- Thread Safe Data Structures
- Software Solutions to the Critical Section
- Working Solutions
- Implementing Counting Semaphore
- Ring Buffer
- Extra: Process Synchronization
- Extra: Higher Order Models of Synchronization
- External Resources
- Topics
- Questions
8. Deadlock <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
- Resource Allocation Graphs
- Coffman conditions
- Approaches to solving deadlock
- Dining Philosophers
- Viable Solutions
- Topics
- Questions
9. Virtual Memory and Interprocess Communication <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
10. Scheduling <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
- High Level Scheduler Overview
- Measurements
- Measures of Efficiency
- Scheduling Algorithms
- Scheduling Conceptually
- Topics
- Questions
11. Networking <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
- 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 <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
- 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 <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
- The Deep Dive of Signals
- Sending Signals
- Handling Signals
- Signal Disposition
- Disposition in Child Processes (No Threads)
- Signals in a multithreaded program
- Topics
- Questions
14. Security <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
15. Review <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
16. Honors topics <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
17. Appendix <img src="https://raw.githubusercontent.com/illinois-cs241/coursebook/master/_images/pdf_icon.png" width="40px" /
Please do not edit this wiki
This content is licensed under the coursebook licensing scheme. If you find any typos. Please file an issue or make a PR. Thank you!