Presentation on why we need to consider using programming models that enable us to get the best out of the hardware by embracing asynchronous programming model. Starts from basics & builds on hardware primitives such as caches & moves up the programming abstraction all the way till Java