←Back
How I'm Learning Data Structures and Algorithms in 2025
May 4, 2025 • 9d ago
I am entering university to study computer science this upcoming fall, which means I now have to start thinking about applying for internships!
This means I need to learn data structures and algorithms, but there are hundreds upon thousands of videos on YouTube now on different roadmaps and ways to learn DSA.
I've consolidated what I've watched into a neat, readable list for you all to see (and potentially take inspiration from)!
The Roadmap Itself
I plan on learning DSA within the next 2-3 months before university starts so that my head can be as much in the game as possible when next internship season comes around. I'm using the following roadmap:
- Time & Space Complexity
- Time Complexity: Understand the basics of algorithm analysis, focusing on how to evaluate the efficiency of an algorithm with Big O Notation
- Space Complexity: Learn to assess the amount of memory an algorithm uses during its execution
- Basic Data Structures
- Arrays and Linked Lists (Single and Double) -> The building blocks for more complex data structures
- Arrays offer fast access but fixed size, while linked lists provide dynamic size at the cost of slower access
- Queue and Stack: data structures for managing objects in a particular order.
- Queues = FIFO and Stacks = LIFO.
- Binary Trees and Binary Search Trees: New hierarchical structures for efficient data organization and retrieval.
- Learn about traversals, creation, insertion, deletion and searching.
- Heaps: Used for priority queue implementation and efficient sorting.
- Also look at min and max heaps, how they are created, and how elements are added and removed
- Graphs: These structures work with networks of nodes and edges.
- Look at graph representations like adjacency lists, adjacency matrices and edge lists.
- Familiarize yourself with graph terminology.
- Hashing: Used for fast data retrieval through key-value pairs.
- Understanding this makes sure you know how hash maps and various other key-value paired data structures operate.
- Algorithms
- Recursion: Problems where solution involves solving smaller instances of the same problem
- Searching and Sorting Algorithms: Basic algorithms like binary search, insertion sort, bubble sort, selection sort, heap sort, quicksort, and merge sort
- Path Finding Algorithms: Algorithms like Dijkstra and A* used for finding shortest paths in graphs.
- Graph Algorithms: Algorithms for traversing, searching, and analyzing graphs (e.g., BFS, DFS).
- Also includes minimum spanning tree algorithms like Kruskal and Prims Algorithm
- Dynamic Programming: Optimize recursive problems by storing results of subproblems
- Greedy Algorithms: Solve optimization problems by making the locally optimal choice (aka being greedy) at each step
- Divide and Conquer Algorithms: Solve problems by breaking them into subproblems, solve those independently, and combine their solutions.
- Backtracking Algorithms: Find solutions to problems by exploring possible candidate solutions and backtracking if they don't work
- Advanced Data Structures: Optional, but good to know
- Set 1: Tries, B Trees, AVL Trees, and Red-Black Trees -> these structures provide efficient searching alternatives for different use cases
- Set 2: Skip Lists, Segment Trees, Fenwick Trees -> Learn these structures to optimize for specific scenarios like fast searches within a list
- Set 3: Disjoint and Union-Find Sets -> understand this structure for keeping track of a set of elements partitioned into non-overlapping subsets
I primarily used TechWithTim's video on DSA to compose this list, though I also consulted a variety of other DSA videos.
How to Actually Learn DSA?
The roadmap contained nearly all of the content I need to learn, but the question now stands: how I am actually going to learn it?
I plan on doing many things, one of which being following a structured tutorial. I'll be using this course from boot.dev to help me; I haven't vetted this course out yet, but this will be part of the process.
I also plan on using AI to the fullest; this means generating quizzes, coding questions, and helping me understand implementations of various data structures and algorithms.
Speaking of coding questions, once I begin learning the basics, I'll open a LeetCode account and start grinding over there.
Conclusion
This post has a lot of things about what I am going to do, so I hope that I can keep myself accountable the next 2-3 months.
I also hope that this roadmap was useful for you!