Introduction, the Array data type, the List abstract data type (ADT), Linked lists, Stacks, Queues, Trees, AVL Trees ,Huffman encoding , The Heap ADT, Priority queue implementation using the heap ADT, The Disjoint Sets ADT, The Table ADT, implementation using arrays, Skip lists, Table ADT implementation using Hashing, Collision resolution in Hashing, Other uses of Hashing, Sorting, and Selection sort, insertion sort, bubble sort algorithms, Divide and conquer strategy: merge sort, quick sort.