Event driven programming uses graphical user interface elements like forms, controls, and events to build interactive programs. Key aspects include forms that contain controls for user interaction, trigger functions that specify code for different control events, and an event loop that detects user interactions and runs the corresponding event handler code. Event driven programming is well-suited for GUIs and allows programmers to gradually build up programs by adding and coding individual controls. However, complex programs with many forms can be confusing for users and errors may be harder to detect than in simpler programs.