Intermediate C Programming

General info

This 3 day course will bring C developers up to speed with a features and techniques in C and the use of a variety of tools to aid in C development, testing, and measurement. Software engineers that may have been away from C for a Iittle while wil I quickly be brought back up to speed with C. This course also provides an overview of the CERT C Secure Coding Standard and lOS Style Guidelines.

 

Objectives

Course Objectives

  • To utilize a wide variety of programming techniques in C.
  • To discuss and examine coding standards and tools.

 

Audience

The course is for C programmers for embedded, system and application software.

 

Overview

1. Introduction

  • Objectives and format
  • Course overview

2. Syntax

  • Scope: local, function, file.
  • Declaration vs. Definition
  • Storage class: automatic, static
  • Linkage: internal, external
  • Expressions: precedence, error prone examples
  • Problematic statements: if-then-else matching, braces, continue, break, switch
  • Expressions – error prone and confusing examined
  • static and extern keywords
  • Assertions

3. More Syntax

  • Control flow
  • Operators
  • Functions
  • Loops
  • Types
  • Casting
  • Pointers
  • Const

4. Advanced Syntax

  • Inlining
  • restrict
  • volatile
  • structs, arrays of structs, struct initialization
  • strings
  • pointers, pointers vs arrays, pointers to functions
  • function pointers to provide runtime binding
  • bit operations
  • preprocessor
  • typedef
  • enum
  • unions
  • comma operator
  • sizeof
  • padding and alignment

5. Standard C Library, Object files/process, API Design

  • string functions
  • memory functions
  • character functions
  • I/O functions
  • Memory model of object files/processes: BSS, Data, text, heap

6. C Compiler options

  • debugging
  • static testing
  • GNU extensions
  • optimization

7. CERT C Secure Coding and other Standards

  • Scope
  • Rules & Recommendations
  • Usage
  • Examples. Variables
  • Requirements for using variables
  • Variable naming
  • Fundamental data types
  • Organizing straight-line code
  • Using conditionals
  • Controlling loops
  • Design at routine level
  • Routine naming
  • Guidelines for using functions, macro routines. and in-line routines

8. Data structures

  • arrays
  • structs
  • linked lists
  • doubly linked lists

9. Algorithms

  • sorting
  • searching

10. Tools

  • code coverage
  • performance profiling
  • debugging: GDB, DDD
  • tracing
  • code formatting
  • doxygen
  • cscope
  • tags

 

PDF

Click in the centre on “View in fullscreen” and you will be able to use the topbar menu for printing this course description.