This course studies the implementation of abstract data structures and the efficiency analysis of algorithms. There will be required programming projects. Topics will include algorithm analysis, recursion, sorting, randomization, graph algorithms, hash tables, and the implementation of abstract data structures (lists, stacks, queues and trees). This course is not applicable to the Computer Science Master's program. Prerequisite: CSC 506.