A system that allows your program to interact with other software. Think of a waiter in a restaurant; You need to get your order to the kitchen so they can give you food. The waiter acts as the messenger, so both you and the kitchen are happy.

We've colour coded the resources depending on the audience:

Beginner Medium Advanced