Full Curriculum - Algorithms in 60 Days
Complete Curriculum #
Welcome to the comprehensive curriculum for Algorithms in 60 Days. This structured learning path will take you from basic algorithmic concepts to advanced problem-solving techniques used in competitive programming and technical interviews.
Learning Path Overview #
Our 60-day journey is divided into modules that build upon each other, ensuring you develop a solid foundation before tackling more complex topics:
Module 1: Fundamentals (Days 1-10) #
- Introduction to algorithms and time complexity
- Basic data structures: Arrays, Strings
- Linked Lists and their applications
Module 2: Core Data Structures (Days 11-20) #
- Stacks and Queues
- Trees: Binary Trees, BST
- Graphs: Fundamentals and traversal algorithms
Module 3: Advanced Algorithms (Days 21-30) #
- Shortest Path Algorithms
- Sorting techniques
- Dynamic Programming introduction
Module 4: Dynamic Programming (Days 31-40) #
- Classic DP problems
- Optimization techniques
- Greedy Algorithms
Module 5: Graph Algorithms (Days 41-50) #
- Advanced graph algorithms
- Minimum spanning trees
- Backtracking problems
Module 6: Specialized Topics (Days 51-60) #
- Bit manipulation
- String algorithms
- Competitive programming techniques
Daily Curriculum #
Below is the detailed day-by-day breakdown of topics:
Week 1-2: Getting Started #
| Day | Topic | Difficulty |
|---|---|---|
| 1 | Introduction to Algorithms | Beginner |
| 2 | Algorithmic Thinking and Pseudocode | Beginner |
| 3 | Introduction to Time Complexity | Beginner |
| 4 | Introduction to Arrays | Beginner |
| 5 | Multi-dimensional Arrays and Sorting | Beginner |
| 6 | Advanced Sorting: Insertion & Merge | Beginner-Intermediate |
| 7 | Introduction to Linked Lists | Beginner-Intermediate |
| 8 | Singly Linked Lists | Beginner-Intermediate |
| 9 | Doubly Linked Lists | Intermediate |
| 10 | Advanced Linked List Operations | Intermediate |
Week 3-4: Core Data Structures #
| Day | Topic | Difficulty |
|---|---|---|
| 11 | Stacks | Beginner-Intermediate |
| 12 | Queues | Beginner-Intermediate |
| 13 | Trees Introduction | Intermediate |
| 14 | Binary Trees | Intermediate |
| 15 | Binary Search Trees | Intermediate |
| 16 | Tree Traversals | Intermediate |
| 17 | Heaps | Intermediate |
| 18 | Graphs Introduction | Intermediate |
| 19 | Graph Representations | Intermediate |
| 20 | Graph Traversals | Intermediate-Advanced |
Week 5-6: Advanced Algorithms #
| Day | Topic | Difficulty |
|---|---|---|
| 21 | Shortest Path Algorithms | Intermediate-Advanced |
| 22 | Minimum Spanning Trees | Intermediate-Advanced |
| 23 | Hash Tables | Intermediate |
| 24 | Sets | Intermediate |
| 25 | Binary Search | Intermediate |
| 26 | Quicksort | Intermediate-Advanced |
| 27 | Mergesort | Intermediate |
| 28 | Heapsort | Intermediate-Advanced |
| 29 | Sorting Algorithm Comparison | Intermediate |
| 30 | Dynamic Programming Introduction | Advanced |
Week 7-8: Dynamic Programming #
| Day | Topic | Difficulty |
|---|---|---|
| 31 | Fibonacci and DP | Intermediate-Advanced |
| 32 | Longest Common Subsequence | Advanced |
| 33 | Knapsack Problem | Advanced |
| 34 | Matrix Chain Multiplication | Advanced |
| 35 | Longest Increasing Subsequence | Advanced |
| 36 | Edit Distance | Advanced |
| 37 | Coin Change Problem | Advanced |
| 38 | Rod Cutting | Advanced |
| 39 | Palindrome Partitioning | Advanced |
| 40 | Greedy Algorithms Introduction | Intermediate-Advanced |
Week 9-10: Graph Algorithms #
| Day | Topic | Difficulty |
|---|---|---|
| 41 | Activity Selection | Intermediate-Advanced |
| 42 | Huffman Coding | Advanced |
| 43 | Dijkstra’s Algorithm | Advanced |
| 44 | Prim’s Algorithm | Advanced |
| 45 | Kruskal’s Algorithm | Advanced |
| 46 | Floyd-Warshall Algorithm | Advanced |
| 47 | Bellman-Ford Algorithm | Advanced |
| 48 | Backtracking Introduction | Advanced |
| 49 | N-Queens Problem | Advanced |
| 50 | Sudoku Solver | Advanced |
Week 11-12: Specialized Topics #
| Day | Topic | Difficulty |
|---|---|---|
| 51 | Hamiltonian Cycle | Advanced |
| 52 | Graph Coloring | Advanced |
| 53 | Bit Manipulation Techniques | Advanced |
| 54 | Power Set | Advanced |
| 55 | Counting Bits | Advanced |
| 56 | String Algorithms: KMP | Advanced |
| 57 | Rabin-Karp Algorithm | Advanced |
| 58 | Tries | Advanced |
| 59 | Advanced Tree Structures | Advanced |
| 60 | Competitive Programming Techniques | Advanced |
How to Use This Curriculum #
- Follow the Order: The topics are arranged in a specific sequence to build upon previous knowledge.
- Practice Daily: Aim to complete one topic per day, spending time on both theory and practice.
- Complete the Exercises: Each lesson includes exercises and problems to reinforce your learning.
- Review Regularly: Schedule review sessions to revisit challenging concepts.
- Join the Community: Discuss problems and solutions with fellow learners in our community.
Resources #
In addition to the daily lessons, we provide these supplementary resources:
- Code Repository: All example code is available on GitHub
- Visualizations: Interactive visualizations for complex algorithms
- Problem Sets: Additional practice problems for each topic
- Reference Sheets: Downloadable cheat sheets for quick reference
Ready to begin your journey to algorithmic mastery? Start with Day 1: Introduction to Algorithms or jump to a specific topic that interests you!