CMPSCI 311—Fall 2023
Introduction to Algorithms (Section 01, Sheldon; Section 02, Parvini)

Welcome to the Fall 2023 homepage for CMPSCI 311: Introduction to Algorithms. Below find basic information, coursework and schedule, and detailed course policies.

Basic Information

Section 01 Tuesday, Thursday 11:30-12:45pm
Goessmann Lab 20
Instructor: Dan Sheldon (sheldon at )
Section 02 Monday, Wednesday 2:30-3:45pm
Goessmann Lab 20
Instructor: Ghazaleh Parvini
Discussion Friday 10:10–11:00am, Ag. Engineering 119 (Section 01AA)
Friday 11:15am–12:05pm, Flint Lab 201 (Section 01AB)
Friday 12:20–1:10pm, Flint Lab 201 (Section 01AC)
Friday 10:10–11:00am, Marston 211 (Section 02AA)
Friday 11:15am–12:05pm, Engineering Lab 304 (Section 02AB)
Friday 12:20–1:10pm, Engineering Lab 304 (Section 02AC)
Required Textbook Algorithm Design, 1st edition by Jon Kleinberg and Eva Tardos
Echo 360 (Section 1)
Echo 360 (Section 2)
TAs Chloe Becquey (cbecquey at
Yuefeng Peng (yuefengpeng at
Yi Wei (yiw at
Mahsa Sahebdel Alamdari (msahebdelala at
Md Abdual Aowal (aowal at
UCAs Suryam Gupta (Head UCA), Ben Burns (Head UCA), Jacob Gray, Aryan Dang, Stav Kinreich, Rohit Goli, Vidit Shah, Aniruddha Sen, Quang Dang, Thomas Ji, Ji Cao, Aditya Singh, Ibrahim Hasaan, Iris Xia
Office Hours Complete list

Coursework and Schedule


Online Homework Assignments

Weekly online assignments be posted on Gradescope and due on Fridays at 11:59pm.

Challenge Problem Sets

Challenge problem sets will be posted here and submitted on Gradescope

(due dates tentative until posted and likely to change; typically posted 2 weeks before due date, plus or minus a couple days)


Here is an approximate schedule for the course. This is subject to change and will be updated as we go. Slides will be added after class—links will be broken until they are added. (Update: for now, slides are being posted to Moodle instead of here.) Lectures may include board work that is not captured digitally. Another set of slides that roughly matches the material we cover can be found here.

Week Dates Topic Reading and Background
1 Lec 01 9/5–9/6 Introduction and Stable Matching Chapter 1
9/7 SECTION 01: NO CLASS (to sync with Section 2)
Dis 01 9/8
2 Lec 02 9/11–9/12 Algorithm Analysis Chapter 2.1, 2.2
Lec 03 9/13–9/14 Algorithm Analysis Chapter 2.4
Dis 02 9/15
3 Lec 04 9/18–9/19 Algorithm Analysis / Graphs Chapter 3.1, 3.2
Lec 05 9/20–9/21 Graphs Chapter 3.3, 3.4
Dis 03 9/22
4 Lec 06 9/25–9/26 Graphs Chapter 3.5, 3.6
Lec 07 9/27–9/28 Greedy Chapter 4.1
Dis 04 9/29
5 Lec 08 10/2–10/3 Greedy Chapter 4.2
Lec 09 10/4–10/5 Greedy Chapter 4.4
Dis 05 10/6
Lec 10 10/11–10/12 Greedy Chapter 4.5, 4.6
Dis 06 10/13
7 Lec 11 10/16–10/17 Divide and Conquer Chapter 5.1, 5.2
Lec 12 10/18–10/19 Divide and Conquer Chapter 5.4, 5.5
Dis 07 10/20
8 Lec 13 10/23–10/24 Divide and Conquer Chapter 5.2, 5.6
Lec 14 10/25–10/26 Dynamic Programming Chapter 6.1, 6.2
Dis 08 10/27
9 Lec 15 10/30–10/31 Dynamic Programming Chapter 6.3, 6.4
Lec 16 11/1–11/2 Dynamic Programming Chapter 6.6
Dis 09 11/3 Discussion
10 Lec 17 11/6–11/7 Dynamic Programming Chapter 6.8
Lec 18 11/8–11/9 Network Flow Chapter 7.1, 7.2
Dis 10 11/10
11 Lec 19 11/13–11/14 Network Flow Chapter 7.2, 7.3
Lec 20 11/15–11/16 Network Flow Chapter 7.5, 7.10
Dis 11 11/17
12 Lec 21 11/20–11/21 Intractability Chapter 8.1
13 Lec 22 11/27–11/28 Intractability Chapter 8.2, 8.3
Lec 23 11/29–11/30 Intractability Chapter 8.3
Dis 12 12/1 Discussion
14 Lec 24 12/4–12/5 Intractability Chapter 8.4
Lec 25 12/6–12/7 Approximation Algorithms / Review Chapter 11.1, 11.2
Dis 13 12/8 Discussion

Detailed Policies

(subject to change until classes begin)


CS 187 and CS 250 are important prerequisites. These provide familiarity with basic data structures and mathematical reasoning. You should be able to program in Java, C, or a related language.


The required textbook is Algorithm Design, 1st edition by Jon Kleinberg and Eva Tardos. It will be used for readings and homework problems.


The iClicker2 student remote is required for participation in lecture and can be bought through the UMass eCampus virtual book store.


Attendance is required at lectures and discussion sections and will contribute to your participation grade. See the Participation section and Excused Absences section below for details about the participation grade and excused absences.


Students will complete:


The grade percentages are as follows:

To compute the final grade, all grades will be mapped to a ten point scale and then averaged:

The overall average grade will be rounded to the nearest hundredth, and then grade ranges for final letter grades will be approximately: A (9.33-10.00), A- (9.00-9.32), B+ (8.67-8.99), B (8.33-8.66), B- (8.00-8.32), C+ (7.67-7.99), C (7.33-7.66), C- (7.00-7.32), D+ (6.67-6.99), D (6.00-6.66), F (0-5.99). The instructors reserve the right to adjust grade thresholds, but will not increase the minimum score required to receive any letter grade.


The course staff will pursue academic honesty charges for any suspected violation of course collaboration and cheating policies.

Participation (Discussions and iClicker)

You will receive credit for completing discussion exercises and answering iClicker questions during lectures:

We reserve the right to change particpation grading (e.g., to grade discussion exercises for completeness or correctness) if engagement is a problem.

Excused Absences

Excused absences for reasons such as religious observation, athletic events, field trips, health reasons, or other extenuating non-academic reasons are allowed under the University’s class absence policy. Every student in 311 will automatically be excused from up to three lecture absences and up to two discussion absences. You do not need to contact the course staff. This will be implemented by dropping the lowest three lecture participation grades and lowest two discussion grades for all students.

If you want to request additional excused absences, and all of the absences are for valid reasons, please fill out this form. Because the automatic excusals are meant to cover absences for valid reasons, when filling out the form for the first time you must explain the valid reasons for all previously excused absences. For example, if you want to request a fourth excused lecture absence, you should explain your valid reasons for missing all four lectures—the three that were automatically excused as well as the fourth one. Please use the registrar’s class absence policy for guidance when requesting absences and providing documentation.

Online Homework Assignments

Online Gradescope homework assignments will due most Fridays and posted about a week in advance. These will focus on mastery of learning goals and mimic the types of questions you can expect on exams.

Challenge Problems

These usually involve designing an algorithm for a novel problem and proving it correct. They assess your ability to apply the more concrete learning goals to solve new problems, and to use logic and language to precisely communicate your solution and justify why it is correct.

Challenge problems will be graded as one of ✗, ✓–, ✓, or ✓+ using the rubric described below. Grades of ✓ and ✓+ indicate mastery and will contribute to your homework grade as follows:

Grade Criteria
A+ Complete at least 14 challenge problems with ✓ or better; including at least 7 with ✓+
A Complete at least 12 challenge problems with ✓ or better; including at least 6 with ✓+
B Complete at least 8 challenge problems with ✓ or better; including at least 4 with ✓+
C Complete at least 6 challenge problems with a ✓
D Attempt at least 6 challenge problems and complete at least 3 challenge problems with a ✓

For example, to earn a C you should aim to complete one challenge problem per assignment with a ✓ or better. To earn an A, you should aim to complete two per assigment with ✓ or better with one a ✓+. Since you don’t need to complete every problem, you are encouraged to focus your efforts on producing high-quality solutions to the problems you feel confident about. There is no benefit to guessing or writing vague answers to a problem you don’t know how to solve.


This rubric is based on Mark Talbert’s EMRN rubric:

Mark Criteria
✓+ The work meets or exceeds the expectations of the assignment. Communication is clear and complete. Mastery of the concepts is evident. There are no non-trivial errors. This work could be used as a classroom example. For an algorithm design problem: the algorithm is correct and clearly communicated, the running-time is correctly analyzed, and a convincing proof of correctness is given. There may be minor mistakes or omissions but no significant logic gaps.
Understanding of the concepts is evident through correct work and clear, audience-appropriate explanations. Some revision or expansion is needed, but no significant gaps or errors are present. No additional instruction on the concepts is needed. For an algorithm design problem: the major components of the algorithm are correct, and a running-time analysis and proof are given. All parts of the solution are communicated in a way that a peer who didn’t already know the solution could understand it. There may be some logic gaps, but, on balance, the solution “hangs together”.
✓– Partial understanding of the concepts is evident, but there are significant gaps that remain. Needs further work, more review, and/or improved explanations.
Not enough information is present in the work to determine whether there is understanding of the concepts. The work is fragmentary of contains significant omissions. Or, there are too many issues to justify correcting each one.

Here is a link to a flow chart illustration of the rubric.

Gradescope Submission

Challenge problems will be submitted via Gradescope. You must submit challenge problems as a single pdf (see Gradescope instructions):

Work that is not submitted in the correct format, is unreadable, or is excessively messy risks not being graded.


Intructors will post solutions to moodle 24 hours after the homework submission deadline and release the Gradescope assignment back to students for self-assessment. Each problem will be temporarily graded as “awaiting self-assessment”. Self-assessments will typically be due 3 days after the submission deadline and 48 hours after solutions are posted. For each problem attempted, you must:

  1. Give yourself an assessment mark, either ✗, ✓–, ✓, or ✓+, based on the rubric above.
  2. Provide a short reflection on why you earned that mark, such as
    1. “My solution was on point and very similar to the posted solution”
    2. “I was confused by the definition of…”
    3. “I incorrectly assumed that …”
  3. (optional) Ask specific questions to prompt instructor or TA feedback, such as:
    1. “Can you check if this is actually a counterexample?”
    2. (indicate part of a proof you’re unsure of) “I didn’t know how to phrase this – is what I wrote on track?”
  4. (optional) Provide one hint for the problem (to your past self or future student)
  5. Submit the self-assessment by opening a regrade request on Gradescope for the problem and typing the text of your self-assessment in the text box for the regrade request. Here is a link to instructions on submitting a regrade request on Gradescope.

Late policy

Late work that is not excused will receive no credit. A small grace period (on the order of 10 minutes) will generally be granted to accommodate technical issues, but it is best not rely on this.

Every student may use up to three “late days” to excuse late work (either online assignments or challenge problems):

To use a late day, you do not need to notify course staff; just submit within 24 hours after the due date, and we will automatically deduct one late day from your total.

In exceptional circumstances, students may be granted extensions by the instructors. If so, it is a violation of course policies to look at posted solutions prior to submitting work.


The discussion section will be used every week except when noted on the course schedule and will consist of exercises to practice solving problems in small groups. Attendance is required.

Detailed Learning Goals

(Numbers 2 and higher correspond to chapters in Kleinberg and Tardos.)

  1. Cross-Cutting. Develop skills in abstract reasoning and communication about algorithms
    1. Use logic to reason about algorithms
    2. Use self-regulated learning to solve challenging problems that require multiple cycles of planning, executing, assessment, and adaptation
    3. Use language, pseudocode, and mathematical notation to understand and communicate precisely about algorithms
  2. Basics of Algorithm Analysis. Use asymptotic order notation (big-O, big-Omega, and big-Theta) to analyze running times and compare growth rates
    1. Prove statements about asymptotic order notation
    2. Compare growth rates of different functions
    3. Analyze the running time of algorithms
  3. Graphs. Understand graph definitions, graph traversal algorithms, and how they are used as building blocks of algorithms
    1. Work with graph definitions and execute traversal algorithms on example graphs
    2. Design algorithms using graph traversal
  4. Greedy algorithms. Design greedy algorithms and understand greedy proof techniques
    1. Evaluate greedy rules for optimality
    2. Prove correctness of greedy algorithms
    3. Reason about shortest paths, cuts, cycles, and spanning trees in graphs
    4. Work with Dijkstra’s, Prim’s, and Kruskal’s algorithms in examples
  5. Divide-and-Conquer. Understand the divide-and-conquer design technique and analyze the running-time of recursive algorithms.
    1. Use unrolling, recursion trees, and the master theorem to solve recurrences
    2. Verify the solution to a recurrence using induction
    3. Design divide-and-conquer algorithms and argue correctness
  6. Dynamic Programming. Design dynamic programming algorithms
    1. Write a recurrence for the optimal value of a dynamic programming problem
    2. Translate a recurrence into an iterative algorithm to compute the optimal value
    3. Modify an iterative algorithm for the optimal value to recover the optimal solution
  7. Network Flows. Understand network flows and use them to design algorithms
    1. Work with cuts and flows and execute the Ford-Fulkerson algorithm in example networks
    2. Design algorithms to solve network flow applications
  8. Intractability. Reason about intractability
    1. Design polynomial-time reductions between pairs of problems
    2. Prove that a problem is NP-complete using polynomial-time reductions

Course Technology

Communication Policy

Please use Piazza to ask questions about course material. Use the excused absence questionnaire to request an excused absence (see the Participation section). We prefer that you use Piazza to contact instructors about other topics, but you may use email to contact us confidentially.

We will do our best to respond within 1 “business day” (i.e., a day when classes meet). For messages received during the evening, on weekends, or on holidays, we may respond, but please do not expect a response until the next business day.


Please read the CICS inclusivity statement, copied here:

At the Manning College of Information and Computer Sciences, we believe that you belong in computing. We welcome and value all individuals, regardless of previous computer science experience, age, citizenship, disability, sex, gender identity, military experience, political views, race, religion, or sexual orientation, while maintaining an environment that celebrates, welcomes, and honors those differences.

We’re committed to supporting all our students through their journeys in computer and information sciences–especially students from identities and backgrounds that are still underrepresented in our field. Diverse perspectives on the challenges our society faces animate our vision of Computing for the Common Good. Your insight, talents, and skills are needed to protect and improve an ecosystem that relies on the combined efforts of the greatest technical minds, and we believe your place is here.

Accommodations for Disabilities

If you have a disability and would like to request accommodations, please contact Disability Services, located in 161 Whitmore Hall, (413) 545-0892. If you are eligible, they will grant you accommodations and notify the instructors.