Advanced C Programming Training

C is a general-purpose, procedural computer programming language supporting structured programming, lexical variable scope, and recursion, while a static type system prevents unintended operations. Below are the course objectives for Advanced C Programming Training:

  • Participants will become comfortable with the advanced aspects of the C programming language.
  • Participants will gain an in-depth knowledge on what is happening at compile, link and runtime on a target processor.
  • Participants are introduce good quality and style for real-time embedded programming.
  • Participants will gain hands-on experience of programming up interrupts and real-time operating systems (RTOS).

4 Days

A good hold of the fundamentals of C

Program objects

  • Declarations and definitions
  • Expressions
  • Scope and lifetime


The build process

  • compilation, linking, memory sections, libraries


System startup & runtime

  • What happens before main
  • What is happening at runtime




Function calling

  • Parameter passing mechanism
  • Pass-by-value vs Pass-by-reference
  • Returning data objects

Hardware manipulation

  • Register access
  • The volatile keyword



  • Initialisation
  • Relationship to pointers


State machine basics

  • Mealy & Moore machines


Function Pointers

  • Callbacks
  • State machine

Dynamic Memory

  • Malloc, calloc and realloc
  • Variable sized structures
  • Dangers


Structures, Unions and Bitfields

  • Definition & use
  • Memory layout


Numerical issues

  • MISRA essential types
  • Floating point issues
  • Fixed point types


  • Hardware interrupt models
  • Software interrupts


Multi-Tasking (Multi-threading)

  • Terminology
  • Advantages and disadvantages
  • Mutual exclusion
  • Intertask communication & synchronisation