A hackathon is a design event where computer programmers and others involved in software development collaborate intensively on software or hardware projects over a short period of time, usually 1-7 days. The goal is typically to create usable software, though sometimes hackathons are intended for educational or social purposes. Hackathons often focus on a specific programming language, operating system, application, or demographic group. There are no restrictions on the type of software created.