Course Outline
Introduction
- Overview of C Features and Applications
Preparing the Development Environment
- Choosing an IDE
- Configuring the compiler
Writing a Sample Program
- Defining the problem
- Coding according to requirements
Defining the Scope of Variables and Functions
- Understanding scope, visibility and lifetime
- Working with storage classes: auto, extern, register, static
Managing Data in a C Program
- Beyond primitive data types
- Working with advanced data types: structures, linked lists, etc.
- Storing different data types in the same memory location
Modifying the Properties of a Variable
- Beyond type modifiers
- Working with type qualifiers: constant, volatile, etc.
Manipulating Bits in C
- Working with data smaller than a byte
- Working with bit manipulation operators
Controlling the Flow of Your Program
- Beyond sequencing
- Using the goto statement
Reading and Writing Data
- Recap of Input/Output functions
- Improving output readability
Developing Cross-Platform Code
- Understanding compiler directives
- Compiling code conditionally
Enhancing Program Performance
- Macros vs functions
- Defining macros to run program fragments
Dynamically Allocating Memory
- Advantage of using pointers: execution speed
- Pointers to functions
- Accessing memory and manipulating the address
Debugging a C Program
- Advanced techniques for checking, detecting and correcting errors
- Working with gdb (Gnu Debugger)
Creating a Static Library
- How a static library is linked into executable file
- Creating a static library
Creating a Shared Library
- Static libraries vs shared libraries (dynamic libraries)
- How a shared library is linked and loaded into memory at runtime
- Creating a shared library
Abstracting Data in Your Program
- Overview of interface, specification, and implementation
- Creating an abstract data type
- Regression testing an abstract data type
Searching and Sorting Data
- Searching arrays using linear search, binary search, etc.
- Sorting arrays usig selection sort, insertion sort, bubble sort
Interprocess Communication and Signals
- Understanding processes, sockets, and signals
- Implementing IPC using shared files, shared memory, pipes, message queues, sockets, semaphores, etc.
Making Your C Program Run in Parallel
- Running different parts of a program concurrently through multithreading
- Writing a thread
Advanced Networking Programming
- Recap of TCP, UDP, IP and other dominant protocols
- Serving multiple ports, surviving abrupt network disruptions, etc.
- Writing powerful socket APIs
Towards High-Quality Code
- Peer code review and parallel programming
- The importance of iterative coding (refactoring)
Summary and Conclusion
Requirements
- C programming experience
Audience
- Programmers
- Developers
Delivery Options
Private Group Training
Our identity is rooted in delivering exactly what our clients need.
- Pre-course call with your trainer
- Customisation of the learning experience to achieve your goals -
- Bespoke outlines
- Practical hands-on exercises containing data / scenarios recognisable to the learners
- Training scheduled on a date of your choice
- Delivered online, onsite/classroom or hybrid by experts sharing real world experience
Private Group Prices RRP from £7600 online delivery, based on a group of 2 delegates, £2400 per additional delegate (excludes any certification / exam costs). We recommend a maximum group size of 12 for most learning events.
Contact us for an exact quote and to hear our latest promotions
Public Training
Please see our public courses
Testimonials (2)
the exercises and the methodology
Javier MIllan Rios - si
Course - Advanced C Programming
An interesting and broad scope