ADS & Competitive Programming

Algorithms & Data Structures Roadmap

Phase 1 – Foundations & Literacy

Goal: Build conceptual clarity, basic fluency, and start problem-solving habit.

Core readings:

  • Wirth – Algorithms + Data Structures = Programs (lean, clear conceptual start).
  • Brassard & Bratley – Fundamentals of Algorithmics (systematic intro).

Practice:

  • Daily small problems: arrays, recursion, sorting basics (LeetCode Easy, Codeforces Div2 A/B).
  • Work through examples/exercises in Wirth/Brassard.

Projects:

  • Implement a “mini standard library”: arrays, linked lists, stacks, queues.
  • Write and benchmark classic sorts (insertion, merge, quick).

Milestone:

  • Comfortably analyze O(n), O(n log n), O(n²).
  • Can hand-write correct pseudocode for sorting/searching.
  • ~Codeforces 1100–1200 (solid beginner).

Phase 2 – Intermediate Mastery

Goal: Internalize core data structures and standard algorithms.

Core readings:

  • Jeff Erickson – Algorithms (modern, conceptual).
  • Edmonds – How to Think About Algorithms (intuition/strategy).

Practice:

  • Regular problem-solving: dynamic programming, greedy, trees, hash tables.
  • Target Codeforces 1400–1600 (Div2 C-level consistency).

Projects:

  • Implement a balanced BST (AVL or Red-Black).
  • Graph toolkit: BFS, DFS, Dijkstra, topological sort.
  • Experiment with hash tables (chaining vs. open addressing).

Milestone:

  • Comfortable with recurrence relations and master theorem.
  • Can solve medium-level ADS problems under time pressure.
  • Written and tested your own graph library.

Phase 3 – Advanced Techniques & Problem-Solving Edge

Goal: Gain fluency in advanced data structures and competitive-level problem-solving.

Core readings:

  • Edmonds (finish).
  • Mehlhorn & Sanders – Algorithms and Data Structures: The Basic Toolbox.
  • Supplements: Parberry (Problems on Algorithms), Sannemo (Principles of Algorithmic Problem Solving).

Practice:

  • Systematic Codeforces training, aiming 1700–1900 (Master).
  • Problems: advanced DP, flows, segment trees, binary indexed trees, string algorithms.

Projects:

  • Implement segment tree & Fenwick tree, compare performance.
  • Small search engine (inverted index + ranking).
  • Visualize Dijkstra and A* on grids.

Milestone:

  • Competent with amortized analysis, randomized algorithms.
  • Can solve harder graph/DP problems (CF Div2 D, occasional Div1 A).
  • Built a personal ADS library for reuse.

Phase 4 – Integration & Research Prep

Goal: Position ADS knowledge to support PLT + ML/AI work.

Core readings:

  • Concrete Mathematics (Knuth et al.) → strengthen recurrences, counting.
  • Graph supplements (Marcus, Gibbons) → deepen graph-specific algorithms.

Practice:

  • Mix classical problems with application-driven ones (SAT solvers, SMT-style algorithms, ML optimization routines).
  • Continue competitive practice to maintain edge.

Projects:

  • Implement SAT solver (DPLL) as bridge to formal methods.
  • Implement SGD & Adam optimizers from scratch (bridge to ML).
  • Prototype a small probabilistic data structure (Bloom filter, Count-Min Sketch).

Milestone:

  • Ready to connect ADS mastery to PLT/Formal (verification algorithms) and ML/AI (optimization & data pipeline).
  • Comfortable switching between theory, problem-solving, and implementation.

Key Notes

  • Style balance: ADS benefits most from problem-solving (Codeforces/LeetCode) — projects are supplementary but give systems context.
  • Book usage: Wirth → Brassard/Bratley → Erickson → Edmonds (+ toolbox, Parberry/Sannemo as practice). The rest of your collection = optional references.
  • Final Target: Algorithmic literacy at the level of a CS graduate + problem-solving skills around Codeforces Master.
Back to top