CSCI345 Algorithms and Data Structures II (3 semester hours)

The course will present advanced concepts related to hashes, trees, graphs, linear programming, and multithreading. Students study techniques for designing algorithms and for analyzing the time and space efficiency of algorithms. The course will introduce students to computational models and computational complexity like NP-Completeness, as well as how to develop key algorithms for advanced types of trees, analyze NP-Completeness, apply advanced concepts related to graphs, analyze topics related to multithreaded algorithms, and compare different algorithm strategies. The algorithm design techniques include divide-and-conquer, greedy algorithms, dynamic programming, randomized algorithms, and parallel algorithms. (Prerequisite: CSCI240)