CLP – C Certified Professional Programmer Certification
CLP – C Certified Professional Programmer certification is a professional certificate that measures your ability to accomplish coding and design tasks related to advanced topics of the C programming language, as well as advanced programming techniques, including the library functions and the usage of the preprocessor.
A test candidate should demonstrate sufficient knowledge of the following concepts:
- Handling variable number of parameters ()
- Low level IO ()
- Memory and strings ( et al.)
- Processes and threads
- Floats and ints once again (, , et al.)
- Network sockets –the absolute basics
Exam Information
CLP – C Certified Professional Programmer
Associated certifications:
CLE – C Certified Entry-Level Programmer,
CLA – C Certified Associate Programmer
CLA – C Certified Associate Programmer Certification
65 minutes (exam) + approx. 10 minutes (Non-Disclosure Agreement/Tutorial)
Single-choice questions, multiple-choice questions
1. C Advanced - Skills for ALL (coming soon)
2. C Advanced (Advanced) (Edube, self-enroll/self-study)
CLP – C Certified Professional Programmer Certification: Exam Syllabus
Exam block #1: The Historical Evolution of C
Objectives covered by the block
- Key milestones: ANSI C, C89, C95, C99, C11
- Analysis of obsolete yet valid language elements
- Changes in function declarations over time
- Understanding trigraphs and digraphs
- new C11 keywords:
- _Noreturn
- _Alignof and _Alignas
- _Bool
- _Exit
- _Complex
- _Pragma, __func__
- _Generic
Exam block #2: Variable Parameter Management (<stdarg.h>)
Objectives covered by the block
- Insights into calling conventions, parameter passing, and stack operations
- Implementation of:
- va_start()
- va_arg()
- va_end()
- va_copy()
Exam block #3: Fundamentals of Low-Level IO
Objectives covered by the block
- Overview of POSIX, API, ABI, WINAPI, and other interfaces
- Essential system calls:
- access()
- open()
- errno
- close()
- read()
- write()
- lseek()
- dprintf()
- stat()
- symlink()
- link()
- readlink()
- unlink()
- Application of fcntl() and ioctl() in IO operations
Exam block #4: Advanced Memory and String Handling
Objectives covered by the block
- Techniques for manipulating memory blocks
- Utilizing string manipulation functions:
- strchr()
- strrchr()
- strstr()
- strtok()
- Sorting and searching algorithms:
- Memory allocation strategies:
- aligned_alloc()
- calloc()
- malloc()
- realloc()
- Memory copying and setting functions:
- bcopy()
- memcpy()
- memccpy()
- memmove()
- bzero()
- memset()
- memcmp()
- Wide character support in C dialects, use of strcoll() and wcscoll()
Exam block #5: Process and Thread Management
Objectives covered by the block
- Comprehensive definitions, implementations, and history
- Thread safety and environmental interactions
- Managing Unix and Windows processes
- Introduction to POSIX and Windows threads, and C11 threading model
Exam block #6: Numerical Types and Computations
Objectives covered by the block
- Deep dive into IEEE-754 standards and concepts of NaN, infinity, zero
- Evaluation of floating-point reliability and numerical precision
- Introduction to multi-precision libraries (GMP, MPFR, MPIR)
Exam block #7: Introduction to Network Socket Programming
Objectives covered by the block
- Fundamentals of socket technology and network protocols
- Key concepts in data transmission, including servers, clients, and endianness
- Socket operations: setup, communication, and client-server interactions
Exam block #8: Specialized Programming Considerations
Objectives covered by the block
- Const vs. volatile variables: usage and distinctions
- Critical analysis of goto statements
- Handling non-local jumps:
- Exploring advanced topics such as array indices, initializers, and variable-length arrays
- Sequence points, assembly instructions, and addressing undefined behaviors
First published: December 9, 2017
Last updated: April 25, 2024
Aligned with Exam CLP-12-01