Event driven programming is a programming paradigm where the flow of the program is determined by events such as user actions, sensor outputs, or messages from other programs or devices. The program waits for these external events to occur and then triggers a response by executing appropriate event handler functions. This contrasts with procedural programming which follows a linear sequence of instructions. Event driven programming is commonly used for graphical user interface programs and operating systems, but can also be applied to non-GUI programs like burglar alarms or process control systems that need to respond to external stimuli.