Skip to main content

CS303: Algorithms

Page path
  • Home /
  • Courses /
  • Course Catalog /
  • Computer Science /
  • CS303: Algorithms /
  • Unit 5: Dynamic Programming
Back to course 'CS303: Algorithms'
  • Unit 5: Dynamic Programming

    In this unit, we will study another popular computer science algorithmic paradigm called the dynamic programming. Dynamic programming, like the divide-and-conquer method, solves problem by combining solutions to sub-problems. Dynamic programming typically applies to optimization problems in which a set of choices must be made in order to arrive at an optimal solution. It is effective when a given sub-problem may arise from more than one partial set of choices. We will look into problems, such as the longest common subsequence and the knapsack problem, to explain the key ideas behind dynamic programming.

    Completing this unit should take you approximately 7 hours.

    • Unit 5 Learning Outcomes Page
    • 5.1: Introduction to Dynamic Programming

      •  University of California, Berkeley: S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's "Dynamic Programming" URL

        Read Chapter 6 of S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's book Algorithms.

    • 5.2: Dynamic Programming

      • Massachusetts Institute of Technology: Dr. Charles E. Leiserson's "Dynamic Programming, Longest Common Subsequence" Page

        Watch this video to learn about dynamic programming concepts.

    • 5.3: The Knapsack Problem

      • James Bedford's "Dynamic Programming - The Knapsack Problem" Page

        Watch this video series to learn about how the knapsack problem is solved using dynamic programming techniques.

    • 5.4: Dynamic Programming Examples

      •  Wikipedia: "Dynamic Programming" URL

        Read this article to learn about the different types of problems to which dynamic programming techniques are applied.

      •  Dynamic Programming Assignment URL

        Complete all questions in this activity. There is one question on the dynamic-programming paradigm that requires two implementations. The first one involves the use of the regular approach to matrix multiplication, and the second one requires the dynamic programming approach. You have to compare the runtimes for the two approaches. You can check your answers against the Answer Key.

Navigation

Art History
Biology
Business Administration
Chemistry
Communication
Economics
English
History
Mathematics

Creative Commons License
© Saylor Academy 2010-2018 except as otherwise noted. Excluding course final exams, content authored by Saylor Academy is available under a Creative Commons Attribution 3.0 Unported license. Third-party materials are the copyright of their respective owners and shared under various licenses. See www.saylor.org/open/licensinginformation for detailed licensing information.

Saylor Academy and Saylor.org® are trade names of the Constitution Foundation, a 501(c)(3) organization through which our educational activities are conducted.

Terms of Use | Privacy Policy