List of List
List of Lists | ||
---|---|---|
Awesome curated lists classified by topics. | ||
☆ | Name | Description |
★★★ | A collection of fantastic tutorial blog posts written by Codeforces users. Some intriguing ones include Palindromic Trees, Policy Based Data Structures, and a lot more. | |
★★★ | Another good collection of tutorial blog posts written by Codeforces users. | |
★★★ | A very complete list of competitive programming resources. A must-have in your browser bookmark. | |
★★★ | A detailed walk-through of the preparations for ACM-ICPC. | |
Syllabuses | ||
Find out what topics you need to learn. | ||
☆ | Name | Description |
★★★ | A detailed syllabus on which IOI contestants will be tested. This is still somewhat relevant to ACM-ICPC. | |
★★★ | A detailed walk-through of the preparations for ACM-ICPC. | |
★★☆ | A list of important topics in competitive programming with exercise problems. | |
★★☆ | Juniors Training Sheet, by Mostafa Saad Ibrahim | ~800 ordered problems for newcomers to be good up to Div2-D |
Tutorial Websites | ||
Awesome websites with great tutorials. | ||
☆ | Name | Description |
★★★ | A list of tutorials written by respected Topcoder members. Many top programmers started learning data sciences from here. | |
★★★ | E-Maxx (Russian), (English) | A tutorial website widely used and referenced in the Russian-speaking competitive programming community. Most of the articles of the original site have been translated into English, Google Translate works okay for the remaining ones. |
★★☆ | A website with a large archive of nicely written articles on different topics. It is a great complimentary resource for algorithm courses. | |
★★☆ | A website with amazing in-depth wiki-like writeups on many topics. It's far better than those on Wikipedia in my opinion. | |
★★☆ | ||
★★☆ | Contains several training pages on its website which are designed to develop one's skills in programming solutions to difficult and varied algorithmic problems at one's own pace. | |
★★☆ | A blog with in-depth, illustrated tutorials on basic algorithms and data structures. | |
★★☆ | Short video tutorials for beginner and intermediate concepts. Advanced tutorials selected from the best ones available on various CP blogs. | |
★☆☆ | An international journal focused on the research and practice of professionals who are working in the field of teaching and learning informatics to talented student. | |
★☆☆ | A Russian website devoted to algorithms of all sorts. Some topics listed on this website seems pretty interesting. | |
★★☆ | One of the most popular tutorial websites among the Taiwanese competitive programming community. The maintainer for this website spends immense efforts on researching algorithms. | |
★★☆ | Papers from the Chinese IOI training camps. It's interesting for the fact that one can tell different regions emphasize different things. | |
★★★ | Mini-Editorials, by Mostafa Saad Ibrahim trainees | Solutions with mini-editorials for many problems, including UVA/SPOJ/IOI/Olympiad problems |
★★☆ | OI Wiki is committed to being a free and open continuously updated programming competition (competitive programming) knowledge integration site. This wiki is a sort of companion or guide for the competitive programmer who's trying to learn something | |
Open Courses | ||
Consider beginning your competitive programming journey with these awesome courses! | ||
☆ | Name | Description |
★★☆ | A fantastic step-by-step tutorial on the essential topics in competitive programming. | |
★★★ | Offers comprehensive lecture slides and a short list of exercise problems. | |
★★☆ | A course by ITMO University on competitive coding on edX. | |
★★☆ | ||
★★☆ | ||
★★☆ | A course on basic topics featuring good lecture slides. | |
★☆☆ | Materials (English) from Arabic Competitive Programming YouTube Channel | Some materials (slides & source codes) covering a broad range of algorithmic topics by Mostafa Saad Ibrahim. |
Open Courses for Algorithms and Data Structures | ||
☆ | Name | Description |
★★★ | A fantastic list of open courses offered by notable institutions (MIT, Stanford, UC Berkeley ... etc.). | |
★★★ | Lectured by Prof. Charles Leiserson (one of the coauthors of Introduction to Algorithms) and Prof. Erik Demaine (a brilliant professor who has made remarkable breakthroughs in data science), the course offers great materials, accompanied by intuitive and comprehensive analyses. | |
★★☆ | lecture notes, homeworks, exams, and discussion problems covering a broad range of algorithmic topics | |
Books | ||
A list of recommended books for competitive programming. | ||
☆ | Name | Description |
★★☆ | ||
★★☆ | This book includes more than 100 programming challenges, as well as the theory and key concepts necessary for approaching them. Problems are organized by topic, and supplemented by complete tutorial material. | |
★★☆ | ||
★★☆ | This is a well-written book which covers a broad range of computational geometry problems. | |
★☆☆ | ||
Books for Algorithms | ||
☆ | Name | Description |
★★★ | ||
★★☆ | ||
★★☆ | ||
★★★ | This book is neatly categorized, coupled with elaborate explanations and fantastic illustrations. It is used in some IOI training camps as a textbook. | |
This book provides a different approach to algorithms, balancing theory with a more practical angle, with a section per-chapter focusing on how to apply algorithms to real-world use cases that can be found in your daily work, or in competitive programming; it also presents a blend of classic, advanced, and new algorithms. | ||
★★★ | A free electronic version of a self-published textbook licensed under CC by 4.0. This is a well written book from lecture notes of theoretical computer science courses at the University of Illinois. Covers the main paradigms of backtracking, dynamic programming, greedy, and particularly graphs in depth. | |
Books for Mathematics | ||
☆ | Name | Description |
★★☆ | Discrete Mathematics is closely relevant to competitive programming. This book provides comprehensive materials on a wide range of topics including: Logics and Proofs, Sets, Functions, Sequences, Matrices, Number Theory, Recursion, Counting, Probability, Graphs, Trees and Boolean Alegra to name but a few. | |
★★☆ | The book offers a deeper insight into Discrete Mathematics with more emphases on number-related topics. | |
★★☆ | The book does a brilliant job at bridging the gap between a physical system (for scientists and engineers) and an abstract system (for mathematicians). | |
★★☆ | ||
★★☆ | An old-time classic. In this book, the author provides a systematic way to solve problems creatively. | |
★★☆ | Topics in counting and probability byformer USA Mathematical Olympiad winner David Patrick , topics include inclusion-exclusion, 1-1 correspondences, the Pigeonhole Principle, constructive expectation, Fibonacci and Catalan numbers, recursion, conditional probability, generating functions, graph theory, and much more.. | |
Sites for Practice | ||
Good online judge systems / contest platforms to practice. | ||
☆ | Name | Description |
★★★ | Codeforces is one of, if not, the most popular contest platforms out there. Currently maintained by Saratov State University, it features regular contests and countless awesome original problems. Additionally, every contest provides immediate helpful tutorials (usually) written by the authors themselves. Codeforces also houses a strong and engaging community. All in all, one would indeed learn and improve tremendously here. | |
★★★ | Topcoder has been around since 2001. Rich in history, It's considered to be one of the most prestigious organizations when it comes to technology competitions. Hundreds of SRMs gave birth to an abundant problemset. Problems here are typically more challenging than others and Topcoder therefore appeals to many elite programmers. The annual Topcoder Open (TCO) is also a widely-discussed event. | |
★★★ | Google Code Jam is certainly one of the most highly-esteemed programming competitions. The competition consists of unique programming challenges which must be solved in a fixed amount of time. Competitors may use any programming language and development environment to obtain their solutions. | |
★★★ | AtCoder is a new but phenomenal contest platform created by a team of highly-rated Japanese competitive programmers. | |
★★☆ | CodeChef is a non-profit educational initiative of Directi. It's a global competitive programming platform and has a large community of programmers that helps students and professionals test and improve their coding skills. Its objective is to provide a platform for practice, competition and improvement for both students and professional software developers. Apart from this, it aims to reach out to students while they are young and inculcate a culture of programming in India. | |
★★★ | ||
★★☆ | Timus Online Judge is the largest Russian archive of programming problems with automatic judging system. Problems are mostly collected from contests held at the Ural Federal University, Ural Championships, Ural ACM ICPC Subregional Contests, and Petrozavodsk Training Camps. | |
★☆☆ | HDU is an online judge maintained by Hangzhou Dianzi University. It's home to many classic problems from the Chinese IOI scene. | |
★★☆ | Aizu online judge is a contest platform and problem archive hosted by The University of Aizu. It has a lot of great problems from programming competitions in Japan. | |
★★☆ | ||
★★☆ | HackerRank is a company that focuses on competitive programming challenges for both consumers and businesses. HackerRank's programming challenges can be solved in a variety of programming languages and span multiple computer science domains. | |
★★☆ | POJ is an online judge with many great problems maintained by Peking University. Most Chinese competitive programmers began their journey here. The platform is really dated so mysterious compilation and run-time issues may occur. | |
★★☆ | Project Euler features a stunning set of good math problems. It also hosts a forum where people can discuss. | |
★☆☆ | HackerEarth is a startup technology company based in Bangalore, India that provides recruitment solutions. | |
★☆☆ | COJ is hosted by University of Informatics Sciences (UCI, by its acronym in Spanish), located in Cuba. Feature ACM ICPC and Progressive contest styles, mostly from Caribbean and Latin American problem setters, also has problem classifier and contest calendar. | |
★★☆ | New in the competitive programming scene, CS Academy is a growing online judge that hosts competitions once every two weeks. It supports live chat, interactive lessons and an integrated online editor (that actually works). | |
★★☆ | Programming competitions powered by Mail. Ru Group. Competition consists of 3 qualification, 1 elimination and 1 final rounds. For each round contestants are given 4-8 problems which must be solved in a fixed amount of time. | |
★★☆ | CodeFights is a website for competitive programming practice and interview preparation. It features daily challenges of varying difficulty, an archive of problems and regular (every 15 minutes) mini-tournaments. Good for beginners. | |
Problem Classifiers | ||
Sites classifying programming problems. | ||
Choose a category (eg. DP) of interest and practice problems on that topic. | ||
☆ | Name | Description |
★★★ | Mixed | |
★★★ | SPOJ | |
★★☆ | CP Book | |
★☆☆ | CF (DP) | |
★★☆ | HackerRank | |
★★☆ | Juniors Training Sheet, by Mostafa Saad Ibrahim | ~800 ordered problems for newcomers to be good up to Div2-D |
★★☆ | UVa | |
★★☆ | List of problems with categories and complexity levels | |
Contest Calendars | ||
Calendars for impending programming contests. | ||
(Never miss another contest!) | ||
☆ | Name | Description |
★★★ | Google Calendar export available | |
★★☆ | API available for use | |
★★☆ | ||
★★☆ | Coder's Calendar: Android App, Chrome Extension, Firefox Add-on | |
★★★ | CodeHorizon: iOS App, Android App | |
Sites for Questions | ||
These are great sites to ask questions. | ||
Paste your codes at ideone, pastebin or other sites to avoid formatting issues. | ||
☆ | Name | Description |
★★★ | For quick answers, Codeforces is definitely the go-to place to ask about anything competition-related. | |
★★★ | You would typically get more elaborate answers on Quora, but you might not have your questions answered straightaway. | |
★★☆ | This place is generally for the academics, so don't ask questions about contest problems here. | |
Camps and Trainings | ||
Online Trainings and Camps. | ||
☆ | Name | Description |
★★★ | Online Free Problem-Solving Coaching, by Mostafa Saad Ibrahim | See the coaching details and people comments on its nature/quality. |
Implementations | ||
Algorithm & Data structure implementations. | ||
☆ | Name | Description |
★★★ | ||
★★★ | High-quality implementations of many hard algorithms and data structures. | |
★★★ | A phenomenally organized, documented and tested team notebook from KTH Royal Institute of Technology. One of the most well-crafted team notebooks (contest libraries) I've ever seen. | |
★★☆ | Stanford's team notebook is well maintained and the codes within are of high-quality. | |
★★☆ | RR Watameda represented National University of Singapore for the 2016 ACM-ICPC World Finals. The items in this notebook are pretty standard and well-organized. | |
★★☆ | bcw0x1bd2 represented National Taiwan University for the 2016 ACM-ICPC World Finals. This notebook contains robust implementations for advanced data structures and algorithms. | |
★☆☆ | A notebook with some advanced data structures and algorithms including some from the China informatics scene. | |
★☆☆ | A good notebook by Igor Naverniouk who is currently a software engineer at Google and part of the Google Code Jam team. | |
Language Specifics | ||
Languages and other miscellaneous knowledge. | ||
C/C++ | ||
☆ | Name | Description |
★★☆ | Power up C++ with the Standard Template Library - Topcoder: Part 1, Part 2 | An introductory tutorial on basic C++ STLs. |
★★☆ | Learn more about C++ I/O optimizations. | |
★★☆ | C++ Tricks - Codeforces ... What are some cool C++ tricks to use in a programming contest? - Quora | Plentiful C++ tricks for competitive programming. Note that some should be used with care. |
★★★ | C++ STL: Policy based data structures - Codeforces: Part 1, Part 2 | |
★☆☆ | A list of FAQs regarding C++11 collected and written by Bjarne Stroustrup, the creator of C++. | |
Java | ||
☆ | Name | Description |
★★☆ | Learn how to read input faster. This is a must-read for those who intend to use Java for competitive programming | |
★★☆ | Some tips on how to avoid hitting the worst case of quick sort | |
★★☆ | A basic but faster custom BigInteger class | |
★★☆ | A Java library for contests written by Alexey Dergunov (dalex). ArrayList, ArrayDeque, Heap, Sort, HashSet, HashMap, TreeSet, TreeMap, TreeList and pair classes are implemented | |
Miscellaneous | ||
☆ | Name | Description |
★★★ | A huge compiled list of bit manipulation tricks. | |
★★★ | Everything you need to know about floating point numbers. A must read especially for geometry topics. | |
★★☆ | A detailed side-by-side reference sheet for common syntaxes. | |
Tools | ||
Awesome tools that will make your life easier. | ||
IDEs | ||
☆ | Name | Platform |
★★★ | CLI / Cross-Platform | |
★★★ | CLI / Cross-Platform | |
★★★ | Hybrid / Windows | |
★★★ | GUI / Cross-Platform | |
★★★ | GUI / Cross-Platform | |
★★☆ | GUI / Cross-Platform | |
★★☆ | GUI / Cross-Platform | |
★★☆ | GUI / Cross-Platform | |
★☆☆ | Other IDEs | Mixed |
Personal use | ||
☆ | Name | Description |
★★★ | A website featuring a large collection of visualization tools for algorithms and data structures. | |
★★★ | General Practice Helpers: ... CHelper (IntelliJ IDEA) (manual) ... caide (Visual Studio, CodeLite, standalone command line app) ... JHelper (AppCode, CLion) online-judge-tools (Stand alone CLI tool, It is actively maintained.) | Great tools that parse contests, inline library codes and provide testing frameworks. They save you from spending your precious time on switching windows and copy-pasting back and forth. |
★★☆ | Codeforces Parsers: ... Codeforces Parser ... GoCF ... cfparser (emacs) cfparser (cli) | These tools parse Codeforces contest problems and help run sample tests. |
★★★ | A stunning encyclopedia with a database of countless integer sequences. It also features a powerful search engine. Sometimes a seemingly difficult combinatorics problem could be equivalent to a simple or studied integer sequence. | |
★★☆ | Syntax Highlighters: ... tohtml.com ... markup.su ... hilite.me | Very handy for creating slides or team notebooks with pretty, formatted code snippets. Just copy the highlighted code snippets and paste them in your favorite WYSIWYG (What-You-See-Is-What-You-Get) editor! |
★★☆ | Code Sharing: ... Ideone.com ... Pastebin.com ... Ubuntu Pastebin | These tools generate semi-permanent pages for code sharing. Very useful especially when you're trying to get someone else to look into your code. |
★★☆ | A simple command-line grader for local grading. | |
★★☆ | A platform that provides expected outputs for user-specified inputs to problems on the UVa Online Judge. Some problems also provide additional test cases for debugging. | |
Contest Preparation | ||
☆ | Name | Description |
★★★ | ||
★★☆ | A fantastic tool to create and visualize graphs. | |
★★☆ | A C++ framework for generating test cases of competitive programming problems. | |
★★★ | Virtual Judge (vjudge) allows users to create virtual contests with problems from notable problem archives. | |
★★☆ | BNU Online Judge also allows users to create virtual contests. | |
★★☆ | Kattis assists in contest preparation (E-mail them for assistance). | |
Community | ||
Meet the god-like competitive programmers! | ||
Learn helpful tips, tutorials and insights from these people 😃 | ||
Blogs | ||
Name (Handle) | Blog Name | |
Petr Mitrichev (Petr) | ||
Makoto Soejima (rng_58) | ||
Bruce Merry (bmerry) | ||
Przemysław Dębiak (Psyho) | ||
Anudeep Nekkanti (anudeep2011) | ||
vexorian (vexorian) | ||
Ashar Fuadi (fushar) | ||
LiJie Chen (WJMZBMR) | ||
Huang I-Wen (dreamoon) | ||
Shiang-Yun Yang (morris1028) | ||
Yuhao Du (TooDifficuIt, TooSimple, xudyh) | ||
Youtube and Livestreams | ||
Name (Handle) | Link | |
Petr Mitrichev (Petr) | ||
Gate Lectures by Ravindrababu Ravula | ||
Mostafa Saad Ibrahim (mostafa.saad.fci) | ||
Tushar Roy | ||
GeeksforGeeks | ||
Algorithms Live! | ||
CodeChef | ||
HackerRank | ||
IDeserve | ||
code_report | ||
"Sothe" the Algorithm Wolf | ||
Egor Kulikov (Egor) | ||
Adam Bardashevich (subscriber) | ||
Bohdan Pryshchenko (I_love_Tanya_Romanova) | Twitch, Youtube | |
Vladimir Smykalov (enot.1.10) | Twitch, Youtube | |
Aleksandar Abas (Alex7) | ||
Mikhail Tikhomirov (Endagorion) | ||
Kamil Debowski (Errichto) | ||
David Harmeyer (SecondThread) | ||
mycodeschool | ||
William Lin (tmwilliamlin168) | ||
Quora | ||
Visit Competitive Programming - Quora (Top 10 Most Viewed Writers). | ||
Important Community Figures | Description | |
Organizer of IPSC and IOI. CS Teacher at Comenius University in Slovakia. Algorithm and CS Education Researcher. Former highly-rated competitive programmer. | ||
Founder of A2OJ. HackerRank Lead Software Engineer. Former member of the Google Code Jam team. | ||
Competitive Programmers | ||
Other Awesome Resources | ||
Articles | ||
Informative and helpful articles | ||
Subject | ||
FAQs | ||
Fine answers to frequently-asked questions | ||
Question | ||
How can I become good at competitive programming? - Quora ... What is the best strategy to improve my skills in competitive programming in 2-3 months? - Quora ... What is a good 6 month plan to start and progress through competitive programming? - Quora | ||
Awesome Lists | ||
Relevant awesome lists | ||
Name | Link | |
C++ Books | ||
Java Books | ||
Advanced Java Books | ||
Algorithms | ||
Algorithm Visualization | ||
Math | ||
C++ | ||
Java | ||
Courses | ||
Free Programming Books | ||
Community-curated C++ Resources | ||
Interview Questions | ||
Name | Description | |
The most popular website for software engineering interview preparation. | ||
Features intriguing and refreshing game-play designs which are designed to invoke one's interest in practicing. | ||
A curated list of awesome interview questions | ||
Well-organized website for software engineering interview preparation with best explanined |
Last updated