# BedirT/ACM-ICPC-Preparation: a 20-week curriculum you fork and work through

> This repository is not a library or a tool. It is a week-by-week reading list of algorithm topics with links to sources, source code and practice problems, and the README itself reports only 8 of 20 weeks complete and 4 of 20 revised.

**BedirT/ACM-ICPC-Preparation** — ACM-ICPC Preparation Guide

- Repository: https://github.com/BedirT/ACM-ICPC-Preparation
- Stars: 2,518 · Forks: 696
- Language: Python
- License: MIT
- Published: 2026-09-28 · Updated: 2026-09-28 · Language: en
- Canonical page: https://hysenlabs.com/projects/bedirt-acm-icpc-preparation

## What problem a curriculum repository actually solves

Competitive programming has no shortage of material. It has a shortage of order. A beginner who wants to reach the level of a regional contest has thousands of articles, videos and problem archives available, and no reliable signal about which to read first, which to skip, and when a topic is finished. BedirT/ACM-ICPC-Preparation addresses exactly that: it imposes a sequence. The README states the curriculum was developed to learn algorithms for competitive programming, and adds that it can also be used for interview practice, for improving algorithmic thinking, and for college classes. The prerequisite is stated plainly: you must already know at least one programming language well enough to use it efficiently. This is not an introduction to programming. It assumes you can already write working code and now need to know which algorithms to learn and in what order. The stated time budget is 6 to 7 hours per week, which is the number that matters most for deciding whether the structure fits your life.

## The repository is a map, not an engine

There is no build step, no package to import, no runtime. The top level of the repository holds Week00 through Week13 and then Week19, plus a .gitignore, a CODE_OF_CONDUCT.md, an MIT LICENSE, a README.md, a banner image and a Google site verification file. The README carries the curriculum table, and the table is the architecture: each row names a week, a set of required topics and a set of optional topics, and links to the corresponding directory. Week00 is a single topic, Big O Notation. Week01 covers prime numbers via the Sieve of Eratosthenes, efficient prime factorization and modular exponentiation. Week02 moves to GCD and LCM by Euclid's algorithm and long arithmetic, with C++ STL vectors, pairs and iterators as optional material. Later weeks group data structures with the algorithms that need them: Week05 pairs queues and stacks with breadth first search and depth first search, Week06 pairs linked lists with Dijkstra, minimum spanning tree and Floyd Warshall. The README also lists the outside sites the curriculum draws on, including Leetcode, Spoj, Hackerrank, Topcoder, Codeforces, Lightoj and ACM-Timus. That list is the honest description of what this project is: a routing layer over other people's material.

## Installing it and working through Week01

There is nothing to install. The README gives no install command, no package name and no environment variable, because the deliverable is Markdown and source files. What you do instead is clone the repository and open the week you are on. The README's basic usage guide describes a five-step loop: read the written or video sources for a topic, try to reproduce the algorithm yourself without looking at the source code, compare your attempt against the provided source code and fix the difference, solve the given problems, then check the provided solutions when you are stuck or finished. Concretely, starting on Week01 looks like this.

## The completion badges are the real review

Most curriculum repositories present themselves as finished. This one carries two shields in its own README: Weeks Completed 8/20 and Revisions 4/20. Read those as a maintenance statement. The author is telling you that roughly twelve weeks have not been completed to the standard the earlier ones were, and that only four weeks have been through a revision pass. The directory listing agrees: Week14 through Week18 do not exist at the top level, while Week19 does. So the tail of the curriculum is uneven, and the jump from Week13 to Week19 is not a typo you should expect to be filled in soon. For a learner this changes the plan. Weeks 1 through 8 are the safest ground, and Week08 is explicitly a review week consisting of questions from previous topics rather than new material. If you are targeting a contest in three months and you need graph theory at the level of max flow and heavy light decomposition, you are past the well-trodden part of this repository and into territory where you will be assembling the material yourself.

## Where the curriculum stops being enough

The failure mode is not that the links are bad. It is that a curated link list has no way to tell you that a topic is finished. The README's usage guide says to go over as many sources as needed to gain a good understanding, which is honest but also means the stopping condition is your own judgement. That is a real cost for a self-taught learner with no coach. A second limitation is language specificity. The optional tracks are heavily C++ STL: vectors, pairs, iterators in Week02, then string, set and map in Week03, then queue and stack in Week05. The repository's primary language is listed as Python, but the optional material is written around C++ containers, so a Python user will be reading optional sections that do not apply to them. Third, the resource list is external. Leetcode, Spoj, Hackerrank, Topcoder, Codeforces, Lightoj and ACM-Timus are all third-party sites with their own accounts, their own problem archives and their own availability. If a site changes its URL structure, nothing in this repository can fix that for you.

## How it differs from a full course or a book

The obvious alternative is a structured course or a printed algorithms text, and the difference is in what is being supplied. A course supplies explanations and a schedule enforced by someone else; a textbook supplies complete exposition with exercises. This repository supplies neither. It supplies the ordering and the pointers, and it expects you to bring the explanation from the linked source. That is a real trade-off in both directions. You get flexibility: you can substitute a video for an article, skip optional topics, or spend three weeks on dynamic programming if that is where you are weak. The README's contribution section even invites pull requests and issues, and states that the maintainer will try to review them personally. What you lose is the guarantee that any given topic has been covered to a consistent depth, which is precisely what the 8/20 and 4/20 badges are warning you about. If you want a curriculum that is finished, this is not it. If you want a skeleton you can hang your own study on, it is a reasonable one.

## Licence and the cost of keeping it current

The repository is MIT licensed, and the LICENSE file sits at the top level alongside CODE_OF_CONDUCT.md. MIT is permissive, so forking it, reusing the structure, or building your own curriculum on top of it is straightforward; the usual obligation is to keep the licence and copyright notice with any substantial copy. That is a description of the licence text, not legal advice, and if you plan to redistribute the material commercially you should read the LICENSE file yourself. The upgrade cost is low in the technical sense, because there is nothing to upgrade: no dependencies, no version pinning, no migration. The cost that does exist is editorial. The last push to the repository was on 2026-09-12, which is recent, but the badges have not moved to 20/20 and the missing week directories have not been filled in, so activity on the repository is not the same as completion of the curriculum. If you fork it, expect to maintain your own fork, because the gaps are structural rather than something a small commit closes.

## Conclusion

Adopt this if you want a pre-ordered topic sequence and are willing to source your own explanations, because the value here is the ordering and the problem links, not the teaching. Do not adopt it if you need a complete, finished curriculum: the README's own badges report 8 of 20 weeks completed and 4 of 20 revised, and the repository has no Week14 through Week18 directories, so weeks 13 to 19 are not contiguous. Before committing, open the Week directory for the topic you actually need and check whether the source links still resolve and whether the week is marked as revised. If the week you need is one of the unfinished ones, you are better served picking the topic directly from the Resources list and building your own path.

## FAQ

### How should I prepare for ICPC using BedirT/ACM-ICPC-Preparation?

The README recommends working through the weekly topics in order, using the provided written or video sources, reproducing each algorithm yourself before looking at the source code, then solving the given problems. The stated time budget is 6 to 7 hours per week. The prerequisite is that you already know at least one programming language well enough to use it efficiently.

### Is BedirT/ACM-ICPC-Preparation difficult?

The repository assumes prior programming ability and does not teach a language, so the difficulty comes from the algorithms rather than from setup. The README budgets 6 to 7 hours per week to complete the curriculum in the given time. The later weeks are less complete than the early ones, which the README's own badges report as 8 of 20 weeks completed and 4 of 20 revised.

### What type of questions are asked in ICPC, according to this curriculum?

The README organizes topics into data structures and algorithms rather than listing contest question types. Data structures include stacks, queues, priority queues, hashmaps, linked lists, trees, heaps, tries, segment trees, Fenwick trees, RMQ, sqrt decomposition and disjoint data structures. Algorithms include number theory, combinatorics, computational geometry, divide and conquer, sorting, searching, graph theory, dynamic programming, strings, bit manipulation and game theory.

### How prestigious is ICPC, and does BedirT/ACM-ICPC-Preparation help with it?

The repository does not discuss the prestige of the contest. It only states that the curriculum was developed to learn algorithms for competitive programming, and that it can also be used for interview practice, improving algorithmic thinking and college classes.

## Sources

- [BedirT/ACM-ICPC-Preparation on GitHub](https://github.com/BedirT/ACM-ICPC-Preparation)
- [Issues](https://github.com/BedirT/ACM-ICPC-Preparation/issues)
- [License: MIT](https://github.com/BedirT/ACM-ICPC-Preparation/blob/master/LICENSE)
- [README](https://github.com/BedirT/ACM-ICPC-Preparation/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/bedirt-acm-icpc-preparation
