Welcome to COMP 4500 - Algorithm Analysis and Design! This website is designed to keep you informed about the schedule, policies, assignments, and other elements of the course.

Meeting Time and Place

Time: MWF 9:10 - 10:05 a.m.
Location: Point 113
Prerequisites: COMP 2100
COMP 2230

Instructor

Name: Dr. Barry Wittman
E-mail: wittman1@otterbein.edu
Office: Point 105
Phone: (614) 823-2944
Office Hours: MWF 10:15 - 11:15 a.m.
MWF 2:00 - 4:00 p.m.
TR 10:00 - 11:15 a.m.
T 2:00 - 4:00 p.m.
R 2:00 - 5:00 p.m.
and by appointment

Text Book

Jon Kleinberg and Éva Tardos
Algorithm Design
1st Edition, 2005, Pearson
ISBN-10: 0321295358
ISBN-13: 978-0321295354
Available through Amazon here


Course Catalog Description

Formal techniques for the analysis of algorithmic complexity, both space and time. Algorithm design techniques, such as brute force, divide and conquer, dynamic programming, backtracking, etc., are explored. Advanced algorithms and data structures are introduced. The concept of computational complexity is introduced along with NP-completeness.

For official course syllabus, please click here.

Student Learning Outcomes

By the end of the course, students will be able to:

  1. Apply knowledge of computing and mathematics appropriate to the discipline, including algorithms and their analysis, to solve problems
  2. Determine the Big O bound for many kinds of iterative and recursive algorithms
  3. Design greedy solutions for problems
  4. Design divide-and-conquer solutions for problems
  5. Design dynamic programming solutions for problems
  6. Apply and analyze graph algorithms, including:
    1. Connectivity
    2. Minimum spanning tree
    3. Shortest path
    4. Topological sort
  7. Prove that problems are NP-complete
  8. Prove bounds on approximation algorithms

Program Learning Outcomes

The Computer Science major has a set of ten Student Learning Outcomes (SLOs). Work in this course contributes to the following SLOs:

  1. Students are proficient in logic and discrete mathematics.
  2. Students can methodically solve algorithmic problems in at least one programming language.
  3. Students can develop an understanding of the recurring themes of abstraction and computation.