C for Experienced Programmers

This course is designed as a conversion course for students who have considerable experience in programming in other high-level languages, and who need to start writing or maintaining professional code in C.

ANSI Standard C is a general-purpose programming language that is widely used in areas as diverse as operating systems and games. This course will teach you how to write professional ANSI Standard C code, and how to use the functionality provided by the ANSI Standard C library. The course explores concepts and syntax through lectures, discussion and hands-on lab exercises.

Duration: 5 days

Who is it for: This training course is for experienced programmers who need to be able to develop advanced applications using the C programming language.



  • How to program in ANSI Standard C
  • How to use the Standard C Library
  • Good coding practice and idioms for the safe and sensible use of language features


Language Overview

  • Data types, variables and operators
  • Control flow
  • Functions
  • Arrays
  • Pointers
  • Strings
  • User-defined types
  • I/O
  • The preprocessor

Pointers and Arrays

  • Pointer arithmetic
  • void pointers
  • Idiomatic use of pointers
  • Pointers-to-pointers
  • Arrays and pointers
  • Strings and pointers
  • Passing arrays to functions
  • Dynamic memory allocation
  • Use of malloc and free
  • Command-line arguments

Custom types

  • Using typedef with structs
  • Pointers and structs
  • Self-referential structs
  • Bitfields
  • Unions


  • Opening files
  • Reading and writing files
  • Binary and text files
  • Random access I/O
  • Directory operations

The Standard Library

  • What is in the library
  • String manipulation using the str functions
  • Math functions
  • Date and time functions
  • Other Standard C functions
  • Writing variadic functions
  • Non-local goto

Program organization

  • Program layout (text / data / stack / heap)
  • Storage classes – auto, register, extern and static
  • Linkage – internal, external and none
  • Qualifiers – volatile and const
  • Atomic operations
  • Alignment
  • Sequence points

The Preprocessor

  • The null directive
  • Proper use of header files
  • Minimizing recompilation
  • Conditional inclusion guards, #define and #undef
  • Using macros properly
  • Stringifying and token pasting
  • Predefined symbols
  • Other directives (#line, #pragma, #error)

Error handling and status reporting

  • Using assert()
  • errno
  • perror()
  • Returning values from programs

Function pointers

  • Declaring and using function pointers
  • Using lookup tables

Implementing data structures

  • Linked lists
  • Queues
  • Stacks
  • Hashing
  • Using recursive functions
  • Binary Trees
  • Sorting

Enquire about this course

"*" indicates required fields

By submitting this form, you agree to our Privacy Policy.
This field is for validation purposes and should be left unchanged.