EEC Logo

Advanced C Programming

Duration: 4 days


Software engineers, programmers, and analysts who will be designing and creating programs using C. Anyone desiring the ability to read and write complex C programs utilizing advanced data structure designs and complex pointers.

Course Contents

  1. A Review of C
    1. Data types
    2. Control flow constructs
    3. Arrays and pointers
    4. Structures
    5. Unions
    6. Bitfields
    7. Enumerations
  2. Functions
    1. Function Fundamentals
    2. Function Prototypes
    3. Function Invocation and Definition
    4. Return Value Considerations
    5. Recursive Functions
    6. Evaluation of Function Arguments
    7. Variable Number of Arguments
    8. Examples of Interesting Functions
      1. strtok (manages local static data)
      2. bsearch (passed a function pointer argument)
      3. qsort (passed a function pointer argument and modifies incoming data)
      4. setjmp / longjmp (non-local goto statements)
      5. bind / accept (both have value-result parameters)
      6. mmap (function has pointer return value but returns -1 on error)
  3. Pointers
    1. Common Pointer Constructions
    2. Pointer Arithmetic
    3. Binary Search
    4. Processing Arrays With Pointers
    5. Two Dimensional Arrays
    6. Complex Declarations
    7. Pointers to Functions
    8. Polymorphism in C
  4. Designing Data Types: Structures
    1. Steps in Creating Data Types
    2. Rationale For a New Data Type
    3. Representing Columns from a Database Table
    4. Representing Rows of Columns
    5. Combining Multiple Data Structures
      1. Array of Structures
      2. Linked List of Structures
      3. Hash Table of Structures
  5. Portability
    1. Different Kinds of Portability
    2. Source Code Portability
    3. Portability with Functions
    4. Problems with Binary Data
    5. Problems with Bits
    6. Pointer Problems
    7. ANSI vs Non-ANSI
    8. Odds and Ends

Course Objectives

Upon completion of this course, the student will be able to:

Instructional Technique

Students are invited to bring their current ideas and questions to the classroom for discussion. Students will be encouraged to enhance their skills utilizing the techniques presented in lecture through classroom problem solving and controlled online workshops. This course is approximately 60% labwork.


Between three and six months of concentrated C programming experience is required. Other than a quick review of basic C concepts the student is expected to be thoroughly familiar with all basic language constructs (primitive data types, conditional statements, loop controls, function definition and invocation, the use of arrays and pointers).