The ICFP Programming Competition is an international programming competition that has been held in June or July every year since 1998. The results were presented at the International Conference on Functional Programming. Every functional programmer dreams to be a part of the final rank list of ICFP. But the problem is how to prepare for ICFP? Well, worry no more. We have curated this article just for that.
In this article, we will give you a complete guide to help you understand every aspect of ICFP like its eligibility, registration process, how to prepare for ICFP, and much more. So, let’s get started.
What is ICFP programming Competition?
- The ICFP Programming Competition is an international programming competition that has been held in June or July every year since 1998. The results were presented at the International Conference on Functional Programming.
- Teams can be of any size and can use any programming language. There is no admission fee. Each year, ICFP sponsors fun and challenging three-day programming competition a few months before the conference. The winners of the contest are announced at ICFP. In many cases, there is also a 24-hour lightning division.
- Winners reserve the “right to brag” to claim that their language is “the best programming tool for discriminatory hackers.” Therefore, one of the contest’s goals is to show participants the skills of their favorite programming languages and tools. Previous award winners used Haskell, OCaml, C ++, Silk, Java, F #, and Rust.
- Contests usually have about 300 entries
Eligibility criteria for ICFP:
- Eligibility for ICFP programming contests is extremely flexible.
- Anyone who can code can participate in the contest, including undergraduates, graduate students, post-graduate students, and even faculty members can participate in the ICFP programming competitions.
Rules of ICFP programming competitions:
- This is an open competition. Anyone can participate in the 2021 ICFP Programming Contest except the organizer of the 2021 ICFP Programming Contest.
- No pre-registration or entry fee is required.
- Participants are free to organize into teams of any size. Athletes can only be members of one team. Teams cannot be split, integrated, or collaborated once the competition has begun.
- Teams are free to use any programming language on any platform.
- Teams must register during the competition to receive login credentials. Teams using multiple credentials during the competition will be disqualified.
- Teams wishing to consider prizes must submit the source code at the end of the contest. The exact details of the contest entry will be announced at the start of the contest. Teams can submit multiple times during the competition. Early entries may be screened for live scoring contests, but prizes will only be awarded for the latest entries in the Lightning category and the entire contest.
- The Organizer reserves the right to monitor, record and investigate entries by participants and teams, other competition-related activities, or their lack. Records will be used for judging purposes only and destroyed at the end of the competition-related event.
- Participants are asked not to try to attack the competition server, this will ruin the fun for the other teams and organizers who have worked hard to bring you this experience.
- Violations of these rules attempt to compromise the integrity of the competition infrastructure attempt to confuse other competitors, collusion between teams, or attempts to violate the spirit of the competition will lead to disqualification of the team involved.
- Applicants retain ownership of all intellectual property rights in all solutions, source code, custom tools, and related materials (“Applicants”) submitted prior to submission. As a condition of entry, the applicant grants the organizer a non-exclusive, permanent, irrevocable, worldwide royalty-free license to use, copy, publish, distribute, publicly execute, and publicly display the submitted work. And allow the organizer to test and evaluate the entry. Submission for contest purposes.
- All decisions of the organizer are final.
How to participate in ICFP programming contest?
- To participate in the ICFP programming contest, you need to visit their official website and register yourself and your team.
- Participants need to form their own teams of any size who will be working together with a programming language. There is no entry fee to enter the contest. Only willingness to be available throughout the contest to complete various tasks and milestones.
- The total time of the tournament is 72 hours, but the team that managed to reach the top of the leaderboard after 24 hours has a special prize (Lightning category prize).
- You can sign up for their official website and keep an eye out for the latest information.
- You can also apply to become a student volunteer during the meeting. An application for this is available on their website.
- If you are interested in research, they are also accepting student research treatises presented at the conference.
Preparation tips to ace the ICFP programming contest:
- You can enroll in a programming program for internships and practice coding skill questions that will help you better understand the programming language.
- The competition is also a test of who has the solution first and who has the best solution.
- Try to pay attention to both speed and accuracy.
- Find out about functional programming best practices and make sure you apply them when preparing your solution.
- See your programming language documentation. You can be sure to collect a lot of information about what you can do with a programming language.
- Try to be consistent on various coding platforms such as CodeChef, codeforces, and geeksforgeeks etc.
Previous Year problems of ICFP contest:
YEAR |
PROBLEM |
---|---|
2018 | Optimize 3D printing conducted by a swarm of nano bots |
2016 | unfold origamis (plane shapes made of digital paper), i.e., reconstruct the simplest possible flat models by their crease patterns. |
2014 | Implement AI for a Pac-Man clone. |
2013 | Given an unknown function F(x) which maps 64bit integers to 64bit integers, sample outputs of F to guess the function. |
2012 | Dig through the earth to collect Lambdas, but watch out for falling rocks and other dangers! |
2011 | Play a card game, where the cards are lambda-calculus functions and combinators. |
2010 | Design car engines and fuels, and post them to a realtime market to earn points. |
2009 | Pilot an orbiter to dock with various pieces of space debris, and change their orbits to reach other orbiting bodies. |
2008 | Drive a Mars rover from its current location to home base, avoiding craters and martians. |
2007 | Reprocess alien DNA to convert a source image to a target image. |
2006 | Implement a bytecode VM, and boot into an ancient OS to solve more algorithmic challenges. |
2005 | Write AI for Cops (hunt a robber) and Robbers (rob banks). Cops from multiple teams come together to hunt a single Robber. |
2004 | Design an ant colony that successfully gathers food, and defends its nest from other intruders. |
2001 | Optimize a variant of XHTML. |
2000 | Implement a ray tracer. |
1999 | Given a state machine representing a character in an interactive fiction as an s-expression, write an optimizer to losslessly compress the state machine for various measurements of cost. |
Frequently asked questions:
1. How can teams stay informed of updates during the contest?
The contest website is the authoritative source of contest information. Noteworthy updates will be added as posts to the main homepage and tweeted by @icfpcontest2019.
2. How can teams contact the contest organisers during the contest?
Teams are welcome to send enquiries to icfpcontest2019@gmail.com or ask questions by sending tweets to @icfpcontest2019 (although the latter might be responded with some delays).
3. What will teams be required to submit during the contest?
The exact details of contest submissions will be announced at the start of the contest.
4. Will teams be required to submit source code during or after the contest?
Yes. All teams wishing to be considered for prizes must submit source code at the end of the contest.
5. Does the scoring system pick the best result for each task of all submissions or the last one submitted?
Only the last submission of each team is considered when computing what the best score for a given task is. Make sure to submit your best solutions every time.
Conclusion:
- ICFP is a great way to test and improve your coding and Functional programming skills while competing with the best minds from around the world. If you think you have what it takes to bring home the coveted ICFP contest, start your preparations right away!
- Success in the ICFP programming contest will definitely add value to your resume while pursuing internships on and off campus. Apart from crediting your resume, it’s always good to stay in a contest to test your coding skills.
- It makes you a better developer and keeps looking for problems that exist in the world. Your only job as an engineer is to use technology to help humanity lead a better life.