Tuesday, January 4, 2011

New Training Course: "Fastware for C++"

I've been working intermittently on a book to be called Fastware!  for the past few years. (You can find information about it at its web site.) That project is currently on the back burner, because I ran into two difficulties.  First, I realized that the scope of the project -- encompassing topics in hardware, systems design, concurrency (both thread-based and distributed), algorithms, data structures, tools for improving performance, and more -- was not only going to be impossible to fit within 300 pages, it was also probably beyond my ability to fully comprehend.  Second, the fact that the book was to be language-independent meant that I'd be unable to push my technical treatments down to the level of detail that I and my readers are accustomed to.

These challenges interfered with my work on the book, but they did nothing to diminish my interest in the production of low-latency software systems, so I decided that a reasonable alternative approach was to take my long-established High-Performance C++ Programming training course, update it to acknowledge the emergence of compilers supporting features from C++0x, and expand it to include selected performance topics beyond C++ and its standard library. The result is a new two-day training course that draws heavily on my original vision for Fastware! while still assuming that C++ is the implementation language:  Fastware for C++.

Fastware for C++ covers hard-core C++ performance-related information such as how to avoid the creation of unnecessary objects and how to use the STL efficiently, but it also covers the impact of CPU caches on data structure and algorithm design, the need to optimize the performance of code you don't control (e.g., third-party libraries), commonly-available concurrent algorithms and data structures modeled on the STL, build-time optimization via profile-guided and whole-program analyses, and more. For details, consult the course's web page, and if you're interested in technical training on low-latency software systems in C++, I hope you'll keep it in mind.



Dan said...


Congratulations. For whatever it's worth, I think you made the right choice about Fastware (focusing on C++).

Question: any chance you are planning on selling the presentation materials separately, as you did with a couple of the other courses?

Scott Meyers said...

I'll probably look into selling the training materials at some point, but the issue is complicated by the fact that some of the material in this course comes from my books, and all the books' content is copyrighted by my publisher, Addison-Wesley. That means I'd have to get their permission to sell the notes. I suspect I could work out an arrangement, but it's a complicating factor that did not arise for the course materials I currently sell.

If I make the materials for this course available for purchase, I'll post about it here, of course.

Nicolas said...


I'm a little disappointed, because this book was everything I was looking for.

Like Dan said, I would be very interested in training materials too.

I'm working in the algorithmic trading systems, and I think this kind of book would become immediately a must-have in this world.

Thank you anyway for your previous books I loved.

Scott Meyers said...

@Nicolas, the timing of your comment is good, because I'm planning my "big" project for 2012, and a leading candidate right now is work on Fastware, both as a training course and also as a book. This isn't a promise that anything will happen, because each year has more candidate "big" projects than I have time for, but right now, I'd say the chances of something happening in this area are good. If you can elaborate on what topics you'd find most useful in a book on Fastware, I'd love to see them.