This course is an introduction to algorithms, especially those that are essential to data analytics. This course covers algorithms for sorting and searching, as well as greedy algorithms, dynamic programming, and graph algorithms. In addition, this course will focus on time and space analysis of algorithms (including big-O time and space analysis), recurrences, loop invariants, lower bounds, hashing, and NP-completeness. Some advanced data structures such as trees, stacks, and queues will be reviewed.
This course covers those topics found in a typical algorithms course that would be of most interest to students in Fordham's MS Program in Data Analytics. For this material, we will rely heavily on the Dasgupta text. In addition, we pick up a few topics that might be found in courses covering Discrete Mathematics for computer scientists and Data Structures. We will try to integrate these together as smoothly as possible.