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.
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 | Weight |
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 Online Exam | 25% |
Total | 100% |
The final examination for this course must be requested in advance and written under the supervision of an AU-approved exam invigilator. Invigilators include either ProctorU or an approved in-person invigilation centre that can accommodate online exams. Students are responsible for payment of any invigilation fees. Information on exam request deadlines, invigilators, and other exam-related questions, can be found at the Exams and grades section of the Calendar.
To learn more about assignments and examinations, please refer to Athabasca University’s online Calendar.
Materials
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.
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 | Weight |
Assignment | 50% |
Final Examination | 50% |
Total | 100% |
Challenge for credit course registration form