Angelika Langer - Training & Consulting
HOME | COURSES | TALKS | ARTICLES | GENERICS | LAMBDAS | IOSTREAMS | ABOUT | CONTACT | Twitter | Lanyrd | Linkedin
Course Curriculum Angelika LangerCourse Curriculum Angelika Langer  
HOME

  GENERAL INFO
  SCHEDULE
  REGISTRATION
  
  JAVA
    EFFECTIVE JAVA
    CONCURRENCY
    PERFORMANCE
    LAMBDAS
    JAVA AFTER EIGHT
    MODULE SYSTEM
    GC TUNING
    MEMORY MODEL 
    JAVA INTRO

  C++
    RELIABLE C++
    EFFECTIVE STL
    TEMPLATES
    IOSTREAMS
    C++ INTRO   
 

GENERICS 
LAMBDAS 
IOSTREAMS 
ABOUT 
CONTACT 
Reliable C++

Reliable C++
COURSE DESCRIPTION  

A seminar for software engineers who need to master the complexity of C++. The seminar provides insights into frequently neglected language details, thereby creating an awareness of traps and pitfalls in the language, and explains strategies for achieving a higher degree of reliability and robustness of C++ programs.

This seminar covers the most important material that every professional C++ developer needs to know to be truly effective with the language and is especially suited to engineers who develop safety-critical components and need to produce reliable software that must meet the highest quality requirements. The focus is on the core of the language and neither requires nor strives for comprehensive knowledge of all language features.  Less commonly used features such as templates, the standard library, and recent language additions such as C++-20 features are mentioned, where relevant.  Topics include correct allocation and deallocation of memory, elimination of invalid pointers and memory leaks, efficient and correct initialzation, copying and moving of objects, preservation of object validity, properly expressing ownership concepts, const correctness, name lookup and overload resolution of redefined functions, implict type conversions, operator overloading, expression evaluation and sequence points.

The course is designed and conducted by Angelika Langer and backed by years of experience in teaching  C++ related topics and more than a decade of real-world experience in industrial software development. Angelika Langer is a freelance trainer/consultant in the area of object-oriented software development in C++ and Java. She is member of the ANSI C++ standards committee since 1993, a former columnist of C++ Report, and a recognized speaker at OO conferences worldwide. 

 
Prerequisite Courses and Skills: Introductory C++ course, or equivalent experience.  One year of programming experience using C++.
Duration: 3,5 days
Format: Lecture, question/answer, code reviews, and hands-on exercises.  This is not a hard to digest lecture-only seminar; instead the focus is on gaining practical experience by reviewing and improving real-world source code. 

 
Attendants should feel comfortable with the basics of the language and be open for deepening their knowledge of traditional C++. People who have learned C++ recently, as well as people who have been programming in C++ for some time, will come away from this seminar with useful, practical, proven information.

PERFORMANCE OBJECTIVES
Explore, in depth, potential pitfalls in C++
Allocate and deallocate memory correctly
Eliminate invalid pointers and memory leaks
Learn about move support, r-value references and forwarding
Understand the concept of constness in C++
Understand implict type conversions in C++
Master crucial member functions applicable to every class
Understand the resource acquisition is initialization (RAII) technique for managing resources
Gain insights into the differences among member functions, non-member
functions, virtual functions, and non-virtual functions

BUSINESS OBJECTIVES
Ensuring skills to construct reliable and robust business solutions
Meeting highest safety and reliability requirements
High-quality software
Bug-free programs
 


 
 
COURSE OVERVIEW


 
Managing the Lifetime of Objects
  • Correct Initialization and Destruction of Objects
  • Destructors in Inheritance Hierarchies
  • Initialization of Global and Static Data
  • The Schwarz Counter Idiom
  • Reference Counting
  • Move Operations and R-Value References 
  • Perfect Forwarding
Performance Issues
  • Eliminating unnecessary temporary objects
  • Pass by reference-to-const instead of by value
  • Prefer initialization to assignment in constructors
  • Consider overloading to avoid implicit type conversions
  • Facilitate compiler optimizations
Pointers and Memory Management
  • Correct Allocation and Deallocation of Memory
  • Elimination of Invalid Pointers and Memory Leaks
  • Safe Copying and Assignment of Objects
  • Reference Counting
  • The Standard Smart Pointers 
  • Raw Pointers vs. Smart Pointers
  • Idioms for Expressing Ownership Concepts
Data Access and Object Integrity
  • Maintenance of Object Validity
  • Const Member Functions
  • Immutability and Object Integrity
  • Logical vs. Physical Constness
Predictable Programs - Avoid Surprises
  • Expression Evaluation and Sequence Points
  • Function Redefinition and Overload Resolution
  • Name Lookup in Class Hierarchies
  • Virtual vs. Non-Virtual Member Functions
  • Implicit Type Conversions
  • Standard and User-Defined Conversions
  • New-Style Casts
  • Class Scope and Virtual Function Table
  • Assignment and Comparison in Hierarchies of Value Types
Exception Safety
  • Use objects to manage resources
  • Resource acquisition is initialization (RAII)
  • Exception-safe programming
  • Throw Specifications

 
FURTHER READING

 
To get an impression of some topics covered in this course check out the sample reading: 
 
 
Sequence Points and Expression Evaluation
Article published in VSJ
Fehlerfreies Programmieren in C++
This article is only available in German .
 
TRAINING LOCATIONS

Open Enrollment
Public courses are conducted in collaboration with partner companies worldwide. Presentation language is English or German, depending on the location. For further information go to GENERAL INFO.
On-Site Training
Courses can be held at your company site. Duration and content will be tailored to your specific needs and prerequisites. Presentation language is English or German.  For further information go to GENERAL INFO.
For information regarding training locations and the current schedule of public courses go to SCHEDULE. For further information or enrollment send me EMAIL or use the REGISTRATION form.
Schedule
To check for availability, price and other details send me EMAIL or use the REGISTRATION form.
  © Copyright 1995-2021 by Angelika Langer.  All Rights Reserved.    URL: < http://www.AngelikaLanger.com/Courses/ReliableC++.htm  last update: 4 Nov 2021