Prototyping involves rapidly developing an initial version of a system to validate requirements and gain user feedback. There are two main approaches - evolutionary prototyping iteratively develops prototypes into the final system, while throw-away prototyping discards the prototype after validating requirements. Rapid prototyping techniques include using high-level languages, database programming, and component reuse to quickly develop initial versions. User interface prototyping is also important to get early user input on look and feel.