C & Low-level Programming
Learn what your code actually does to memory — the layer every higher-level language is standing on, and the one attackers work in.
For programmers who can already read simple code in any language and have never had to think about memory, pointers, or what the compiler is doing. No prior C is required — the course teaches the language from the beginning. This course assumes a working Unix-like shell and, from the C course onwards, a C compiler and make. If you do not have those yet — or have never opened a terminal — the Setting Up course installs and verifies all of it first, and nothing here repeats that material.
Course preview
What you will be able to do
- Explain what happens between your source file and a running program
- Write C that handles memory deliberately instead of hoping
- Read and reason about pointers, including the cases that confuse people
- Recognise the memory bugs behind a large share of real vulnerabilities, and find them with tools
- Work with bits, integer representation, and floating point without guessing
- Build a multi-file project and explain what the linker did
Before you join
Course roadmap
English is available for every learning step.
This is the full learning route. Lessons build on earlier work; required checkpoints are the points where the route asks you to demonstrate it.
- 01
Why C is still worth learning
Lesson · 14 min
- 02
From source file to running program
Lesson · 16 min
Builds on: Why C is still worth learning
- 03
Your first C program
Lesson · 18 min
Builds on: From source file to running program
- 04
Undefined behaviour: when C stops promising
Lesson · 16 min
Builds on: Your first C program
- 05
Types, conversions, and the operators that surprise you
Lesson · 18 min
Builds on: Undefined behaviour: when C stops promising
- 06
Control flow and the traps in it
Lesson · 16 min
Builds on: Types, conversions, and the operators that surprise you
- 07
Functions, arguments, and lifetimes
Lesson · 18 min
Builds on: Control flow and the traps in it
- 08
Arrays and strings: where the bugs live
Required checkpoint · 20 min
Builds on: Functions, arguments, and lifetimes
- 09
Structs: grouping data, and what the compiler adds
Lesson · 18 min
Builds on: Arrays and strings: where the bugs live
- 10
Pointers: variables that hold addresses
Lesson · 20 min
Builds on: Structs: grouping data, and what the compiler adds
- 11
Pointer arithmetic and how arrays really work
Lesson · 18 min
Builds on: Pointers: variables that hold addresses
- 12
The stack and the heap
Lesson · 18 min
Builds on: Pointer arithmetic and how arrays really work
- 13
Allocating and releasing memory
Required checkpoint · 22 min
Builds on: The stack and the heap
- 14
Function pointers: passing behaviour around
Lesson · 18 min
Builds on: Allocating and releasing memory
- 15
Reading the symptoms: which memory bug is this?
Lesson · 18 min
Builds on: Function pointers: passing behaviour around
- 16
The tools that find memory bugs for you
Lesson · 18 min
Builds on: Reading the symptoms: which memory bug is this?
- 17
Writing C that resists mistakes
Required checkpoint · 20 min
Builds on: The tools that find memory bugs for you
- 18
How integers are stored, and where they break
Lesson · 18 min
Builds on: Writing C that resists mistakes
- 19
Working with individual bits
Lesson · 18 min
Builds on: How integers are stored, and where they break
- 20
Byte order and data that crosses a boundary
Lesson · 18 min
Builds on: How integers are stored, and where they break
- 21
Floating point: why 0.1 + 0.2 is not 0.3
Lesson · 18 min
Builds on: How integers are stored, and where they break
- 22
Multiple files, headers, and what the linker does
Lesson · 18 min
Builds on: Floating point: why 0.1 + 0.2 is not 0.3
- 23
Libraries, and building a project repeatably
Lesson · 18 min
Builds on: Multiple files, headers, and what the linker does
- 24
Reading real C, and where to go next
Required checkpoint · 20 min
Builds on: Libraries, and building a project repeatably
Learn with an account when access opens
Your CYBERSKILLS account will keep progress and checkpoint results together. Until then, this syllabus is here to help you choose the route that fits your goal.
Browse course previews