CP312 Course Introduction and Algorithm Design Fundamentals

What You Should Learn from CP312

  • Main Idea: Given a problem, how to design an efficient algorithm that solves it.

  • Learning Outcomes:

    • Learn good algorithms for basic problems.

    • Understand paradigms or ways to solve problems (e.g., Greedy, Divide & Conquer, Dynamic Programming).

    • Gain skills in proving algorithm correctness.

    • Learn how to assess algorithm efficiency.

Course Overview

  • Introduction:

    • An example demonstrating how designing a better algorithm can lead to a faster program.

    • Review of core concepts: problem, algorithm, time complexity, and asymptotic notation.

  • Algorithm Design Techniques:

    • Every problem requires an individual approach; there is no universal