Algorithms and Advanced Data Structures

Course ID 15351

Description The objective of this course is to study algorithms for 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 may have a few 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. THIS COURSE IS NOT OPEN TO COMPUTER SCIENCE MAJORS OR MINORS.

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. This course 15-351 is for undergraduates. Graduate students should enroll in 15-650.

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

Learning Resources
Piazza; Blackboard; 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-…