Concepts, representations and use of elementary data structures: pointers, arrays, linked lists, stacks, queues, graphs, trees, heaps and hash tables. Asymptotic complexity analysis. Divide and Conquer design and analysis. Binary Search. Recurrences Methods. Sort algorithms: selection sort, merge sort, quick sort, radix sort. Greedy Algorithms. Shortest Path algorithms. Breadth and Depth First Search. P and NP problems.