Standard Level - 5 daysview dates and locations
Comprehensive C++ teaches the C++ programming language in the context of electronic system design, validation and implementation, where C++ is used both for abstract system-level modelling and for embedded software implementation. It is a direct replacement for a general class in C++ programming, with the added benefit that the syllabus, contextual examples and exercises are tuned to the requirements of the embedded system and System-on-Chip communities.
Comprehensive C++ provides an excellent full scope primer for any of the Doulos SystemC courses, or for anyone wishing to use C++ in the context of electronic system level modelling, hardware-software integration or embedded system implementation.
The workshops are based around carefully designed exercises to reinforce and challenge the extent of learning, and comprise approximately 50% of class time.
Who should attend?Comprehensive C++ is aimed at electronic hardware, software and system-on-chip engineers who need to gain a working knowledge of the C++ language. The course is also suitable as a general introduction to C++ programming, particularly for anyone working in an electronics-related business area or with a background in digital electronics.
What will you learn?
- The syntax and semantics of the C++ language
- The principles of object-oriented modelling and programming
- The skills needed to apply C++ to common tasks in the context of electronic system level modelling
- An overview of the principles of embedded software programming, real-time operating systems and development tools and how these principles are realized using C++
Pre-requisitesDelegates should have had some exposure to the C programming language, in particular a basic level of familiarity with functions, variables, data types, operators, and statements. A good working knowledge of another high-level programming language is an acceptable alternative. No previous knowledge of C++ is required. This course is not suitable as a first course in computer programming.
Please contact Doulos direct to discuss and assess your specific experience against the Pre-requisites.
Course materialsDoulos Course materials are renowned for being the most comprehensive and user friendly available. Their style, content and coverage is unique in the HDL training world, and has made them sought after resources in their own right. Fees include:
- Fully indexed course notes creating a complete reference manual
- Workbook full of practical examples and solutions to help you apply your knowledge
Structure and Content
Day 1- Learn about the differences between C and C++
Summary of CA refresher on basic C syntax • Functions • Control flow • Fundamental types • Literals • Derived types • Operators • Standard libraries
From C to C-1999 and C++The features added to C by C++ and the ANSI C-1999 standard • const • inline • Stream I/O • Function prototypes • Pass-by-reference • Default arguments • Function and operator overloading
Linkage and StorageLearn some tricky features often overlooked in C, but necessary for C++ • Scope • Linkage • Linking C and C++ • Namespaces • Static, automatic and dynamic storage • Memory management • new • delete • Arrays • Pointers • Strings
C++ Development Environments for Desktop and Embedded SystemsCompilers • Linkers • Loaders • Debuggers • Integrated development environments • Cross-compilers • In-circuit emulation
Day 2- An introduction to object-oriented programming
Classes and ObjectsIntroduction to modelling and abstraction • Information hiding • Abstract data types • Classes and objects • Public and private class members • Member functions • Scope resolution
ConstructorsHow to ensure that objects are properly initialised, and how to tidy up afterwards • Constructors • Destructors • Copy constructors • Pointers and objects
Members and FriendsMore features of C++ classes • Friends • Operator overloading • Overloading assignment • this • Static members • Constant objects and members
Day 3- Master the subtleties of object-oriented programming in C++
Object-Oriented Modelling and The UMLLearn the principles of object-oriented design • Class relationships • The Unified Modelling Language • Class and object diagrams • Association • Composition • Dependency • Implementing class relationships in C++ • Initialization of class members
InheritanceDerived classes • Inheritance • Protected members • Casting pointers • Order of initialization
Virtual FunctionsInheriting common behaviour • Overriding methods • Virtual functions • Polymorphism • Late binding • Virtual destructors • Abstract base classes and pure virtual functions
Multiple InheritanceSingle Inheritance • Multiple inheritance • Virtual multiple inheritance • Interfaces • Composition again
Day 4- Learn to make use of some standard libraries and to develop your own class templates
Strings and StreamsThe string class • I/O streams • I/O of user-defined types • Manipulators • Buffering • Formatted and unformatted streams
Further C++ FeaturesRun-Time Type Identification • Type casts • User-defined conversions • Nested classes • Pointer-to-member
TemplatesFunction templates • Class templates • Template arguments • Template specialization • Building simple data structures using templated and untemplated classes
Day 5 - Embedded Programming and Standard Libraries
ExceptionsError handling • Throwing and catching exceptions • Handlers • Standard exception classes• Preventing memory leakage during exceptions
Principles of Embedded ProgrammingConcurrency • Threads • Synchronisation • Memory maps • Communicating with peripherals • Meeting external timing constraints • Process scheduling and pre-emption • Using C++ thread classes • Real-time operating systems
Standard LibrariesSummary of the standard C and C++ libraries • Using container classes, algorithms and iterators from the standard libraries
C++ 2011Brief History of C++ • Maintaining compatibility • Nested templates • Type inference • Range based for-loops • Lambdas • Null pointer • Explicit conversion operators • Overridden and final methods • Defaulted and deleted behavior • Enhanced enumerations • Compile-time assertions • Shared pointers • Better random numbers • Efficient arrays • Unordered sets & maps • Regular expressions • Asynchronous calls & futures • Mutex
Looking for team-based training, or other locations?
Complete an on-line form and a Doulos representative will get back to you »
Back to top