Event driven programming is a style of programming which essentially boils down to the concept of a program being a consumer of a stream of events to which the programmer creates code to react. This style of programming is very popular in software which has to interact with a user directly since it very readily lends itself to user interface programming.

Commonly such programs consist of some amount of setup, then an event loop which dispatches events. What is interesting is that once you get used to writing software in an event driven fashion then you start to find such event loops in the most unexpected of places. A little while ago, we talked about state machines and they are useful tools for managing event driven programs because they are inherently an event processing model.

Your homework for today is to go and look at projects you have and consider if they have event loops in them, and if so, look at whether or not you've state machines handling those event streams. Once you've done that, have a look around in other software and try and identify event loops in different kinds of software. To get your started, most UI toolkits are event-driven, as is the Minecraft mod called Computercraft.