This book is about usage of data structures and algorithms in computer programming. Data structures are
the ways in which data is arranged in computers memory. Algorithms are set of instructions to solve some
problem by manipulating these data structures.
Designing an efficient algorithm to solve a computer science problem is a skill of Computer programmer.
The skill which tech companies like Google, Amazon, Microsoft, Facebook and many others are looking
for in an interview. Once we are comfortable with a programming language, the next step is to learn how
to write efficient algorithms.
This book assumes that you are a JavaScript language developer. You are not an expert in JavaScript
language, but you are well familiar with concepts of references, functions, arrays and recursion. At the
start of this book, we will be revising the JavaScript language fundamentals that will be used throughout
this book. We will be looking into some of the problems in arrays and recursion too.
Then in the coming chapter we will be looking into Complexity Analysis. Followed by the various data
structures and their algorithms. Will look into a Linked-List, Stack, Queue, Trees, Heap, Hash-Table and
Graphs. We will also be looking into Sorting, Searching techniques.
We will be looking into algorithm analysis of various algorithm techniques. We will be looking into
Brute-Force algorithms, Greedy algorithms, Divide and Conquer algorithms, Dynamic Programming,
Reduction and Backtracking.
In the end, we will be looking into System Design that will give a systematic approach to solve the design
problems in an Interview.