Chapter 1: C Standards 
- Review of C standards
 - K&R1 and STDC functions
 - C99 inline functions
 - Enumeration
 - const, volatile, Boolean, and floating point types
 - Limits
 
Chapter 2: The Preprocessor 
- Predefined macros
 - Conditional compilation
 - Advanced directives (including assert)
 - Trigraphs and C99 digraphs
 - C99 Variadic macros
 
Chapter 3: Declarations 
- Reading and writing declarations
 - Using typedefs effectively
 - Using casts
 
Chapter 4: Advanced Pointers
- Levels of indirection
 - Void pointers
 - Defining and using function pointers
 - C99 restricted pointers
 
Chapter 5: Advanced Arrays 
- Arrays and functions
 - Pointers and arrays
 - C99 Variable Length Arrays
 - memset
 
Chapter 6: Arrays of Arrays 
- Declarations
 - Initialisation
 - Arrays of arrays as function arguments
 
Chapter 7: Advanced Structures
- Declaring and defining structures
 - C99 changes
 - Bitfields
 - Packing and padding
 - Reading and writing structs to files
 
Chapter 8: Dynamic Memory Management 
- Allocating arrays
 - Allocating structures
 - Error detection and debugging techniques
 - Writing your own error detection library
 
Chapter 9: Standard Library - Process Control 
- Running another process
 - Process termination
 - Exception handling (setjmp/longjmp)
 - Environment variables
 
Chapter 10: Standard Library - Useful Functions 
- Calling conventions
 - Writing variadic functions
 - Date and time functions
 - Random numbers
 
Chapter 11: Sorting and Searching 
- qsort
 - Comparison functions
 - Indirect sorting (pointers)
 - bsearch
 
Chapter 12: Linked Lists 
- Linked list principles
 - Using recursive functions
 - Implementing a circular list
 - Implementing a self-adjusting list
 
Chapter 13: Binary Trees 
- Binary tree principles
 - Using trees for sorted data
 - Insertion
 - Deletion