Programming in C Language – Associate Level

Course code: CLAL01

Duration:        40 Hours

This course from C++ institute provides a thorough introduction to the C programming language, the workhorse of the UNIX operating system and preferred language of embedded processors and micro-controllers. It covers the basics of programming, customs and vocabulary, including the most common library functions and the usage of the pre-processor. Knowledge of C is highly marketable for summer internships, research programs, and full-time positions in software and embedded systems development. We have aligned this training to the CLA certification (C Programming Language Certified Associate) provided by C++ Institute. (www.cppinstitute.org).

Audience

Those who have a need to learn and apply C programming techniques

Prerequisites

This course assumes a basic understanding of the principles of programming and any operating system concepts.

Objective

To be proficient in basic concepts of computer programming and developer tools, present the syntax, semantics and data types offered by the C language, and allow the students to write their programs using standard language infrastructure, regardless of the hardware or software platform.

Education criteria

None

Absolute basics

  • languages: natural and artificial
  • machine languages
  • high-level programming languages
  • obtaining the machine code: compilation process
  • writing simple programs
  • variables
  • integer values in real life and in C
  • integer literals
  • Data Types

  • floating point values in real life and in C
  • float literals
  • arithmetic operators
  • priority and binding
  • post- and pre-incrementation and decrementation
  • operators of type op=
  • char type and ASCII code
  • char literals
  • equivalence of int and char data
  • comparison operators
  • conditional execution and if keyword
  • printf() and scanf() functions.Numeric Constants and Variables
  • Flow Control

  • conditional execution: the “else” branch
  • integer and float types
  • conversions
  • typecast and its operators
  • loops – while, do and for
  • controlling the loop execution – break and continue
  • logical and bitwise operators
  • Arrays

  • switch: different faces of ‘if’
  • arrays (vectors)
  • sorting in real lfe and in a computer memory
  • initiators
  • pointers
  • an address, a reference, a dereference and the sizeof operator
  • simple pointer and pointer to nothing (NULL)
  • & operator
  • pointers arithmetic
  • pointers vs. arrays: different forms of the same phenomenon
  • using strings
  • basic functions dedicated to string manipulation
  • Memory management and Structures

  • array indexing
  • the usage of pointers: perils and disadvantages
  • void type
  • arrays of arrays and multidimensional arrays
  • memory allocation and deallocation: malloc() and free() functions
  • arrays of pointers vs. multidimensional arrays
  • structures
  • declaring, using and initializing structures
  • pointers to structures and arrays of structures
  • basics of recursive data collections
  • Functions

  • functions
  • how to declare, define and invoke a function
  • variables’ scope, local variables and function parameters
  • pointers, arrays and structures as function parameters
  • function result and return statement
  • void as a parameter, pointer and result
  • parameterizing the main function
  • external function and the extern declarator
  • header files and their role
  • Files and Streams

  • files vs. streams
  • header files needed for stream operations
  • FILE structure
  • opening and closing a stream, open modes, errno variable
  • reading and writing to/from a stream
  • predefined streams: stdin, stdout and stderr
  • stream manipulation: fgetc(), fputc(), fgets() and fputs() functions
  • raw input/output: fread() and fwrite() functions
  • Preprocessor and Complex declarations

  • preprocessor
  • #include: how to make use of a header file
  • #define: simple and parameterized macros
  • #undef directive
  • predefined preprocessor symbols
  • macrooperators: # and ##
  • conditional compilation: #if and #ifdef directives
  • avoiding multiple compilations of the same header files
  • scopes of declarations, storage classes
  • user –defined types
  • pointers to functions
  • analysing and creating complex declarations
  • Course Review

    Exam Preparation (optional)