This document discusses asynchronous programming in C# 5. It begins with an introduction to asynchronous concepts like concurrency and parallelism. It then covers the need for asynchronous programming, and how the Task Parallel Library in C# 4 helped address this need. The document goes on to explain the new keywords introduced in C# 5 - async and await - that allow asynchronous code to be written in a synchronous-looking way. It provides an example of using async and await. In summary, the document outlines the concepts around asynchronous programming and how C# has evolved through C# 4 and 5 to better support asynchronous operations.