COMPSCI 311: Introduction to Algorithms

Hung Le and Marius Minea

Spring 2021

Welcome to the Spring 2021 homepage for COMPSCI 311: Introduction to Algorithms.
The course will be co-taught by Prof. Hung Le and Marius Minea. The two sections will share TAs and graders, Moodle, Campuswire and Gradescope sites, and there will be common assignments, quizzes, and midterms, and same or similar finals.

Course Expectation and Objectives

This course will introduce you to algorithms in a variety of areas of interest, including graph and network algorithms, scheduling, searching, sorting, and string processing. To implement in code solutions to complex problems, we must first design such algorithms. This typically involves:

You will learn perform this process of algorithm design using several algorithmic paradigms, including greedy algorithms, divide and conquer, dynamic programming, and network flow. Finally, you will learn to recognize when no efficient algorithm solves the problem, understand NP-completeness and computational intractability, and see how approximation or randomized algorithms provide alternatives.

Prerequisites: COMPSCI 187 and either COMPSCI 250 or MATH 455. Mathematical experience (as provided by COMPSCI 250) is required. You should also be able to program in Java, C, Python, or some other closely related language.

Course Staff
Resources Course Format
We will use the "flipped classroom" format. Before each scheduled lecture, you are expected to watch the recorded course videos, and answer a few comprehension questions. You are encouraged to attend the synchronous sessions, where we will discuss and answer questions about the material, and jointly solve problems. You will also solve problems in the weekly discussion sections, working in groups. There will be learning assessment quizzes for each topic (usually weekly), and homework assigments (every two weeks).

Grading

We allow dropping questions in 2 lessons and 2 discussions without affecting your final grade. You also get one late day to use on one homework of your choice.
Learning Goal Quizzes will be weekly and can be re-attempted. Each student is granted 4 tokens; each token can be used to "buy" one quiz. Each quiz consists of 5-10 multiple-choice questions. Students are allowed to re-attempt each wrong question once, at the cost of a 50% mark of the question. Quizzes are graded as passed or failed: a quiz is graded as passed if the student earns at least 70% mark of the quiz. The final grade will be as follows: Schedule
The is a tentative schedule which might suffer changes. See also the page for Spring 2020.
Lecture Topics Readings
1 Introduction and Stable Matching Chapter 1.1
2 Algorithm Analysis and Asymptotics Ch 2.1, 2.2
3 Algorithm Analysis, Graphs Ch 3.1, 3.2
4 Graphs Ch 3.3, 3.4
5 Graphs Ch 3.5, 3.6
6 Greedy Algorithms Ch 4.1
7 Greedy Algorithms Ch 4.2, 4.3
8 Greedy Algorithms Ch. 4.4
9 Greedy Algorithms Ch. 4.5, 4.6
10 Divide and Conquer Ch. 5.1, 5.2
11 Divide and Conquer Ch. 5.4, 5.5
12 Divide and Conquer Ch. 5.2
13 Dynamic Programming Ch. 6.1, 6.2
14 Dynamic Programming Ch. 6.3, 6.4
15 Dynamic Programming Ch. 6.6
16 Dynamic Programming Ch. 6.8
17 Network Flow Ch. 7.1, 7.2
18 Network Flow Ch. 7.2, 7.3
19 Network Flow Ch. 7.5
20 Intractability Ch. 8.1
21 Intractability Ch. 8.2, 8.3
22 Intractability Ch 8.3
23 Intractability Ch 8.4
24 Approximation Algorithms Ch 11.1, 11.2
25 Randomized Algorithms Ch 13.1, 13.2, 13.4
26 Approximation/Randomization/Review

Academic Honesty and Collaboration Policy

You must do lesson questions, learning assessment quizzes and exams (midterms and final) on your own, using only the specified sources. You may collaborate with a few other students on homework assignments, provided that (a) you indicate anyone with whom you worked and (b) the final presentation is entirely your own. As a guideline, to distinguish discussion from plagiarism, it is useful to divide work into an "ideas phase", in which you can discuss problems (verbally or perhaps using a whiteboard) but do not leave with share written matter, and a "writeup phase", which you do on your own. If you have questions about this matter, please ask.
As members of the College of Information and Computer Sciences at UMass Amherst we expect everyone to behave responsibly and honorably. In particular, we expect each of you not to give, receive, or use aid in examinations, nor to give, receive, or use unpermitted aid in any academic work. Doing your part in observing this code, and ensuring that others do likewise is essential for having a community of respect, integrity, fairness, and trust.
If you cheat in a course, you are taking away from your own opportunity to learn and develop as a professional. You also hurt your colleagues, and this will hurt people you will work with in the future, who expect an honest and responsible professional.
As faculty, we pledge to use academic policies designed for fairness, avoiding situations that are conducive to violating academic honesty, as well as unreasonable or unusual procedures that assume dishonesty.
We will follow the university's Academic Honesty Policy and Procedures. This means we will report instances of dishonesty, which may lead to formal sanction and/or failing the course.

Equity and Inclusion Statement

We are committed to fostering a culture of diversity and inclusion, where everyone is treated with dignity and respect. This course is for everyone. This course is for you, regardless of your age, background, citizenship, disability, sex, education, ethnicity, family status, gender, gender identity, geographical origin, language, military experience, political views, race, religion, sexual orientation, socioeconomic status, or work experience.
Because of that, we should realize that we will be bringing different skills to the course, and we will all be learning from and with each other. We may have different background and skills in courses taken, mathematical, algorithmic, coding or testing background, ways to communicate orally and in writing, working alone or in groups, or plans for professional careers.
Please be kind and courteous. There’s no need to be mean or rude. Respect that people have differences of opinion, and work and approach problems differently. There is seldom a single right answer to complicated questions. Please keep unstructured critique to a minimum; any criticism should be constructive.
Disruptive behavior is not welcome, and insulting, demeaning, or harassing anyone is unacceptable. In particular, we don’t tolerate behavior that excludes people in socially marginalized groups. If you feel you have been or are being harassed or made uncomfortable by someone in this class, please contact a member of the course staff immediately, or if you feel uncomfortable doing so, contact the Dean of Students office.
This course is for all of us. We will all learn from each other. Welcome! Disability Accomodations The University of Massachusetts Amherst is committed to making reasonable, effective and appropriate accommodations to meet the needs of students with disabilities and help create a barrier-free campus. If you have a disability and require accommodations, please register with Disability Services to have an accommodation letter sent to your faculty. Information on services and materials for registering is available on the University of Massachusetts Amherst Disability Services page.