Coracle C Training Workshop

Students Will Learn

  • Components of C program
  • Using the C Preprocessor
  • Using standard runtime libraries
  • Using make to build program
  • Using data types , storage, calsses and scope
  • Using typedef to make code more readable and portable
  • Using operators and experations
  • Working with conditional and looping conctructs
  • Initialization a pointer
  • Accessing the value address by pointer
  • Returing the value of a function
  • Declaring argument data type
  • ANSI function Prototype syntax
  • Declaring and initializing arrays and multidimensional arrays
  • Using string and character manipulation
  • Declaring and instancing a structure
  • Defining a union
  • Accessing command line arguments and environment variables
  • C runtime library standard I/O function
  • working with debigger utilities

Course Description

Our hands on C programming course provides a comprehensive knowledge to the ANSI C language, with emphasizing portability and structured design issues. Students and professionals are introduced to all major language elements including data types, flow control, and user defined and system defined functions and standard function libraries. Thorough coverage of topics of string and characters are given here so that professionals can enjoy this and learn this by hands on practice. Dynamic memory allocation, standard I/O, macro definition, and the C runtime library are covered so that generic programming can be done in C. The course explains the use of aggregate structures, unions, and pointers in initial stages so the students can practice extensively in the hands on laboratories. Structured and unstructured programming constructs and user defined as well system defined functions are also covered. Maximum emphasis is given to the processing of command line arguments and environment variables so that students and professionals will be able to write flexible, user-friendly programs. Coracle C Training workshop module also includes coverage of portability tips drawn from experienced programmers working in production environments. Comprehensive hands on practice exercises are integrated throughout to reinforce learning and development of real competency. Debugging is also one of the important parts for software development, and it is also covered in Coracle C training workshop module.

Course Prerequisites

Understanding of fundamental concepts such as algorithm and flowchart creation with editor, and Operating System knowledge.

Coracle C Programming Course Overview

Overview of C

  • Operating System Independence
  • Portability of C
  • Robustness of C
  • Design Goals and Capabilities
  • Flavors of C

Compiler Directives and the C Preprocessor

  • Compile-Time Directives
  • Use of typedef
  • C Preprocessor Syntax

Fundamental Data Types, Storage Classes, and Scope

  • Fundamental Data Types and Qualifiers
  • Constants and Strings
  • Storage Classes
  • Scope and Block Structure
  • Scope and Data Hiding
  • Data Initialization

Pointers and Dynamic Allocation

  • Advantages of Pointers
  • User of Pointers
  • Pointer and Address Arithmetic
  • Dynamic Storage Allocation
  • sizeof Operator
  • Double Indirection


  • Functions vs. Inlining
  • Purpose of Macros
  • Use of Macros
    • Making Code More Readable
    • Auto Adjustment of Compile Time Values
    • Conditional Compilation
    • Making Code Portable
    • Simplifying Complex Access Calculations
  • Advanced Micro Design Tips
  • Using Macros to Help Write Portable Programs
  • When to Use a Macro instead of a Function
  • Using Macros for Debugging


  • Purpose of Arrays
  • Declaring an Array
  • Initializing an Array
  • Addressing Elements
  • Stepping Through an Array
  • Variable Size Arrays
  • Arrays of Pointers
  • Arrays of Strings
  • Passing an Array to a Function
  • Dynamic Memory Allocation
  • Multidimensional Arrays

Basic Formatted I/O

  • Standard I/O Library
  • Character Set Encoding
  • Standard Input and Output
  • Character I/O Functions
  • Formatted I/O Functions
  • String Constants

Program Debugging

  • Problem Analysis
  • Instrumenting with printif
  • Instrumenting with ctrace
  • The Purpose of Debuggers
  • How Not to Use Debuggers
  • Symbolic Debuggers

Operators and Expressions

  • Arithmetic, Logical, and Bit Operators
  • Precedence and Associativity
  • Assignment and Casting
  • The Conditional Operator

Flow Control Constructs

  • Conditional Constructs: if, switch
  • Looping Constructs: while, do, for
  • Unconditional looping construct
  • Programming Style

Functions (Subroutines)

  • Purpose of Functions
  • Functions vs. Inlining
  • Automatic Variables
  • The Argument Stack
  • Passing By Value
  • Passing By Reference
  • Declaring External Functions
  • Function Prototyping
  • ANSI Prototyping
  • Passing a Function as an Argument
  • Designing Functions for Reusability
  • Calling a Function from Another Language
  • Returning a Dynamically Allocated Value Using Double Indirection
  • Casting the Return Value of a Function
  • Recursion


  • Purpose of Structures
  • Defining and Declaring Structures
  • Accessing Members
  • Pointers to Structures
  • Dynamic Memory Allocation
  • Passing a Structure to a Function
    • As a Pointer
    • Passing the Actual Structure

Advanced Structures and Unions

  • Nested Structures
  • Arrays of Structures
  • Bit Fields
  • Unions
  • Linked Lists overview

C Runtime Library Standard Functions

  • Character I/O
  • Unformatted File I/O
  • Formatted File I/O
  • Math Functions
  • Miscellaneous various Functions

Strings and Character Manipulation

  • Strings as Character Arrays
  • String Library Functions
  • Reading and Writing Strings

Accessing Command Line Arguments and Environment Symbols

  • argc and argv arguments
  • Parsing Command Line Options
  • Accessing the Environment Array

Structured Programming

  • Structuring Code for Quality, Reliability, Maintainability
  • Designing for Modularity and Reusability

Advanced Programming Consideration

  • Writing Portable Code
  • Use of Macros
  • ANSI C Limits
  • Feature Test Macros
  • Client/Server and Distributed Design
  • Performance Considerations

Student Testimonials

"I enjoyed the training module of C by the Coracle Classes, finally with help of this module I made up my skills in the programming, and in 2012 I get selected in Infosys. I appreciate the Coracle Trainers who make such a nice module which is helping me a lot in my career. "Excellent Coracle C training workshop – a nice combination of labs and instructions."
– K.B. Sharma, Infosys

Free Quote