The course consists of two parts. The first part covers data structures to
efficiently store, organize, modify, and access data. Topics include:
arrays, stacks, queues, linked lists, trees, sets, hash maps, priority
queues, and graphs. The second part covers the design and analysis of
algorithms for solving computer science problems. Topics include:
algorithm analysis, exhaustive search algorithms, divide-and-conquer
algorithms, greedy algorithms, and dynamic programming algorithms.
This course cannot be used to satisfy lecture course requirement for MS
students; it also cannot be used to satisfy qualifier requirements or credit
requirements for PhD students.