AsyncIO terminology

As we recently discussed, the support for asynchronous programming in Python is implemented through the use of an event loop and co-routines. But what exactly are they? Let's take a look: