COMP 340: Analysis of Algorithms, Spring 2020

As of March 18, 2020, this course has been moved to Moodle due to COVID-19. This page remains as a syllabus, but the schedule, assignments, and many policies no longer apply.

This syllabus is subject to change based on specific class needs, especially the schedule. Significant deviations will be discussed in class.



The study of algorithms is one of the most crucial areas of in Computer Science. In this course, students will learn the basic tools of algorithm design and analysis through the study of some of the most well known and important algorithms. By the end of the semester, students will have developed not only a firm grounding in the analysis and design of algorithms, but working knowledge of the algorithms that have made computing what it is today.

There are too many algorithms topics to cover fully in a one semester course. To compensate, students will complete an in-depth research project on an algorithms-related topic of their choice, providing not only further depth but also project management skills. While this class focuses mostly on the theoretical design and analysis of algorithms, students will have opportunities to implement algorithms in the language of their choice.


This course will emphasize the first nine chapters of the main text (TADM) plus occasional material from other sources:

Time permitting, we’ll explore more advanced topics, such as probabilistic or approximation algorithms.


The required course textbook is:

We will occasionally pull material from other sources, especially for parallel algorithms. Any required readings will be posted on this webpage as needed.

I encourage you to take advantage of the wealth of algorithms study resources that can be found online. This material can be difficult; exposure to multiple sources is always useful and sometimes necessary to fully grasp it. I will list here some resources that may be useful (and fun!). Please suggest links to add as you find them.


Assignments and Workload

The weekly workload for this course will vary by student and over the semester, but on average should be about 13 hours per week. The follow table provides a rough estimate of the distribution of this time over different course components for a 16 week semester.

Category Amount Final Grade Weight Average Time/Week (Hours)
Lectures 52 10% (Participation) 3.33
Problem Sets 6–8 25% 4.5
Quizzes 5–7 25% -
Research Project 1 20% 1.5
Exam/Quiz Study - - 1.67
Exams 2 20% -
Reading - - 2

Generally problem sets and quizzes will alternate weeks. There will be a research project on any algorithms-related topic, culminating in a paper and presentation to the class. There are two exams – a midterm and a final – both worth 10% each. The final exam will focus primarily, but not exclusively, on material covered since the midterm. In other words, it will contain a few questions on material from the first half of the semester.


Your participation grade is based on a variety of activities. During class I will often make use of the Socrative app, so you’ll need to install this on your phones. Participating in Socrative questions and with in-class group activities is required for a decent participation grade; an A includes asking questions either in class or in office hours.

Your final grade is based on a weighted average of particular assignment categories, with weights shown above. You can estimate your current grade based on your scores and these weights. You may always visit the instructor outside of class to discuss your current standing. Assignments and final grades use a standard grading scale shown below and will not be curved except in rare cases when deemed necessary by the instructor.

This courses uses a standard grading scale. Assignments and final grades will not be curved except in rare cases when its deemed necessary by the instructor. Percentage grades translate to letter grades as follows:

Score Grade
94–100 A
90–93 A-
88–89 B+
82–87 B
80–81 B-
78–79 C+
72–77 C
70–71 C-
68–69 D+
62–67 D
60–61 D-
0–59 F

You are always welcome to challenge a grade that you feel is unfair or calculated incorrectly. Mistakes made in your favor will never be corrected to lower your grade. Mistakes made not in your favor will be corrected. Basically, after the initial grading your score can only go up as the result of a challenge*.

You are always welcome to challenge a grade that you feel is unfair or calculated incorrectly. Mistakes made in your favor will never be corrected to lower your grade. Mistakes made not in your favor will be corrected. Basically, after the initial grading your score can only go up as the result of a challenge.



The following tentative calendar should give you a feel for how work is distributed throughout the semester. Assignments and events are listed in the week they are due or when they occur. This calendar is subject to change based on the circumstances of the course.

Unless otherwise specified, the readings come from TADM.

Date Topic Assignment
Fri 01/17 Intro to Algorithm Design 1.1-1.3
Mon 01/20 Interval Scheduling, Reasoning about Correctness 1.4-1.6
Tue 01/21 Correctness Proof Exercises  
Wed 01/22 Big-O/Complexity Review 2.1-2.4
Fri 01/24 Analyzing Selection Sort PS 1 out (Solutions), 2.5-2.8
Mon 01/27 More Efficiency Analysis  
Tue 01/28 Basic Data Structures 3.1-3.2, Quiz 1 (Solutions)
Wed 01/29 Dictionaries and Trees 3.3
Fri 01/31 (Candidate Teaching Demo)  
Mon 02/03 Balanced Binary Search Trees; PS 1 Questions 3.4
Tue 02/04 Priority Queues and Heapsort 3.5, 4.1-4.3
Wed 02/05 PS 1 Questions  
Fri 02/07 Heaps; Hashing PS 2 out (Solutions), 3.7
Mon 02/10 Searching 4.9
Tue 02/11 Divide & Conquer: Mergesort 4.5, 4.10
Wed 02/12 Analyzing Recurrences 4.10
Fri 02/14 PS 2 Questions Quiz 2 (Solutions)
Mon 02/17 Quicksort Intuition 4.6
Tue 02/18 Quicksort Analysis  
Wed 02/19 Problem Set Questions  
Fri 02/21 Problem Set Review; Quickselect PS 3 out, (Solutions)
Mon 02/24 Parallel Algorithms  
Tue 02/25 Parallel Algorithm Analysis  
Wed 02/26 (EE Candidate Teaching Demo)  
Fri 02/28 Prefix Sums I Project out
Mon 03/02 Problem set 3 exercises PS 3 due,
Tue 03/03 Midterm Review; Prefix Sums II  
Wed 03/04 Midterm (Solutions) PS 4 out
(Fri 03/06) (No class – Exam day for half-semester classes)  
(Mon 03/09) (No class – Spring Break)  
(Tue 03/10) (No class – Spring Break)  
(Wed 03/11) (No class – Spring Break)  
(Fri 03/13) (No class – Spring Break)  
Mon 03/16 (No class – COVID-19)  
Tue 03/17 (No class – COVID-19) 5.1-5.4
Wed 03/18 (No class – COVID-19) 5.5-5.7
Fri 03/20 (No class – COVID-19) Quiz 3
Mon 03/23 Intro to Online Learning 5.8-5.10
Tue 03/24   6.3-6.4
Wed 03/25   6.1-6.2
Fri 03/27   PS 5 out, 6.3-6.4
Mon 03/30 Graphs and Graph Algorithms  
Tue 03/31    
Wed 04/01    
Fri 04/03   Quiz 4
Mon 04/06    
Tue 04/07 Heuristics  
Wed 04/08   PS 6 out,
(Fri 04/10) (No class – Easter Break)  
(Mon 04/13) (No class – Easter Break)  
(Tue 04/14) (No class – Scholars Day)  
Wed 04/15   Anno. Bib. due,
Fri 04/17   Quiz 5,
Mon 04/20 Dynamic Programming I  
Tue 04/21    
Wed 04/22    
Fri 04/24   PS 7 out
Mon 04/27 Dynamic Programming II  
Tue 04/28    
Wed 04/29   Paper Due, Peer Review out
Fri 05/01   Quiz 6
Mon 05/04 Intractable Problems Peer Review Due
Tue 05/05    
Wed 05/06   Presentations Due
Fri 05/08 3:00 PM Final Exam  

Monmouth College Services