INTRODUCTION TO ALGORITHMS
Basic paradigms for the design and analysis of efficient algorithms: greed, divide-and-conquer, dynamic programming, reductions, and the use of randomness. Computational intractability including typical NP-complete problems and ways to deal with them.
Prerequisites & course information
Requisites: ( MATH/COMP SCI 240 or STAT/COMP SCI/MATH 475 ) and (COMP SCI 367 or 400 ), or graduate/professional standing, or declared in the Capstone Certificate in Computer Sciences for Professionals Course Designation: Core GenEd - Mathematics & Quantitative Reasoning Breadth - Natural Science Level - Advanced L&S Credit - L&S Liberal Arts and Science Repeatable for Credit: No Last Taught: Fall 2026 Learning Outcomes: 1. Design and analyze efficient algorithms based on the paradigms of divide-and-conquer, dynamic programming, and greed. Audience: Undergraduate 2. Construct clear, concise, and sound proofs for algorithmic correctness and complexity statements, applying logical reasoning, synthesizing definitions and theorems, and effectively communicating structured arguments. Audience: Undergraduate 3. Formulate abstractions of computational problems, and design and analyze efficient reductions between computational problems. Audience: Undergraduate 4. Describe, select and apply paradigmatic algorithms and reductions dealing with numbers, strings, graphs, and networks, including some that go beyond the standard paradigms and/or involve more intricate mathematics. Audience: Undergraduate 5. Recognize computational intractability, demonstrate NP-hardness, and articulate the repercussions. Audience: Undergraduate Learning Outcomes: 1. Design and analyze efficient algorithms based on the paradigms of divide-and-conquer, dynamic programming, and greed. Audience: Undergraduate 2. Construct clear, concise, and sound proofs for algorithmic correctness and complexity statements, applying logical reasoning, synthesizing definitions and theorems, and effectively communicating structured arguments. Audience: Undergraduate 3. Formulate abstractions of computational problems, and design and analyze efficient reductions between computational problems. Audience: Undergraduate 4. Describe, select and apply paradigmatic algorithms and reductions dealing with numbers, strings, graphs, and networks, including some that go beyond the standard paradigms and/or involve more intricate mathematics. Audience: Undergraduate 5. Recognize computational intractability, demonstrate NP-hardness, and articulate the repercussions. Audience: Undergraduate
Sources
- Course catalogue ↗2026-2027