Computer Science (COMP) 372
Design and Analysis of Algorithms (Revision 1)

Delivery Mode: Individualized study online
Credits: 3
Area of Study: Science
Prerequisite: COMP 272 or an equivalent data structures course. Knowledge and skills in Java or C or Python programming. Knowledge of high school mathematics (MATH 30 level) is assumed.
Faculty: Faculty of Science and Technology
Centre: School of Computing and Information Systems
COMP 372 has a Challenge for Credit option.
**Note: Students who are concerned about not meeting the prerequisites for this course are encouraged to contact the course coordinator before registering
Overview
Algorithms are the core of most technologies used in contemporary computers. Practical applications of algorithms are ubiquitous.
COMP 372 introduces the fundamental techniques for designing and analyzing algorithms, including asymptotic analysis; divide-and-conquer algorithms, greedy algorithms, dynamic programming, multithreaded algorithms, number-theoretic algorithms and RSA cryptosystem, NP-completeness, and approximation algorithms. This senior-level course emphasizes techniques for constructing efficient algorithms and for analyzing the efficiency of an algorithm.
The algorithms in the course are described in English and in pseudocode that is readable by anyone who has done a little programming.
Course Outline
The course consists of the following nine units.
Unit 0 - Orientation
Unit 1 - Foundations
- Problems
- Complexity
- Analysis
- Asymptotic notation
Unit 2 - Divide-and-Conquer Algorithms
- The maximum-subarray problem
- Strassen’s algorithm for matrix multiplication
- Methods for solving recurrences
Unit 3 - Dynamic Programming and Longest Common Subsequence
- Rod cutting
- Matrix-chain multiplication
- Elements of dynamic programming
- Longest common subsequence
Unit 4 - Greedy Algorithms
- Greedy approach
- Data-compression (Huffman) codes
Unit 5 - Multithreaded Algorithms
- Dynamic multithreading model
- Metrics of work, span, and parallelism
- Matrices multiplication with multithreading
Unit 6 - Number-theoretic Algorithms and RSA Cryptosystem
- Basic concepts
- Euclid's algorithm
- Modular algorithm
- Repeated-squaring algorithm
- RSA public-key cryptosystem
Unit 7 - NP-completeness
- NP question
- NP-completeness
Unit 8 - Approximation Algorithms
- Performance ratio
- The vertex-cover problem
- The set-covering problem
- The subset-sum problem
Learning Outcomes
Upon successful completion of this course, you should be able to
- describe the major modern algorithms and selected techniques that are essential to today’s computers.
- identify the key characteristics of a given problem and analyze the suitability of a specific algorithm design technique for the problem.
- apply the algorithms and design techniques to solve problems, and mathematically evaluate the quality of the solutions, typically using the following algorithms:
- dynamic programming
- greedy
- multithreaded
- number-theoretic
- approximation
- analyze NP-complete problems and develop algorithms to solve the problems.
- implement a solution for a given problem and algorithm in high-level programming languages.
Evaluation
To receive credit for COMP 372, you must achieve a course composite grade of at least D (50 percent), and a grade of at least 50 percent on the invigilated final examination, and an average grade of at least 50 percent from the combined marks of the Assignments and Project. The weighting of the composite grade is as follows:
Activity | Weighting |
---|---|
Assignment 1 (problem set 1) | 10% |
Assignment 2 (problem set 2) | 15% |
Assignment 3 (problem set 3) | 15% |
Assignment 4 (problem set 4) | 15% |
Assignment 5 (project) | 15% |
Participation | 5% |
Final Exam | 25% |
Total | 100% |
To learn more about assignments and examinations, please refer to Athabasca University's online Calendar.
Course Materials
Textbook
Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms (3rd ed.). MIT Press.
Other Resources
The remaining learning materials are also distributed in electronic format. At this time, those materials include
- the units of the study guide
- detailed descriptions of the requirements for the individual assignments
- a course evaluation form
Additional supporting materials of interest to students may be made available through the course website.
Special Course Features
Computer Science 372: Design and Analysis of Algorithms is offered in unpaced electronic mode. Electronic unpaced study is facilitated through a variety of computer-mediated communication options and can be completed at the student's workplace or home.
Challenge for Credit Overview
The Challenge for Credit process allows you to demonstrate that you have acquired a command of the general subject matter, knowledge, intellectual and/or other skills that would normally be found in a university-level course.
Full information about Challenge for Credit can be found in the Undergraduate Calendar.
Challenge Evaluation
To receive credit for the COMP 372 challenge registration, you must achieve a grade of at least 75% on the assignment and B (75 percent) on the challenge examination. The weighting of the composite grade is as follows:
Activity | Weighting |
---|---|
Assignment | 50% |
Final Examination | 50% |
Total | 100% |
Undergraduate Challenge for Credit Course Registration Form
Athabasca University reserves the right to amend course outlines occasionally and without notice. Courses offered by other delivery methods may vary from their individualized-study counterparts.
Opened in Revision 1, March 3, 2014.