CS Level Up Series (29 Part Series)
Leveling up my knowledge of algorithms, data structures, and system design. The goal is to become a badass.
Right now the plan is as follows:
I am going to first do some prep work to learn basic algorithms and data structures. I will be mostly following Heapclub's (a now closed interview prep company) curriculum (curriculum here). With the goal being to know all of this like the back of my hand. If I have time I will also do the maths section
After the prep work I am going to follow a similar approach to the one outlined here. I will probably use Leetcode
To understand more about Operating Systems, Networking, & Systems in general I will use the following resources:
To solidify design patterns knowledge, I will use the content from Source Making's Design Patterns.
(Optional) There is the possibility I will read + complete all the relevant sections of CTCI
Curriculum extras: I have come across a few things from forums/articles/books that could be useful to learn (if I have time). Here is list of topics that seem important (in perceived order of priority):
- Know common problems: Fibonacci, Valid/balanced parenthesis, palindrome/anagrams of strings, Traveling Sales Person, Knapsack Problem, Longest Common Subsequence (using dynamic programming, bottom-up with a matrix).
- Disjoint Set & Union Find
- Sliding Window
- Binary Indexed Tree (Fenwick Tree)
- Bipartite graphs (Checking if a graph is bipartite)
- Iterators and associated problems (Flatten a nested list iterator, design a skip iterator, merge K sorted iterators)
- Minimum Spanning Trees
- Fibonacci Heap and it's guarantees
- Either KMP or Z Algorithm (choose one)
- Segment Tree
- Suffix Tree (without worrying about compression + understand what Ukkonen's algorithm is) &/or Suffix Array
- Line Sweep (geometry related, problems: Rectangle Intersection & The Skyline problem)
Allotted time for this project: 12-18 months.
Bootcamp grad with 5.5 years Software Engineering experience. I have done some basic algo/ds stuff in the past, but not much - and I've forgotten almost all of it. I'm terrible at math, and I suck at recursion.
Claim your page on DEV before someone else does
Level up every day