C Language – Advanced Programming (C2)

Programming, C, C++

You already write basic C programs and want to move to advanced topics. This course presents practical techniques for writing and optimizing code close to the hardware. You will learn low-level control, performance tuning, memory management and concurrency.

The syllabus covers modern C standards and tooling, plus advanced topics for robust system code. Key areas include C standards and build tools, dynamic data structures, threading and synchronization and event-driven design with debugging and portability guidance.

Location, current course term

Contact us

Custom Customized Training (date, location, content, duration)

The course:

Hide detail
  • C programming language
    1. C99, C11, C18
    2. Compilation and linking
    3. Makefiles and build systems
  • Review
    1. Functions and macros
    2. Pointers and addresses
    3. Text and binary data
    4. Structured types
    5. Loops, conditionals and goto
  • Parallel programming
    1. Threads and synchronization
    2. Shared data structures
  • Dynamic data structures
    1. Arrays and buffers
    2. Linked lists, trees and graphs
    3. Dynamic memory allocation
  • Synchronizing shared data
    1. Concurrency hazards and race conditions
    2. Atomic variables
    3. Locking data structures
    4. Lock-free data structures
  • Scheduler and event loop
    1. Event-driven programming
    2. Callbacks
    3. Deferred processing
  • Polymorphism
    1. Callbacks with data
    2. Tagged polymorphism
    3. Structs with associated operations
    4. Dynamic dispatch of calls
  • Elements of object-oriented programming
    1. Nested structures
    2. Runtime type information
    3. Designing object hierarchies
  • Recursive function calls
    1. Alternative to iterative approaches
    2. Traversing recursive data structures
    3. Indirect recursion and recursion via callbacks
    4. Tail recursion
  • General recommendations
    1. Application and data structure design
    2. Undefined behavior
    3. Debugging applications
    4. Backward and forward compatibility
Assumed knowledge:
Basic programming knowledge, familiarity with MS Windows or experience in another language.
Recommended previous course:
C Language — Programming Basics (C1)
Recommended subsequent course:
C Language – Design Patterns (C3)
Schedule:
3 days (9:00 AM - 5:00 PM )
Language: