Introduction to data structures and algorithms; complexity analysis; arrays; sorting algorithms: insertion sort, selection sort, bubble sort, shell sort, heap sort, quick sort, merge sort, radix sort, bucket sort; linked lists: singly linked lists, doubly linked lists, circular list; stacks, queues, and priority queue; Recursion: Function call and recursion implementation, tail recursion, non-tail recursion, indirect recursion, nested recursion, backtracking. Trees: binary trees, binary heap, binary search. tree traversal, insertion, deletion, and balancing a tree; heap; B-Tree; Spanning Tree, Splay Trees; graphs: representation, traversal, shortest path, and cycle detection; isomorphic graphs; graph traversal algorithms; hashing; memory management and garbage collection.