Algorithms & Advanced Data Structures

Course ID 15650

Description The objective of this course is to study general computational problems, with a focus on the principles used to design those algorithms. Efficient data structures will be discussed to support these algorithmic concepts. Topics include: Run time analysis, divide-and-conquer algorithms, dynamic programming algorithms, network flow algorithms, linear and integer programming, large-scale search algorithms and heuristics, efficient data storage and query, and NP-completeness. Although this course will have several programming assignments, it is primarily not a programming course. Instead, it will focus on the design and analysis of algorithms for general classes of problems. This course is not open to CS graduate students who should consider taking 15-651 instead.

Key Topics
Run time analysis; Divide-and-conquer algorithms; Dynamic programming algorithms; Network flow algorithms; Linear and integer programming; Large-scale search algorithms and heuristics; Efficient data storage and query; NP-completeness

Required Background Knowledge
Understanding of C and data structures from 15-122

Course Relevance
This course is for students not in the computer science major or minor who are interested in advanced data structures. 15-650 is for graduate students not in CS. Undergraduates should enroll in 15-351.

Course Goals
Ability to design, analyze complexity of, and prove the correctness of algorthims used with data structures.

Learning Resources
Piazza; Course Textbook

Assessment Structure
Homework 30%; Midterm 40%; Final Exam 30%

Course Link
https://www.csd.cs.cmu.edu/course-profiles/15-351-Algorithms-and-Advanced-Data-…