Programming in C (C11) – Advanced Features

Duration : 6 Days (48 Hours)

Programming in C (C11) – Advanced Features Course Overview:

The Programming in C (C11) – Advanced Features course offers a comprehensive exploration of the latest C programming language version. Delving deep into advanced subjects, including memory management, parallel computing, threading, pointer arithmetic, debugging, dynamic memory allocation, and library functions, the course combines practical exercises to foster a profound grasp of the covered topics. These hands-on exercises simulate real-world scenarios, enabling participants to apply concepts effectively. Additionally, the course incorporates case studies to exemplify the discussed concepts. By course completion, students will possess a thorough comprehension of advanced C programming features and the capability to implement them across diverse applications. This equips them to adeptly design, develop, and maintain sophisticated C-based applications.

Intended Audience:

  • Intermediate to advanced programmers familiar with C or with a strong foundation in C programming
  • Experienced software developers seeking to deepen their understanding of advanced C features
  • Students or professionals looking to expand their C programming skills beyond the fundamentals
  • Programmers interested in mastering more complex concepts like memory management, pointers, and threading
  • Individuals wanting to explore advanced techniques and capabilities of the C programming language
  • Aspiring software engineers aiming to build expertise in advanced C programming practices
  • Professionals seeking to develop high-performance and efficient C programs
  • Those interested in diving into topics such as parallel computing, debugging, and dynamic memory allocation in C
  • Programmers who want to create more intricate and optimized C code for various applications.

Learning Objectives of Programming in C (C11) – Advanced Features:

1. Gain an understanding of the core features of C11, including variadic macros, type generic macros, local type declarations, and anonymous structures and unions.
2. Understand the basics of dynamic memory management, including the use of malloc, realloc, free, and calloc to create and manage memory.
3. Learn how to use threads and threading primitives to create multi-threaded programs and understand synchronization between multiple threads.
4. Recognize and utilize compound literals and designated initializers for C11 and C99 declarations.
5. Familiarize yourself with the features and syntax of the GNU C Compiler (GCC), an open source compiler for C progamming.
6. Learn and practice the basics of C11 debugging and testing with GCC, including common compiler warnings, symbols and symbols tables, and the GNU Debugger (GDB).
7. Gain the skills to use advanced language features, such as extended type qualifiers, conditional expressions, __builtin_types_compatible_p and __builtin_choose_expr, atomic operations, inline functions, unrestricted unions and much more.

 Module 1: Introduction of C

  • C is a language for small, fast programs
  • how do you run the program?
  • Two types of command

 Module 2: Memory and Pointers

  • Using memory pointers
  • How do you pass a string to a function?
  • Array variables are like pointers…
  • Why pointers have types
  • Using pointers for data entry
  • scanf()
  • fgets() is an alternative to scanf()

 Module 3: Strings: String theory

  • Create an array of arrays
  • Find strings containing the search text
  • Using the strstr() function
  • Array of arrays vs. array of pointers

 Module 4: Creating Small Tools

  • Introducing the Standard Error
  • fprintf() prints to a data stream
  • Connect your input and output with a pipe
  • The bermuda tool
  • Creating your own data streams
  • There’s more to main()

 Module 5: Using Multiple Source Files

  • Data types
  • Type Casting
  • Creating your first header file
  • The shared code needs its own header file
  • Automate your builds with the make tool

 Module 6: Structs, Unions, and Bitfields

  • Create your own structured data types with a struct
  • You need a pointer to the struct
  • (*t).age vs. *t.age
  • A union lets you reuse memory space
  • An enum variable stores a symbol
  • Bitfields store a custom number of bits

 Module 7: Data Structures and Dynamic Memory

  • Linked lists are like chains of data
  • Linked lists allow inserts
  • Create a recursive structure
  • Create islands in C
  • Inserting values into the list
  • Use the heap for dynamic storage
  • Give the memory back when you’re done
  • Ask for memory with malloc()…
  • Let’s fix the code using the strdup() function

 Module 8: Advanced Functions

  • Pass code to a function
  • Every function name is a pointer to the function…
  • Every function name is a pointer to the function…
  • Get it sorted with the C Standard Library
  • Use function pointers to set the order
  • Create an array of function pointers

 Module 9: Static and Dynamic Libraries

  • Angle brackets are for standard headers
  • Sharing .h header files
  • Share .o object files by using the full pathname
  • An archive contains .o files
  • Create an archive with the ar command…
  • Dynamic linking happens at runtime
  • create an object file

 Module 10: Processes and System Calls

  • The exec() functions
  • The array functions: execv(), execvp(), execve()
  • Running a child process with fork() + exec()

 Module 11: Inter-process Communication

  • Redirecting input and output
  • A look inside a typical process
  • Redirection just replaces data streams
  • fileno() tells you the descriptor
  • Connect your processes with pipes
  • Case study: opening stories in a browser
  • Opening a web page in a browser
  • The death of a process
  • Catching signals and running your own code
  • Rewriting the code to use a signal handler
  • Use kill to send signals

 Module 12: Sockets and Networking

  • The Internet knock-knock server
  • Knock-knock server overview
  • BLAB: how servers talk to the Internet
  • Reading from the client
  • The server can only talk to one person at a time
  • You can fork() a process for each client
  • Writing a web client
  • Clients are in charge
  • Create a socket for an IP address
  • getaddrinfo() gets addresses for domains

 Module 13: Threads in C

  • Create threads with pthread_create
  • Use a mutex as a traffic signal

Programming in C (C11) – Advanced Features Course Prerequisites:

For the Programming in C (C11) – Advanced Features course, the following prerequisites are recommended:

  • Proficiency in the fundamentals of C programming, including variables, loops, conditionals, functions, and basic data structures.
  • Prior experience with C programming or completion of a C programming fundamentals course.
  • Familiarity with memory management concepts, such as pointers and dynamic memory allocation.
  • Understanding of file handling and basic input/output operations in C.
  • Basic knowledge of debugging techniques and tools.
  • Comfort with more complex programming concepts and problem-solving skills.
  • Willingness to explore advanced C programming topics and engage in challenging exercises.

Discover the perfect fit for your learning journey

Choose Learning Modality

Live Online

  • Convenience
  • Cost-effective
  • Self-paced learning
  • Scalability


  • Interaction and collaboration
  • Networking opportunities
  • Real-time feedback
  • Personal attention


  • Familiar environment
  • Confidentiality
  • Team building
  • Immediate application

Training Exclusives

This course comes with following benefits:

  • Practice Labs.
  • Get Trained by Certified Trainers.
  • Access to the recordings of your class sessions for 90 days.
  • Digital courseware
  • Experience 24*7 learner support.

Got more questions? We’re all ears and ready to assist!

Request More Details

Please enable JavaScript in your browser to complete this form.

Subscribe to our Newsletter

Please enable JavaScript in your browser to complete this form.