Course Outline: Introduction - Data Structures and Complexity of Algorithms, Time Space Tradeoff, Searching Techniques: Linear and Binary Searching; Sorting and Recursion - Discussion of Common Sorting Techniques: Insertion Sort, Selection Sort, Bubble Sort, Quick Sort, Merge Sort, Radix Sort; Factorial and Tower of Hanoi Problem; Linked Lists - Abstract Data Types, List ADTs, and Linked Lists: Singly, Two Way and Circular Linked Lists; Stacks and Queues - Stacks and Queues and their Implementation Strategies; Prefix, Infix and Postfix Expressions, their Transformation and Evaluation Algorithms; Hashing - Hash Indices and Hash Functions, Static and Dynamic Hashing, Collisions in Hash Indices and Collision Resolving Techniques; Trees - Tree Concepts, Binary Tree, BST, Heaps, Heap Sort, Huffman Encoding Technique, AVL Tree, B Tree and B+ Tree; Graphs - Graph Terminologies, Representing Graphs, Graph Searching: BFS and DFS, Shortest Path Problems, Minimum Spanning Tree, Minimum Spanning Tree Algorithms, and Topological Sorting; Problem Solving Strategy - Greedy Algorithms, Divide and Conquer Strategy, Dynamic Programming and Backtracking.