The following is a list of practice problems for studying algorithms and data structures.
Recommendation: select one programming language and complete all of the problems using that language. If you want to add an additional language, complete them all in the language you selected first, then repeat them with your second language choice. Good choices for a first language are C++ (runs fast) and Python (fast to code), though any language will work (yes, including JavaScript).
- Google Code Jam 2015 - Qualification Round
- Google Code Jam 2015 - Round 1A
- Google Code Jam 2015 - Round 1B
- Google Code Jam 2015 - Round 1C
- Google Code Jam 2015 - Round 2
- Google Code Jam 2015 - Round 3
- Google Code Jam 2015 - World Finals
- Google Code Jam 2016 - Qualification Round
- Google Code Jam 2016 - Round 1A
- Google Code Jam 2016 - Round 1B
- Google Code Jam 2016 - Round 1C
- Google Code Jam 2016 - Round 2
- Google Code Jam 2016 - Round 3
- Google Code Jam 2016 - World Finals
- Google Code Jam 2017 - Qualification Round
- Google Code Jam 2017 - Round 1A
- Google Code Jam 2017 - Round 1B
- Google Code Jam 2017 - Round 1C
- Google Code Jam 2017 - Round 2
- Google Code Jam 2017 - Round 3
- Google Code Jam 2017 - World Finals
If you need to study before diving in:
- Course: CS for All
- Challenges: Code Fights Arcade Challenges
- Move on to one of the language specific paths below
- Course: Introduction to Computer Science and Programming Using Python
- Course: Calculus One
- Course: Introduction to Computational Thinking and Data Science
- Course: Mathematics for Computer Science
- Course: Introduction to Algorithms (requires book purchase) or Book - Open Data Structures
- Challenge: Python Interview Prep
- Book: Think Java - How to Think Like a Computer Scientist
- Course: Calculus One
- Course: Software Construction
- Course: Mathematics for Computer Science
- Book - Open Data Structures (in Java)
- Course: Algorithms, Part I
- Course: Algorithms, Part II
- Challenge: Java Interview Prep
- Course: Introduction to Computer Science - CS50
- Course: Calculus One
- Course: Introduction to C and C++
- Course: Mathematics for Computer Science
- Lessons: Basic Programming
- Lessons: Data Structures
- Book - Open Data Structures (in C++)
- Practice: HackerRank Data Structures Section
- Lessons: Algorithms
- Practice: HackerRank Algorithms Section
- Pick a language and find an online resource for learning the basics of that language
- Course: Calculus One
- Course: Mathematics for Computer Science
- Book - Open Data Structures
- Practice: HackerRank Data Structures Section
- Practice: HackerRank Algorithms Section
(addon to any of the other preps if you want to dive even deeper)
- Course: How to Win Coding Competitions: Secrets of Champions Optional - only if it's in session
- Course: Calculus Two: Sequences and Series
- Course: Linear Algebra - Foundations to Frontiers
- Course: Design and Analysis of Algorithms Requires textbook purchase (Cormen)
- Course: Advanced Algorithms
- Course: Advanced Data Structures