C++ Wizardry for Embedded
Duration: 2 days
Number of participants: recommended optimum 15, maximum 25 participants
The primary goal of this course is to give the participant a better understanding of C++ constructs, and when it is and is not appropriate to use those constructs. The course will arm participants with a new set of C++ programming techniques to enhance the quality, reliability, maintainability, performance and ease of coding of their software projects. These programming techniques are also useful as a baseline and “food for thought” for participants to build upon to formulate their own techniques to improve their software projects.
This course examines and demonstrates the applicability and advantages of C++ to the embedded developer. Using numerous tested and proven programming techniques, solutions are demonstrated for avoiding common problem areas in software design relating to quality, reliability, maintainability and performance using C++ language facilities. Techniques are shown to reduce source code size and eliminate common manual programming tasks – all leading to more maintainable software with significantly lower bug counts, faster development times and shorter debug cycles.
Examples of high consequence real world embedded software failures are examined. Strategies are then presented for how those problems could have been avoided using advanced C++ programming techniques. Particular attention is paid to issues of memory and resource management which can lead to intermittent, difficult to detect and hard to find and fix classes of bugs. In addition, performance implications of advanced C++ constructs, decoupling/maintainability, test driven development/defensive programming and interface-hidden performance enhancement techniques are covered in great detail.
This course is not intended as an introduction to C++ and it features. Rather it is focused on advanced techniques and patterns that make ingenious use of C++ features to increase maintainability and quality without degradation of performance.
This course is intended for engineers and consultants in the embedded field with intermediate to advanced C++ experience wishing to improve the quality, reliability, maintainability and performance of their software projects. Also, technically oriented managers and architects who wish to gain an understanding of why and how choosing C++ can benefit their new or existing projects.
Course participants are expected to be familiar with C++ and related topics such as object oriented programming and templates.
The course is based on lectures, discussions, example C++ problem-solving scenarios, classroom exercises.