A detailed study of more advanced data structures and algorithms, including concepts and techniques of design efficiency and complexity of algorithms and their lower bounds. Topics include search trees, hash functions, string searching, disjoint sets, internal and external sorting, graphs and graph algorithms, and different algorithm design technique. Prerequisites: CS 250 - Algorithms and Problem-Solving II and CS 275 - Mathematical Foundations of Algorithms. Grade only. Offered each semester on Winona and Rochester campuses.