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!