This book is about the usage of Data Structures and Algorithms in computer programming. GitHub We will be studying complexity analysis. Then will look into the various data structures and their algorithms. We will be studying Linked-List, Stack, Queue, Trees, Heap, Hash Table and Graphs. We will be studying Sorting & Searching techniques. Then we will be looking into algorithm analysis, we will be looking into Brute Force algorithms, Greedy algorithms, Divide & Conquer algorithms, Dynamic Programming, Reduction, and Backtracking. TABLE OF CONTENTS CHAPTER 0: HOW TO USE THIS BOOK CHAPTER 1: ALGORITHMS ANALYSIS CHAPTER 2: APPROACH TO SOLVE ALGORITHM DESIGN PROBLEMS CHAPTER 3: ABSTRACT DATA TYPE & RUBY COLLECTIONS CHAPTER 4: SEARCHING CHAPTER 5: SORTING CHAPTER 6: LINKED LIST CHAPTER 7: STACK CHAPTER 8: QUEUE CHAPTER 9: TREE CHAPTER 10: PRIORITY QUEUE CHAPTER 11: HASH-TABLE CHAPTER 12: GRAPHS CHAPTER 13: STRING ALGORITHMS CHAPTER 14: ALGORITHM DESIGN TECHNIQUES CHAPTER 15: BRUTE FORCE ALGORITHM CHAPTER 16: GREEDY ALGORITHM CHAPTER 17: DIVIDE-AND-CONQUER, DECREASE-AND-CONQUER CHAPTER 18: DYNAMIC PROGRAMMING CHAPTER 19: BACKTRACKING CHAPTER 20: COMPLEXITY THEORY AND NP COMPLETENESS