Introduction to data structures. Program specification and design. Abstract data types; stacks and queues. Dynamic storage allocation. Sequential and linked implementation of stacks and queues. Searching methods, sequential and binary. Binary trees, binary search trees and general trees. Hashing. Computational complexity. Sorting algorithms: Selection sort, Insertion sort, Heapsort, Mergesort, and Quicksort. Comparison of sorting techniques and analysis.