C++ Best Practices in Design

Masterclass offered by: ir. Jacques de Hooge

Whom is this masterclass for

You've learned C++, probably during your academic education, and you can make good use of this language in everyday practice. You understand the relation between pointers, references and arrays, as well as the principles of dynamic memory management. You are able to use headers systematically as interfaces to hierarchically ordered modules and you can use classes, multiple inheritance, virtual functions, polymorphism and templates in an effective way. You know how operator overloading works, and you can find your way around in the STL. You can combine all of this to create the required functionality. But still...

You would want to have much more design experience. How do you take advantage of a large set of partially overlapping language facilities in the best way to achieve a good design: reliable, understandable, flexible and efficient. You are strongly interested in the answers to such questions and, while you already made quite some kilometers in C++, you notice that you learn something each day. You will get where you want to be, just by your own experience. But you also can spead up this process greatly by taking advantage of my experience. There's no substitute for independent thinking, however by putting my 30+ years of programming experience at your service, I'll show you a breadth and depth that will be fertile ground for new ideas.

What will you learn

What does the masterclass C++ look like

For the masterclass C++ you work in a group of 10 persons at maximum for 8 sessions of 2 hours each. The costs of a 2 hours lesson are €60,-. Expect to spend at least 3 times this amount of time working on the assignments on your own. You receive an invoice that you can present to your employer if required.

The provisions made with "Whom is this masterclass for" are taken seriously: it's assumed that you indeed enter the masterclass at the required knowledge level. If this isn't the case, attending a fundamental class, combined with comprehensive independent practice, is an option to reach the required entrance level.

During a free intake it's established wether your current level of knowledge and skills makes it possible to attend the masterclass C++. This intake works in both directions: you yourself are in the occasion to establish wether I can offer you enough knowledge and experience to help you lift your skills to a significantly higher level. Only after a successful intake we enter a learning agreement.

Succesful completion of the masterclass will result in a certificate signed by me and my preparedness to recommend you in case of job applications, guided by a realistic assessment of your skills.

Some practical things

If, after the intake, you want to attend the masterclass, you enter your learning agreement directly with me. The costs are to be paid after the intake but before the start of each lesson. Because coaching is done on an individual level, also the start and end date are agreed upon individually. So the students are all at different phases.

You're responsible for bringing your own laptop with the appropriate software installed: a good C++ compiler, e.g. Microsoft Visual C++, GCC or CLANG. It's important to have all installed software work well before you start with your masterclass. The experience is that otherwise you loose a lot of valuable time. You work on your software in the lessons but also at home. Non-standard language extensions and wizzard-generated code are not taken into account during the masterclass.

What's needed besides a compiler is a good code editor, e.g. Notepad++ or GEdit. While source level debuggers and IDE's can be of use and you're welcome to use them if you want, there are no demands made upon these features in the lessons and no attention is paid to them. A good mental model of your code and a command line compiler is all you need.

The location of the training depends upon the number of participants. We strive for a location within 5 km of the centre of Rotterdam.

In conclusion

C++, a superset of C, is the language used for 'high performance computing'. Wether we're talking about medical image procesing, seismic surveys, weather prediction, consumer electronics, state of the art games, flight simulators, real time controls, building a database management system, office software, operating systems, compilers or scripting language intepreters, if the rough speed, memory efficiency and/or complete control over the hardware on a multitude of platforms is required, C++ is the way to go.

Given the fact that most developers go for the low hanging (Internet) fruit, it's very hard to find truly competent C++ developers. The power and the possibilities of the language are unparalled, but it requires significant knowledge and experience to make good use of these possibilities. Do you want to further specialize in this solid foundation of information technology? Here's the opportunity!