CS Level Up Series (30 Part Series)
What is this series about? What are the goals?
Leveling up my knowledge of algorithms, data structures, and system design. The goal is to become a badass.
What is the format? How will you achieve this?
Right now the plan is as follows:
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). The goal is 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 use Leetcode.

To understand more about Operating Systems, Networking, & Systems in general I will use the following resources:
 A gentle introduction to multithreading
 Process, Threads and Synchronization
 Threading in C#
 Operating Systems notes
 Web Systems
 Concurrency: Mutual Exclusion and Synchronization
 Networking notes
 TCP vs UDP
 Networking Zine
 What every developer should know about TCP
 SYN cookies ate my dog  breaking TCP on Linux
 How a SQL database works
At the same time, or perhaps at the conclusion of the above steps, I will be watching all the system design videos from the following YouTube channels: Tech Dummies  Narendra L, Success in Tech, Tushar Roy's System Design Playlist, & Gaurav Sen's System Design Playlist
To get even more System Design knowledge, I will be reading the book Designing DataIntensive Applications. I will try to read this book twice.
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. Specifically, these sections are: Math & Logic Puzzles, ObjectOriented Design, System Design & Scalability, Testing, Java, Databases, Threads & Locks.

(Also optional) SQL resources:

Other resources I will be consulting:
 Alorithms (Sedgewick)
 The Algorithm Design Manual (Skiena)
 The internets
Curriculum that might not exist on Heapclub, but that I have come across in forums/articles/books that could be useful to learn (if time permits). 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, bottomup with a matrix).
 DisjointSet/UnionFind
 Sliding Window
 RabinKarp
 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: 1218 months.
Who are you?
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 maths, and I suck at recursion.
(Please note that I previously linked to this blog post & this other post  which appears to have taken the content directly from Heapclub whilst removing vital information.)
CS Level Up Series (30 Part Series)
Discussion