Skip to content

waledsaleh/awesome-competitive-programming

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Awesome Competitive Programming Awesome

A curated list of awesome competitive programming / algorithm / data structure resources.

This list was created with a view to connect more people to information. It's aimed to cover a wide range of aspects and be a useful list for all.

Build Status (link status powered by dkhamsing/awesome_bot)

Contributing

Please kindly follow CONTRIBUTING.md to get started (including TODOs).

Table of Contents

Awesome Reference Materials

Knowledge

Syllabuses

What to learn / What to look for.

  • IOI Syllabus
    A detailed syllabus on which IOI contestants will be tested. This is still somewhat relevant to ACM-ICPC.
  • Programming Camp Syllabus
    It was said to be an unofficial syllabus for ACM-ICPC.

List of Lists

A list of awesome curated lists.

Articles

Sites with awesome articles.

In addition to the List of Lists section above,
Here are some additional ones:

Implementations / Notebooks

Algorithm / Data structure implementations.
It is advised that you write your own ones before looking at others'.

Language Specifics

This section mainly focuses on languages and other miscellaneous knowledge.

C/C++

Java

Miscellaneous

Awesome Learning Materials

Open Courses

It's highly recommended that you begin your competitive programming journey with these awesome courses!

Books

A list of recommended books for competitive programming.

Books for Algorithms

  • Introduction to Algorithms, by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein
    Also known as CLRS (taken from name initials), this book is often referred to as the "bible" for algorithms and data structures. It's one of the most popular textbooks for university algorithm courses. This book covered various algorithms and data structures in great detail. The writing is more rigorous and can be difficult to some.
  • Algorithm Design, by Jon Kleinberg and Éva Tardos
    This book revolves around techniques for designing algorithms. It's well-organized and written in a clear, understandable language. Each chapter is backed with practical examples and helpful exercises. The chapter on network flow is highly praised by lots.
    The lecture slides that accompany the textbook are available on its official website.
  • The Algorithm Design Manual, by Steven S. Skiena
    The book is written in more readable text. Some find it comprehensive than other books. You can also find some good resources (including the author's own video lectures) on its official website.
  • Algorithms, by Robert Sedgewick and Kevin Wayne
    This book is neatly categorized, coupled with elaborate explanations and fantastic illustrations.

Books for Mathematics

  • Discrete Mathematics and Its Applications, by Kenneth H. Rosen
    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, Probablity, Graphs, Trees and Boolean Alegra to name but a few.
  • Concrete Mathematics: A Foundation for Computer Science, by Ronald L. Graham, Donald E. Knuth, Oren Patashnik
    The book offers a deeper look into Discrete Mathematics with more stresses on number-related topics.
  • Linear Algebra and Its Applications, by David C. Lay, Steven R. Lay, Judi J. McDonald
    The book does a good job at bridging the gap between a physical system (for scientists and engineers) and an abstract system (for mathematicians).
  • How to Solve It: A New Aspect of Mathematical Method, by G. Polya
    An old-time classic. Overall, the author provides a systematic way to creatively solve problems.

Sites to Practice

Good online judges / contest platforms to practice.

  • Codeforces
    Codeforces is one of the most popular contest platforms in the world. Currently maintained by Saratov State University, it features regular contests and numerous awesome original problems. Every contest provides immediate helpful tutorials. Furthermore, many warm-hearted Codeforces members kindly answers questions on Codeforces. One would indeed learn and improve tremendously here.
  • TopCoder
    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. Hence, TopCoder draws many elite programmers to compete and practice here. It has arguably been on a decline, but it still is a superb platform to practice. The annual TopCoder Open is also a widely-discussed event.
  • Google Code Jam
    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.
  • CodeChef
    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.
  • SPOJ
    The SPOJ platform is centered around an online judge system. It holds a staggering amount of problems prepared by its community of problem setters or taken from previous programming contests, some of which are great problems for practice (refer to the Problem classifiers section). SPOJ also allows advanced users to organize contests under their own rules.
  • Timus
    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.
  • SGU
    SGU is an old-school online judge maintained by Saratov State University. A high-rated competitive programmer - Huang I-Wen (dreamoon) thinks that it's the hardest online judge because its problems require unusual skills.
  • HDU
    HDU is an online judge maintained by Hangzhou Dianzi University. It holds a pretty nice problemset. Users can also run virtual contests on this platform.
  • UVa
    An old-school problem archive / online judge with rich history. Thousands of problems, including many classic ones, are featured here. However, it is strongly advised that you practice with uHunt following its "Competitive Programming Exercise" section.
  • HackerRank
    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 (including, but not limited to, Java, C++, PHP, SQL) and span multiple computer science domains.
  • POJ
    POJ is an online judge maintained by Peking University. It holds a large amount of great problems.
  • Project Euler
    There are lots of good math problems on this site. You may also discuss with others on its forum.
  • Hackerearth
    HackerEarth is a startup technology company based in Bangalore, India that provides recruitment solutions. Its clients include Adobe, Altimetrik, Citrix Systems, InMobi, Symantec and Wipro.
  • Aizu Online Judge
    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.

Problem Classifiers

Sites classifying programming problems.
Choose a category (eg. DP) of interest and practice problems on that topic.

Contest Calendars

Calendars for impending programming contests.
Never miss another contest!

Sites to ask Questions

These are great sites to ask questions.
It is suggested that you paste your codes at ideone or pastebin.

Other Awesome Websites

  • Virtual Judge (vjudge)
    Virtual Judge (vjudge) allows users to create virtual contests with problems from notable problem archives such as: Codeforces, SPOJ, UVa, POJ, Codechef ... etc..
  • BNU Online Judge
    BNU Online Judge also allows users to create virtual contests. The interface is quite nice but it isn't as widely used as the previous one (vjudge).
  • VisuAlgo
    VisuAlgo features a large collection of visualization tools for algorithms and data structures.
  • USA Computing Olympiad (USACO)
    USACO 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.
  • The On-Line Encyclopedia of Integer Sequences (OEIS)
    A stunning encyclopedia with a database of countless integer sequences. It also features a powerful search engine. Sometimes a seemingly difficult combinatorics problem can be equivalent to a simple or known and studied integer sequence.

Social Media

Meet the god-like competitive programmers!
Learn helpful tips, tutorials and insights from these people :)

Blogs

Team Wikis

Youtube and Livestreams

Quora

Visit Competitive Programming - Quora (Top 10 Most Viewed Writers).

Awesome people to follow (Too many people to list, separated by commas and in groups of 3's thus):
Michal Forišek (misof), Brian Bi (bbi5291), Jonathan Paulson (jonathanpaulson),
Miguel Oliveira (mogers), Egor Suvorov (yeputons), Michal Danilák (Mimino),
Bohdan Pryshchenko (I_love_Tanya_Romanova), Vladimir Novakovski (vnovakovski), Nick Wu (xiaowuc1),
Cosmin Negruseri, Lalit Kundu (darkshadows), Ashish Kedia (ashish1294),
Johnny Ho (random.johnnyh), Thanh Trung Nguyen (I_love_Hoang_Yen), Anudeep Nekkanti (anudeep2011),
Steven Hao (stevenkplus), Raziman T.V. (razimantv), Joshua Pan (lonerz).

Appendix

Other Awesome Articles and FAQs

License

CC0

To the extent possible under law, Jasmine Chen has waived all copyright and related or neighboring rights to this work.

About

💎 A curated list of awesome competitive programming / algorithm / data structure resources

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published