Study of advanced abstract information storage structures, including priority queues, binary trees, generalized trees, and graphs. Study of algorithm development techniques, including divide and conquer, greedy algorithms, and dynamic programming. Includes learning a programming language not used in CS 2321 and CS 2322. Prerequisites: CS 2322 and MATH 2210 or consent of the instructor.