### 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