Learn basic steps of data analysis and how to use Python and its packages
A step-by-step guide to predictive modeling including tips, tricks, and best practices
Effectively visualize a broad set of analyzed data and generate effective results
The purpose of this book is to give you a thorough introduction to competitive programming. It is assumed that you already know the basics of programming, but no previous background in competitive programming is needed.
Fergus Henderson has been a software engineer at Google for over 10 years. He started
programming as a kid in 1979, and went on to academic research in programming language
design and implementation. With his PhD supervisor, he co-founded a research group at the
University of Melbourne that developed the programming language Mercury. He has been a
program committee member for eight international conferences, and has released over 500,000
lines of open-source code. He was a former moderator of the Usenet newsgroup comp.std.c++
and was an officially accredited “Technical Expert” to the ISO C and C++ committees. He has over
15 years of commercial software industry experience. At Google, he was one of the original
developers of Blaze, a build tool now used across Google, and worked on the server-side
software behind speech recognition and voice actions (before Siri!) and speech synthesis. He
currently manages Google's text-to-speech engineering team, but still writes and reviews plenty
of code. Software that he has written is installed on over a billion devices, and gets used over a
billion times per day.
It can be argued that the current free-software movement is the most important thing happening in computing today. We are in the midst of a major shift from all software being proprietary and closely held by individual companies to a large body of software that can be freely acquired and used by anyone for any purpose. Free software now includes not only programming language compilers and linkers, but numerous utilities, graphical user interface environments, and even entire operating systems.
In many environments, multi-threaded code is written in a language that was originally designed without thread support (e.g. C), to which a library of threading primitives was subsequently added. There appears to be a general understanding that this is not the right approach. We provide specific arguments that a pure library approach, in which the compiler is designed independently of threading issues, cannot guarantee correctness of the resulting code.