C Language — Practical Advanced Programming (C2)
Programming, C, C++
While application development has shifted toward higher abstractions, C remains the language of operating systems, network stacks and embedded devices, and is often used to implement higher-level languages and database engines in production.
The course covers C's role in microcontrollers and real-time hardware, shows how C integrates with other languages, and explains the C23 standard. It focuses on embedded and Unix environments and can be tailored to your team's needs.
THIS TRAINING COURSE WILL HELP YOU:
- Deepen and solidify your knowledge of C and its standard library
- Use language and library features to write robust, maintainable code
- Apply techniques to emulate higher-level features inside C
WHO SHOULD ATTEND?
- Experienced embedded and firmware developers
- OS, runtime and framework developers
- Developers interested in programming languages and runtimes
COURSE LOCATION AND AVAILABLE DATES
Private training
This course is not scheduled as a public course.
It is delivered exclusively as customised training. The content, duration, date, and delivery format are tailored to the customer's requirements and can also be provided in English.
Request customised training
Course content:
Hide details
-
Capabilities of the C programming language
-
Conservative evolution and the C23 standard
-
C's unique practical role
-
Differences versus modern alternatives
-
Error handling
-
Handling return values
-
The [[nodiscard]] attribute (C23)
-
Using goto to unwind failures
-
Memory pointers
-
Thinking about memory ownership
-
Borrowing access to objects
-
Object lifetime considerations
-
Aliasing rules
-
Pointers of different types to the same memory
-
Non-overlapping memory (restrict)
-
Room for compiler optimization
-
Memory allocation
-
Static data, stack and heap
-
Arenas and other allocation strategies
-
Ensuring correct deallocation
-
Bulk memory allocation
-
Index and pointer arithmetic
-
Using sizeof and array sizing
-
Memory copying and reallocation
-
Dynamic data structures
-
Growable arrays and buffers
-
Reallocating contiguous sequences
-
Linked lists, trees and graphs
-
Recursive calls
-
Direct and indirect recursion
-
Recursion termination conditions
-
Recursion optimization
-
Structures and abstraction
-
Moving away from assembler-style coding
-
Grouping related data and invariants
-
Abstract data types and interfaces
-
Generic programming techniques
-
The _Generic keyword
-
Code generation using macros
-
Type erasure, sizeof, alignof and alignas
-
Polymorphism
-
Substructure representing a base type
-
Implementing container_of with offsetof
-
Example: intrusive linked list
-
Enum-based polymorphism
-
Using enum to identify a type
-
Allocating space with union
-
Emulating algebraic types with enum
-
Bit and binary data handling
-
Bitfields in structures
-
Endianness and conversions
-
Structure serialization
-
Object-oriented patterns
-
Runtime information about concrete types
-
Function pointers and operation structs (VMT)
-
Default operations and inheritance emulation
-
Modularity
-
Header files and #pragma once
-
Static vs external global symbols
-
Dynamic and header-only libraries
-
Writing correct programs
-
Undefined behavior
-
Using sanitizers during debugging
-
Static analyzers
-
Bonus: External libraries
-
SDL3
-
libpng
-
libcurl
-
SQLite
-
Prerequisites:
-
Experience programming in the C language.
-
Recommended previous course:
-
C Language – Programming Basics (C1)
-
Recommended follow-up course:
-
C Language – Design Patterns and Object-Oriented Design (C3)
-
Schedule:
-
3 days (9:00-17:00)
Training and learning environment
What does the environment for in-person IT courses look like?We hold training courses in our own classrooms equipped with modern computer equipment for each participant and a large projection screen. Each workstation is fitted with a powerful computer for seamless practical exercises, and the environment supports a calm, friendly atmosphere during training.
Do I need to bring my own laptop to the classroom IT course?Our training rooms are fully equipped, so you do not need to bring your own laptop. A modern computer with all necessary hardware and software is ready for you at your workstation.
Will you receive an official certificate after completing an IT course?Yes, upon successful completion of the training course, you will receive an official ICT Pro certificate confirming your participation and acquired technical skills. You can use it to verify your qualifications or add it to your professional profile.
Where can you find our training center in Brno?The premises of the ICT Pro training center are located on the 1st floor of the COMGUARD building at Sochorova 38 in Brno. Positioned on the border of Žabovřesky and Komín, the location is easily accessible by both car and public transport.
Where can you find our training center in Prague?The premises of the ICT Pro training center are located on the 1st floor of the Opatov Park building at Líbalova 1, Prague 11 – Chodov. The location provides a comfortable environment for your education with convenient access.
What facilities and refreshments are available to you during training breaks?Our training centers feature a fully equipped kitchenette for a comfortable break during your courses. The facilities include a coffee machine, microwave, kettle, and a wide selection of drinks and snacks.
What beverage refreshments are available during your course?A beverage station with a coffee machine, teas, syrups, and water is at your disposal throughout the entire training session. You can enjoy a coffee or another drink of your choice anytime during breaks.
What light refreshments are provided for you during the courses?During course breaks, participants can enjoy light sweet snacks, pastries, and fruit syrups to mix their own drinks. Fresh water dispenser and plates are also available for your convenience.
Should I bring my own snacks to ICT Pro training?There is no need to. A wide selection of savory snacks, sweet biscuits, and snack bars is available for you during breaks. Boost your energy for all-day focus right inside the training center premises.
Can you spend training breaks in the fresh air?Yes, an outdoor terrace is available at our training center. During breaks between learning sessions, you can relax in the fresh air in a pleasant green environment.
Where can you relax during course breaks?Our training center features a spacious outdoor terrace with seating options. During breaks between learning sessions, you can step outside to relax and recharge in the fresh air.