http://www.realtransit.org/nec7.php has some interesting charts and analysis of the speed limits on the various segments of the Northeast Corridor. Note that the values shown are not necessarily what it achieves in practice, but there's seemingly potential to address that via operational changes and small, targeted capital spending.
Not a book, but https://hackattic.com/ is in this vein. It's not the standard coding challenge website it may seem to be, instead a collection of small projects representative of the core ideas underlying "real world" systems. It provides just enough scaffolding and direction to get one started down the path of autodidactic exploration; satisfying and enlightening without being frustrating.
Summit and Sierra are two planned DOE machines with hardware developed in collaboration with IBM and Nvidia. They're slated to feature Volta GPU, a generation past P100's Pascal.
Another worthwhile list to look at is the Green500 [1], which ranks machines based on MFLOPS/Watt. With the exception of a few GPU and Xeon Phi heavy machines at the top, the high end is dominated by IBM's Blue Gene machines.
The arrow operator and identifiers with leading underscores seem to be glossed over or skipped fairly often in education. It's intimidating to look at code that uses them if you don't know what they are.
I always thought that "all identifiers with a leading underscore were reserved". I just consciously ignored it, and have never had a problem in years. But I was also always using member variable names like "_children", "_childCount", etc, not "_Children".
In fact, here's a reference: http://msdn.microsoft.com/en-us/library/e7f8y25b(v=vs.80).as... (It's in a "Microsoft Specific" block but says it's part of the ANSI C standard.) It applies to C, and it also applies to identifiers staring with two underscores.
The C Standard reserves identifiers starting with a leading underscore for the system implementation (C standard library, Posix libraries, etc). They aren't meant for use by user code (or rather, you can use them, but they might conflict with system defined identifiers).