C/C++
Systems-level programming, memory and performance.
- Self-paced
- 8–10 weeks
- 25+ hrs
- Credential included
Curriculum
6 subjects · 15 chapters · 60 topics
- 01
C Fundamentals
1.1 Getting started
- Compilation, linking and the toolchain
- main, headers and the preprocessor
- Variables, types and constants
- Input and output with printf/scanf
1.2 Control flow
- if, switch and the ternary operator
- for, while and do-while
- break, continue and goto
- Operators and precedence
1.3 Functions and scope
- Declaration versus definition
- Parameters by value
- Recursion
- Storage classes and linkage
- 02
Memory in C
2.1 Pointers
- Addresses and dereferencing
- Pointer arithmetic
- Pointers to pointers
- Common pointer mistakes
2.2 Arrays and strings
- Arrays and their decay to pointers
- Multidimensional arrays
- C strings and string.h
- Buffer overflows and how to avoid them
2.3 Dynamic memory
- malloc, calloc, realloc, free
- Memory leaks and dangling pointers
- Stack versus heap
- Debugging with valgrind
- 03
Structuring a C Program
3.1 User-defined types
- struct and typedef
- union and enum
- Bit fields
- Padding and alignment
3.2 Files and modules
- File I/O
- Splitting a program across files
- Header guards
- Makefiles
- 04
Moving to C++
4.1 C++ basics
- References versus pointers
- Function overloading and default arguments
- namespaces
- new and delete
4.2 Classes and objects
- Members, access specifiers and this
- Constructors and destructors
- Copy constructor and assignment
- const correctness
4.3 Object-oriented design
- Inheritance and composition
- Virtual functions and polymorphism
- Abstract classes and interfaces
- The rule of three, five and zero
- 05
Modern C++
5.1 Templates and the STL
- Function and class templates
- Vectors, maps, sets and strings
- Iterators and algorithms
- Lambdas
5.2 Modern features
- auto, range-for and nullptr
- Smart pointers: unique_ptr, shared_ptr
- Move semantics
- Exceptions and RAII
- 06
Practice
6.1 Problem solving
- Complexity of your own code
- Common algorithm patterns
- Reading and fixing someone else's code
- Debugging with gdb
6.2 Project
- Designing a small system in C++
- Writing it module by module
- Testing and profiling
- Presenting the result

