I am currently working on becoming more proficient in Data Structures and Algorithms - both for the sake of interviewing and to become a better engineer.
In the following weeks and months, I'll share with you what I've learned along my journey. The content will include:
- The theory and application of Data Structures & Algorithms.
 - My interviewing experience, tips, and tricks.
 - Fun problems you can solve using what we've learned.
 
βοΈPlease share any additional resources that you'd recommend, and topics that I forgot to add in the comments below!
Learning Method
I love learning, but I am not an efficient student. I am great at "consuming" material, like taking courses and going through tutorials. But if you ask me to explain what I've learned, I wouldn't be able to do so. I would say "it just slips my mind", but truth be told I never do the work to commit the material into my long term memory.
This time it is going to be different, and I am going to utilize the following two strategies to improve my retention of what I've learned:
- Use scientific methods for efficient learning.
 - Following the idea of learning in public, I am going to summarize and share what I'm learning along the way. Learning by teaching makes sure you truly understand the material.
 
List of Resources
For now, let's start with a summary of resources and a list of topics we'll cover in the following weeks and months.
This is not an exhaustive list of all the resources that are available on the WWW, but rather a list of courses I find intriguing, and the books I own.
Legend to indicate where I'm at:
βοΈ: Currently working on
β
: Done
π€: Done, but needs a refresher
This is a living list, meaning I'll be coming back and updating it as I work through the material.
Data Structure & Algorithm Courses
- Coursera
- Algorithms Specialization, Stanford
 - Data Structures & Algorithms Specialization, University of California San Diego
 - Algorithms, Part I, Princeton University π€
 - Algorithms, Part II, Princeton University
 
 - Udacity
 
Books
- Theory
 - Practice Problems
 
Websites
- CodeSignal βοΈ
 - Pramp, these are actual mock interviews with real people. You get to experience both sides: Being the interviewee as well as interviewing your peers.
 
Content
- Analyzing Algorithms
- Asymptotic Notation
 - Amortized Analysis
 - Probabilistic Analysis & Randomized Algorithms
 
 - Data Structures
- Arrays & Linked Lists βοΈ
 - Stacks & Queues
 - Hash Tables
 - Trees
 - Binary Search Trees
 - Red-Black Trees
 - B-Trees
 - Binomial Trees & Binomial Heaps
 - Fibonacci Heaps
 - Data Structures for Disjoint Sets
 
 - Recursion
 - Sorting & Order Algorithms
- Heapsort
 - Quicksort
 - Sorting in Linear Time
 
 - Graph Algorithms
- Breadth-first search (BFS)
 - Depth-first search (DFS)
 - Topological Sort
 - Minimum Spanning Trees
 - Single-Source Shortest Paths
 - All-Pairs Shortest Paths
 - Maximum Flow
 
 - Dynamic Programming
 - Greedy Algorithms
 - Linear Programming
 - Sorting Networks
 - Matrix Operations
 - Polynomials & the FFT
 - Number-Theoretic Algorithms
 - String Matching
 - Computational Geometry
 - NP-Completeness
 - Approximation Algorithms
 - Maps & Hashing
 - Tries
 - Heaps
 - Divide & Conquer
 - A*
 
              
    
Top comments (6)
Ah the memories. I haven't programmed data structures from scratch since university in the first half of the '90s. I remember the time when, if you wanted a data structure, you had to program it yourself. No fancy libraries or frameworks back then. Not complaining; it was fun even if it drove me nuts. Still nuts. That didn't go away.
I wish you the best of luck and I hope you succeed on your goals and also enjoy the journey. You just encourage me to publicly commit on learning machine learning which is something I have been trying but not really commiting for a couple of months. π€
Thank you! I hope you'll get started with learning ML and will write about it. Studying ML is also on my to do list, it'd be a great addition to read about your journey :)
Thanks for sharing. I like to solve leetcode questions.
I suggest you to solve codechef problems
Thanks for sharing