Course Description

This course focuses primarily on the design and analysis of algorithms. It begins with sorting and searching algorithms and then investigates graph algorithms. In order to study graph algorithms, general algorithm design patterns like dynamic programming and greedy algorithms are introduced. A section of this course is also devoted to understanding NP-Completeness.

Share Your Course Experience

If you have already taken this course, we request you to share your experience, tips, suggestions, and resources regarding this course in the comment box below. Examples include textbooks, websites, YouTube Channels, software tools that were valuable for your study, and/or your general experience with the course. Please do mind that this is not to “review” the course, instead of a repository for students’ collective knowledge. Your feedback here helps prospective students understand more about the course and make use of the student recommended resources to succeed in this course.

Course Pairing

596 is best taken alone, but can be taken with 594. 592 is a prerequisite. Average hours per week: 15-20


The views, information, or opinions expressed in the comments are solely those of the individuals involved and do not necessarily represent those of MOSA and/or University of Pennsylvania. As long as commenting guidelines are followed, they get published.

Please note that the comments should be less of a “review” and more of a repository for institutional knowledge. The content of the course may be changed and may become out-of-date. If the course changes in future, this page will be archived.