Consultancy and Total Solutions Training Provider for Embedded Systems, Electronics and Electrical Engineering, Programming, Computing, Operations, ISO9000, ISO14000 and Management.

Bridging the Gap

Training Courses

C Programming for Engineers

Course id: 0019


C is the programming language of choice for many PC and embedded applications, and will be the dominant language for the foreseeable future. This intensive course covers basic to advanced C concepts with a strong focus on engineering problems. Participants would, in addition, be taught structured programming for system reliability and efficient coding styles.

Course highlight
Participants will have practical experiences using the gcc compiler toolset for cross compilation.

What participants say about the course
The following are some verbatim statements from the participants:

  • The assignment and instructor personal guidance -- Jan 2010
  • Learn how to program good programming way -- Jan 2010
  • Material presented was great -- May 2013
  • Very punctual and certainly robust in terms of knowledge and problem solving -- May 2013
  • The instructor is knowledgeable, manage interact participants, manage give examples on real engineering issues compare to learning activities -- Sept 2013

What you will learn

This course concentrates on the theoretical and practical knowledge to allow participants to achieve the following learning outcomes. Upon completing the course, participants would be able to:
  • Use the MISRA C guidelines for safe and reliable coding
  • Know the different data types and operators, and the pitfalls associated with certain data type-operator combinations due to implicit type conversions.
  • Understand and use suitable flow controls for structure programming, and the pitfalls associated with looping structures
  • Use pointers and arrays, understand their relationship, and know the caveats and pitfalls of using them
  • Use preprocessors directives for modularization and code reuse
  • Implement finite state machines (FSM) for non-blocking, concurrent processes

Who should attend

This course is particularly suited for engineers with rudimentary C programming knowledge who would like/required to develop reliable and efficient applications in C. This course is the recommended prerequisite for the 'C Programming for Reliable Embedded Systems' course.


Participants should have rudimentary programming experience and a good command of English.

Course methodology

This course is presented in a workshop style with example-led lectures interlaced with hands-on practical for maximum understanding.

Course duration

4 days.

Course structure

  • Introduction:
    • History of C
    • MISRA C 2004 Guidelines
    • Compilation process
  • Basics:
    • Hello World
    • Comments
    • Variables
    • Primary data types
    • Typecasting
    • Operators: arithmetic, assignment, equality, relational, increment, decrement, logical
    • Arrays: access, storage, cache access
  • Structured Programming:
    • Flow control: loops, break, continue, conditional
    • Structured programming: requirement to flowcharts, STD and ASM
    • Debugging
  • Modularisation:
    • Functions: definition, prototype, passing arguments, storage classes, scope rules, recursion, standard library function
    • Preprocessor directives: conditional compilation
    • Modular programming: advantages, linking
  • Compound Data Types and Pointers:
    • Compound data types: structure, union, bitfield
    • Pointers: referencing and dereferencing, storage, void, parameter passing, const qualifier
    • Characters and strings: storage, functions
    • Dynamic memory allocation
  • Inputs and Outputs:
    • Streams
    • Standard I/O: printf, scanf
    • File handling: reading, writing
    • Circular buffers


Dr Royan Ong

Course Schedule





News on ProvenPac

  ProvenPac Sdn. Bhd.
  C-4-3 Gembira Park,
  Jalan Riang, 58200
  Kuala Lumpur, Malaysia

  Tel: +603 03 5889 5889

No public course
currently scheduled.


Please inform me when
this course is scheduled.


Please contact me to
arrange in-house training.