Multi-disciplinary teams get together to develop solutions to a specified problem or along a specified theme.  Hackathons are typically short, running anywhere from a 8 hours to 1-2 days, and have prizes for participants based on the quality and/or uniqueness of their contributions.  Competitions are more variable, and can range from a Hackathon level event up to a semester long event with multiple round and presentations.