Class home | Detailed schedule | Blackboard | Collaboration policy
Algorithms are the backbone of computer science. Everywhere computer
sciences reaches, there is an algorithm. This class is an introduction
to critical thinking and problem solving through the design and
analysis of algorithms.
By the end of the class you will see that the "subject of
algorithms represents a powerfull lens through which to view the field
of computer science in general" [Kleinberg & Tardos]
- Demonstrate understanding of fundamental computational
and the algorithms that were
proposed to solve them
- Illustrate how these algorithms work
- Analyze their theoretical complexity
- Use them as building blocks to design solutions to new problems
- Demonstrate understanding of fundamental algorithm design
techniques (divide and conquer, greedy and
- Understand and apply the process of designing efficient algorithms:
- Come up with ideas
- Argue whether they are correct
- Analyze their theoretical complexity and compare them
- Ask: Can we do better?
- Demonstrate ability to design and analyze algorithms for new problems
Prerequisites: csci 101 (Intro to CS) and csci
2101 (Data Structures).
Meetings: This semester all Bowdoin classes are
conducted online, so this will be an online class. All materials
will be posted online to be studied asynchronously before the meetings. There will be
weekly, small-group zoom meetings with the instructor to answer your
questions, work in groups, engage with practice problems and build a
class community. We'll decide the groups and the time for these
synchronous meetings at the beginning of the semester based on your
- This is a satellite website for the class. All materials for this
class (video recordings, lecture notes, quizzes, assignments, etc) are
accessible on Blackboard.
- Discussion forum: we'll use Blackboard.
- Textbook: The class is based on the following textbook:
The book is not required. Please email me if you feel you'd benefit
form reading a textbook.
- Other resources: There are many resources available online, and
you are encouraged to explore. Anything that helps you learn is a
good resource! If you find a good resources, we'd
appreciate sharing with the class so that everyone can use it! I
have made a site for useful links.
How will this class work ?
This is an online class, which means that all materials will be posted
for you to engage with them at home asynchronously, that is, at your
time and pace. The class will meet synchronously every week for one
hour, and these synchronous meetings will be to answer your questions,
work with your peers, go over some of the problems in the handouts,
and build a classroom community.
Before the beginning of the semester I will split the class into two
groups based on everyone's constraints, and decide on a time to meet
weekly with each group. Once assigned to a group, you commit to
attending the synchronous zoom meeting for that group every
week. Switching between groups will be strongly discouraged in order
to keep the groups small and balanced.
Time commitment: How much time should you budget for this course
You probably heard this before, taking a 4-class load is like having
a full-time job in which you are expected to work at least 40 hours a
week. You should expect to commit 10 hours a week to meet the
expectations of the course, and perhaps 12 to excel. Above I provided
a tentative breakdown of the weekly time ---- please budget 10-12 hours
a week for this class.
- Watch the lecture videos and read the lecture notes:
Each week, your first task is to work on the materials for that
week (lectures notes and lecture videos) and make a list of
specific questions which you'll bring to the meeting. It is
expected that you will understand the basic ideas and results, but
perhaps need clarifications with some details.
Time to budget: approx. 3 hours
- Pre-meeting check: This will cover VERY basic questions from
the lecture. You need to do this pre-check before attending the
weekly small-group meeting.
Time to budget: <15 minutes
- Attend the weekly small-group zoom meeting:
These weekly zoom meetings will replace the regular class time, and
will be dedicated to going over your questions, working in groups, engaging
with practice problems and building a class community.
Before coming to the small-group zoom meeting you need to study the
materials for that week and do the pre-check.
Time to budget: 1 hour
- Continue to work on the materials
for the week. Go one more time over the lecture notes and the
details, and use the self-study quizzes and the study questions to
help evaluate your understanding. Finding a partner (or a group) to
work with is strongly encouraged.
Time to budget: 3 hours
- Drop in to virtual office hours: Drop in to virtual
office hours, help sessions/ study groups to get your questions
answered and prepare for the weekly quiz.
Time to budget: 1-2 hour
- Take the quiz.
Time to budget: up to 1 hour
- Reflection and weekly journal.
Time to budget: 15 minutes
WHat you can expect from me
My goal is to maintain the class to the same standard as if it were
"in-person". That is, the class will cover the same topics, and will
not drop in any materials because it's online. To support the learning
I have created detailed lecture notes and an ample set of study
questions, practice problems and quizzes. Stay assured that at the end
of the semester you will have learnt precisely the same topics and
worked through the same problems --- as if you took this class on
At the same time, I am also committed to being flexible. Please
don't hesitate to let me know if you have any circumstances that
hinder your learning, and we will work together to make an alternate
Assignments, Assessments and Grading policy
Below is the list of assignments and assessments that you can expect
during the semester, and how they are taken into account in the
- Ungraded formative assessments: for each topic I will provide a
combination of study questions, self-quizes and practice quizes.
These are not graded, and are provided to support the learning.
- Assignments: There will be 2 to 5 assignments throughout the
semester. Each assignment will consist of 3-5 new problems for which
you will be asked to come up with efficient algorithms.
- Pre-meeting checks: There will be 10 to 14 pre-meeting
checks, which are meant to be taken after working with the
asynchronous lecture materials, and before coming to the weekly meeting. These
checks will be very easy, and their goal is simply to help you
stay on track every week.
- Quizes: There will be a total of 10-14 quizes,
approximately one per week. The quizes will be short (approx. 30
minutes) and will focus on the specific topic discussed that week.
- Exams: If the weekly quizes go well, there will be no
exams. There will be opportunities along the semester to assess the
pace and the quizes, and we will make adjustments as necessary.
Assignments, partners and policy:
The assignments will be hard. They will consist of new problems,
sometimes seemingly unrelated to the class topics, which you will have
to solve. Remember, one of the goals of the class is to provide the
conceptual tools so that you can come up with solutions to new
problems, on your own --- and that's the role of the assignments. Do
not expect to sit down for an hour and solve everything at once (if
you do, please let us know!). Instead, expect a process: read the
problems, understand what they are asking, come up with initial ideas,
figure out why they work or not, try to formulate questions, come up
with improvements. The whole process is supposed to be interactive
between you and your homework partner, your TAs, and myself. The
problems in the assignments have been carefully chosen in order to
provide an opportunity to learn deeper.
You will work on the
assignments with a partner. You can have the same partner for all
assignments, or you can change partners.
You and your partner will work together on the assignment throughout
the whole process, you will write it and review it together, and will
submit one assignment.
The assignment must be a true joint effort, equally owned, created and
understood by both partners. Specifically splitting the assignment
into parts and working on them separately is not allowed and violates
the honor code for the class.
Grading policy: The final grade is determined as
The final grade will count 10 pre-checks, 13 quizes and 3
assignments. The goal is to provide more than this number of
assessments so that an the end everyone can drop their lowest (quiz,
pre-check, assignment) score.
For example, if we'll end up with 12 pre-checks, 14 quizes and 5
assigments, this means that you'll be able to drop your lowest 2
pre-checks, drop your lowest quiz, and drop your lowest 2 assignments.
- Pre-meeting checks: 10 checks x 1 point = 10 points
- Quizes: 13 quizes x 5 points = 65 points
- Assignments: 3 assignments x 5 points = 15 points
- Journal, discussions and class participation: 10 points
Office hours and study groups
In addition to the small-group meetings, I will be available (on Zoom)
for virtual office hours. Stop by to chat
about anything and everything, including algorithms. At the beginning
of the semester we'll have "mandatory" drop-in so that we get to
meet and I learn more about you.
- Weekly drop-in zoom (Laura): TBD
We have a fantastic set of TAs who are all eager to work with
you! There will be weekly zoom drop-in office hours/study groups, which you can
join hopefully at least once a week, and many times a week as you want.
- Weekly zoom TA study groups: TBD
How to succeed in this class
You will probably find this class to be difficult. What makes it hard
is that the material is theoretical and spans many levels of
abstraction. Adding to that, coming up with algorithms is both an art
and a science: there is no systematic way to have an idea, and
problems that seem very similar, may have very different solutions.
It is important that you know this ahead of time and you start
preparing mentally for a challenging course.
Here are some suggestions for doing well in class:
- Budget your time and give yourself plenty of time to read the materials
and work on the assignments each week. Plan on 10-12 hours a week.
- Be pro-active about things that are not clear; search for
resources on the internet
- Encourage self-reflection: Try to formulate questions, and try to answer them yourself.
- Find a group of peers to work with. Explain your ideas, and
listen to theirs. Try to argue why an idea is correct, or
try to prove it wrong by finding an instance where it does not work.
- Join the study groups and talk to the TAs; Listen to your peers'
questions and get your questions answered.
- Solve all problems that are assigned, even those
that are optional.
- Don't be harsh on yourself if you are not doing as well as you
expected. Push yourself, don't focus on grades, enjoy the process!
Homework collaboration policy and academic integrity
Collaboration and discussion are crucial for this class. You are
encouraged to engage with the problems and discuss with peers. You
will most likely find that you will gain a better understanding of the
material by discussing the problems with peers.
Our goal is to ensure that the collaboration is
appropriate and effective, and that you become an independent problem
solver capable to do work on your own.
All students are expected to be familiar with and to comply with the
collaboration policy and the four levels of collaboration it
Specifically for this class,
- All in-class work, unless otherwise specified, is at
collaboration-level 0; that is, no restrictions.
- The assignments, unless otherwise specified, will be at
collaboration-level 1; that is, verbal collaboration without
solution sharing. You are allowed and encouraged to discuss ideas with
other class members, but the communication should be verbal and
additionally it can include diagrams on board. Noone is allowed to
take notes during the discussion (being able to recreate the solution
later frommemory is proof that you actually understood
it). Communication cannot include sharing pseudocode for the problem.
- All quizes and exams will be at collaboraytion-level 3
(professor clarifications only).
While peer instruction can be immensely useful, it an also
harm. Once you found a solution, resist giving hints to your peers or
leading them towards the answer. You are not helping them by doing
so. Direct them towards the TAs who are trained to give help.
Remember that you are responsible for reading, understanding, and
adhering to the department policy. If you have any questions about any aspects of
the policy, please do not hesitate to ask for clarification.