Advanced C++ (C++ Traps and Pitfalls)
[This was the original short description of the course. A more detailed description is available here.]
Although C++ is highly flexible and efficient, its very flexibility coupled with a very mixed parentage means that it supports just-about-anything-oriented design as well as the two commonest styles: object-oriented and generic (template). The mixed parentage also means that its syntax is complex and idiosyncratic. This hands-on course clarifies and prioritizes the language from the perspective of teaching production-quality object-oriented and generic programming in C++. This is an ideal follow-up to the introductory Hands-On Object-Oriented Design & Programming using C++ course.
The course lasts four days. If it is being taken as a follow-up to the introductory Hands-On Object-Oriented Design & Programming using C++ course, we recommend that a practice period of three or four weeks be allowed to elapse between taking the two courses.
Each day typically starts at 09.00 and finish at 16.30. The course is based on a cycle of theory-language-practice-review, with two or three cycles each day. One non-trivial, practical case-study is developed during the course.
The course is aimed at software engineers who already have a basic knowledge of C++. Some knowledge of object-oriented design principles would also help participants to get the most from the course.
- To know C++ syntax and usage in detail;
- To be aware of the influences that made C++ the language that it is;
- To know the subset of C++ that object-oriented C++ would typically deploy, and why;
- To have practised assembling an industrial-strength, production-quality class;
- To know the subset of C++ that generic (template-based) C++ would typically deploy, and why;
- To have practised creating a template class;
- To know what one would expect to find in a typical C++ style guide, and why;
- To know of the majority of C++'s traps and pitfalls in detail;
- To be aware of the differences between classic C++ and standard C++;
- To be aware of the contents of the standard library, including the STL;
- To have practised using a range of provisions from the standard library, including streams, exceptions, containers, iterators, algorithms and function objects;
We recommend that there are no more than 10 participants, each working at his or her own machine.
- Facilitation of discussions
- Direction, assistance and feedback on exercises
- Proposed solutions to the exercises
- Copies of lecture slides, plus explanatory text and summaries
- Reference list of books and sources
- Introductions to, and organization of, C++
- Expressions and statements
- The type system
- Class details
- Special functions: default and copy constructors, copy assignment operator and destructor
- Operator overloading
- C++ and memory
- Smart pointers and memory
- Inheritance in detail
- Templates and the STL
- One PC with Visual C++ (version 6 or .NET), per participant (including one for the lecturer), preferably networked and with a printer
- Data projector of at least 1024 x 768 resolution, and suitable screen
- White-board, preferably not doubling up as the projector's screen; blackboard and chalk are acceptable
- Flip-chart and easel, with additional flip-chart paper
Please contact John Deacon by telephone on +44 20 7498 3773; by fax on +44 20 7498 3747; by emailing email@example.com; or by visiting http://www.jdl.co.uk
[ Home page | Courses List ]
Copyright © 2010 John Deacon. All rights reserved.