Free to read ยท Three levels
C: Programs, Memory, and Systems
Build a precise C17 foundation, manage memory deliberately, and reason about portable concurrent systems.
Start learningIn this course
This theory course develops C from translation units and everyday expressions to lifetime, ownership, concurrency, and system boundaries. Every level contains six substantial lessons with explained examples, diagnosis guides, and exercises whose solutions show the reasoning.
The teaching baseline is hosted ISO C17, including features introduced in C11. Examples identify optional facilities and POSIX interfaces explicitly. C23 notes describe differences without silently changing the baseline, and undefined behavior is never assigned an invented expected result.
What you will learn
- Explain compilation, types, expressions, and function contracts.
- Design bounded text processing and explicit ownership rules.
- Build modular, testable C programs and diagnose memory errors.
- Evaluate concurrency, portability, and performance claims against documented contracts.
Your learning path
Three levels
Basic: Read and Construct Programs
Understand the C program model, expressions, decisions, functions, and bounded sequences.
- The Toolchain and the C Program Model
- Types, Ranges, and Conversions
- Input, Output, and Validation
- Operators and Control Flow
- Functions and Contracts
- Arrays, Strings, and Bounds
Intermediate: Memory and Reliable Components
Turn small programs into components with explicit lifetimes, ownership, persistence, and verification.
- Pointers, Object Lifetime, and Aliases
- Dynamic Allocation and Ownership
- Structures and Data Models
- Files, Streams, and Error Handling
- Modules, Headers, and Reproducible Builds
- Testing, Diagnostics, and Debugging
Advanced: Language Boundaries and Systems
Reason about undefined behavior, generic interfaces, data structures, concurrency, portability, and measured performance.
- Undefined Behavior, Alignment, and Access Rules
- Callbacks and Generic Interfaces
- Data Structures and Invariants
- C11 Concurrency and Atomics
- Portability and System Interfaces
- Performance, Measurement, and Correctness
Who this is for
- New programmers who want a careful introduction to C.
- Developers who need to review memory safety and portable systems programming.
Before you start
- Basic computer literacy and the ability to edit a text file.
- For intermediate and advanced lessons, complete the preceding level or demonstrate equivalent knowledge.