The purpose of the course is to:

Introduce problem solving using programs and design of algorithms and their complexity.

Review elementary data structures such as Arrays, Linked list, Stack, Queues,Trees and related algorithms for manipulating the data structures. It will also discuss

sorting and searching techniques, and their complexity. We will also briefly

explore more advanced data structures such as graphs and graph algorithms,

balanced trees, tries and heaps. An overview of parallelism and concurrent

data structures will also be given toward the end of the course.

Learn Algorithmic strategies such as greedy Algorithms, Dynamic

Programming and Divide and Conquer.