# Plan for Algorithms and Data Structures Series

This is a rough plan for a series of blog posts capturing my process of learning and brushing up on different data structures and algorithms.

I'll be covering all of them from the perspective of a FrontEnd developer. Including implementations in `JavaScript`

as well as examples of how these **data structures and algorithms** are being used in **browsers** and **web development**.

Disclaimer: I'm learning myself, so if you see any silly mistake, hit me up and I'll most definitely fix it!

- Intro and Prerequisites
- Data Structures
- Array
- Sorting
- Simple sorts
- Insertion sort
- Selection sort
- Radix sort

- Efficient sorts
- Quicksort
- Merge sort
- Shell sort (?)
- Heap sort [in heap]

- Simple sorts
- Binary Search
- Shuffling
- Random Sampling
- Backtracking
- Matrix
- Transpose
- Rotate

- Sorting
- Linked List
- Singly Linked List
- Doubly Linked List

- Stack
- Queue
- Heap
- Binary Heap
- Priority Queue
- Heap sort

- Hash table
- Hashing functions
- Collision resolution

- Binary
- From and to Binary
- Bitwise operations

- String
- Levenshtein distance
- Knut-Morris-Pratt

- Array

- Trees and Graphs
- Graph Types
- Traversal
- in-order, post-order, pre-order
- Depth-First Search
- Breadth-First Search

- Path finding
- Breadth-First Search
- Djikstar
- A*

- Minimum Spanning Tree
- Topological Sorting
- Binary Search Trees
- Binary Search
- Self Balancing BSTs
- Red-Black Tree
- AVL tree

- Union Find
- Finding Cycles
- Strongly Connected Component
- Bipartite Graphs
- Finding Redundant Connections
- Finding Bridge Connections
- Network Flow
- Suffix tree
- Trie

- Advanced Data Structures
- CRDTs
- GeoHash

- Other Algorithms
- Dynamic Programming
- Longest Common Subsequence
- Edit distance
- Knapsack
- Egg dropping puzzle

- Recursion

- Dynamic Programming