CPSC 320 is about several broad categories of problems and problem-solving
techniques (such as greedy algorithms, divide-and-conquer algorithms, dynamic
programming, and the class of NP-complete problems) and gaining the tools and
experience necessary to judge how a new problem might fit one of these categories, how
to approach solving the problem, and how to analyze and adjust your solution.
At the end of the course, you will be able to:
- Recognize which algorithm design technique(s), such as divide and conquer,
prune and search, greedy strategies, or dynamic programming was used in a given
algorithm.
- Select and judge several promising paradigms and/or data structures
(possibly slightly modified) for a given problem by analyzing the problem's
properties.
- Implement a solution to a problem using a specified algorithm design
paradigm, given sufficient information about the form of that problem's
solution
- Select, judge and apply promising mathematical techniques (such as
asymptotic notations, recurrence relations, amortized analysis and decision trees)
to establish reasonably tight upper and lower bounds on the running time of
algorithms.
- Recognize similarities between a new problem and some of the problems you
have encountered, and judge whether or not these similarities can be leveraged
towards designing an algorithm for the new problem.
A more detailed list of topics-level learning goals can be found here.