Training and Consulting
I offer training services in a large spectrum of topics. They cover C++ programming, software design and architecture and many topics about and around embedded systems.
We can either setup the content together, tailored specifically for your needs, or you chose one of the pre-composed training below. For a preview you can have a look at my public talks. The difference between a talk and a training is, that in a talk I'm more a storyteller while in a training I work together with the students. My goal is that they understand the content we've gone through. It is less important to me to cover every single slide, I prefer that what was covered is understood.
Why my Training?
My personal motto is "write unique code". I like to reduce the code written to the parts really necessary. Duplication can be handled by templates or functions such that in the end each and every piece of code uniquely contributes to the code-base. Having only unique code reduces maintenance and with that gives you more time to focus on your next customer need. An addition all my training classes are focused on practice.
The training sessions are either lecture only presentations or lecture with exercises. In any case, my sessions are highly interactive. I like to hear what the attendees think to give better tips and a more customized training experience. Every attendee has the opportunity to participate and ask questions.
For the live-demo parts, which are an essential part of my classes, I use two tools you may have heard of:
Training Sessions Offered
All training sessions are available in German and English.
The listed lengths are approximate. The first length is without exercises, the second includes exercises.
- C++1x for Embedded Systems (compact) (length: 1 day / 2 days)
The flexibility of the C ++ language has improved even further with the new features of the standard C++11 and its successors. Some of these innovations are particularly interesting for embedded systems. To move computations from run to compile time is now possible. This results in a smaller code and an increased speed. Are you also tired of writing ++i and still trying to get > and >= right on occasion? C++1x supports you by leaving recurrent writings of this type to the compiler. As a result, you gain more time to write really sophisticated code.
- C++1x für eingebettete Systeme kompakt (length: 1 day / 2 days)
Die Flexibilität der Sprache C++ hat sich mit den Neuerungen durch den Standard C++11 und seinen Nachfolgern noch weiter verbessert. Einige dieser Neuerungen sind für eingebettete Systeme besonders interessant. Berechnungen von der Lauf- in die Compile-Zeit zu verschieben ist jetzt möglich. Dadurch entsteht ein kleinerer Code und eine erhöhte Geschwindigkeit. Die Flexibilität der Sprache C++ hat sich mit den Neuerungen durch den Standard C++11 und seinen Nachfolgern noch weiter verbessert. Einige dieser Neuerungen sind für eingebettete Systeme besonders interessant. Berechnungen von der Lauf- in die Compile-Zeit zu verschieben ist jetzt möglich. Dadurch entsteht ein kleinerer Code und eine erhöhte Geschwindigkeit.
- C++ Templates - die richtige Dosis kompakt (length: 1 day / 2 days)
Nahezu alle C++ Programmierer und Programmiererinnen nutzten Templates, häufig indirekt durch Verwenden der STL (Standard Template Library). Obwohl Templates bereits sehr früh Teil von C++ waren gibt es immer noch Vorbehalte und Missverständnisse. Im Seminar wird gezeigt, dass Templates gerade im Bereich eingebettete Systeme durchaus ein Gewinn sein können.
Richtig verwendet sind Templates ein sehr hilfreiches Werkzeug, welches C++ Nutzende kennen sollte.
- A tour of C++11 and C++14 (length: / 3 days)
This is an especially interesting training for people coming from a pre C++11 background or with only rudimentary C++11 / 14 experience. We first look on the new language features C++11 and 14 bring us. Next we look into
constexprand lambdas. We continue with what's new in the template world. After that, we discuss move semantics. The last part is about some innovations in the STL.
- New language features in C++11 and beyond (length: 0.5 day / 1 day)
We have a look into the new language features we got since C++11. This is a good starter for people coming from a pre C++11 background. Here we discuss things like uniform initialization,
auto, range-based for-loops, constructor inheritance (and more around classes),
- Lambdas Demystified (length: 0.5 day / 1 day)
Lambdas are a powerful new feature we got with C++11. They got updated with every single standard since then. In this session we will peak behind the scenes on how lambdas are implemented and how they work. We then will look into a couple of application areas of lambdas. Where they can help to improve your code. This session concludes with a brief outlook on what is coming with C++20.
- Templates with C++11 and above (length: 0.5 day / 1 day)
C++11 gave us with variadic templates a new powerful tool to write our code. In this session we will look briefly at templates in general how they work and how they can improve our code. Then we continue with variadic templates and the new things possible with them.
- Control Your Code Footprint (length: 1.5h)
Especially in embedded systems with a limited amount of resources the resulting footprint is important. Participants will learn how to control the resulting footprint. Part of it is to learn how to deal with execution speed, RAM or ROM usage.
- Incorporate Modern C++ in Legacy Code (length: 1.5h)
With the rise of C++-11 there is a lot more change in the world of C++. The new standards bring some very interesting features. This talk will highlight these with the focus on embedded systems development.
- Write Efficient C++ Code for Embedded Systems (length: 1.5h)
Embedded systems are getting more and more popular. Nearly everywhere you look you can discover them. There is a little change regarding the available resources on such devices. However, it is still important to control the resulting code footprint and the safety of the code. This training covers the use of templates and how to avoid code bloat.
- Use the Power of the Language to Write Better Code (length: 1.5h)
If you write code for living and you care about your code, then you might be interested in the topics covered in this training. Here you will learn about how to express yourself in code. How to transfer your intention to others, not only the compiler.
- What is Modern C++ and Why Should I Care (length: 1.5h)
There is a lot of about talks about modern C++. With C++-11 and its successors the language has become a new attraction. Thinking has changed. Now things can be done differently in C++. Still close to hardware, if you like it. However, programming should be safer and still fast. One item are raw pointers versus all the container types. In this training you will learn about new patterns of C++ and why they are helpful.
All courses can be combined to create customized courses that meet your needs. Please contact me directly, if you are interested in my training or consulting services.