Section A: MWF 12:30-13:20 in 75 Shannon, Room 224
Section B: MWF 13:45-14:35 in 75 Shannon, Room 224
Philip Caplan
  • 75 Shannon Street, room 208
    Middlebury, VT 05753  map
  • 1 (802) 243-5707
  • pcaplan@middlebury.edu
  • Office Hours: Monday 9am-10am, Tuesday 10am-12pm, Thursday 3pm-4pm
  • You can call me Philip, or Professor Philip if you prefer.
  • Please come to office hours with specific questions. Office hours are not a place to start working on your problem set. If you're really stuck on starting a problem, I'm happy to point you in the right direction.
  • I will not answer programming or problem set questions via e-mail, except for clarifications.
  • All assignments must be handed in on time, unless you have a compelling reason and let me know at least 72 hours in advance.
  • go/cstutors/
  • Sunday (Agastya), Monday (Charlotte), Tuesday (Agastya) from 7-9pm in 75 SHS 203


The primary goal of this course is for you to enhance your pen-and-paper problem solving skills for computer science applications. An important component to solving problems is working with your peers: communicating your strategies and using mathematical arguments to support your solutions.

Learning Objectives

By the end of this course, you will be able to:
  • Use mathematical notation for basic mathematical objects such as sets and functions correctly and appropriately.
  • Write clear, concise, and correct proofs using the following techniques: direct proof, induction, contrapositive, proof by contradiction, proof by counter example, and proof by cases.
  • Analyze function growth and algorithm runtime using asymptotic notation and recurrence relations.
  • Solve combinatorial problems.
  • Describe graphs and their properties, prove statements related to graphs, and understand simple graph algorithms.
  • Describe and analyze random events using discrete probability.


Your final grade will be determined as follows:
  • Problem Sets: 30%
  • Quizlets: 10%
  • Midterms: 20%
  • Mini-teaching: 5%
  • Final exam: 25%
  • Participation: 10%
I will use Canvas to post your grades.


There are no required textbooks. Lecture notes will be posted on the calendar. However, you may find the following open access textbooks useful for finding practice problems. Chapter sections corresponding to the lecture topic will be posted on the calendar.

Expectations in class


My goal is to create an inclusive and welcoming learning experience for everyone. I try to use language, examples and exercises that promote a sense of belonging to the field of mathematics and computer science, but please let me know if there is anything I can do to improve.

Taking notes

Writing in a notebook has been shown to be more effective for learning than taking notes on a laptop or tablet. Although I will post my lecture notes on the calendar, I expect you to take written notes.


Your class participation grade will depend on your regular, on-time attendance. If you have to miss a class, please let me know as soon as possible. I will be happy to answer questions related to the lecture, but I will not repeat the lecture for students who missed the original.


It is important to practice working with your peers, therefore, you will be graded on the quality and effort you put into classroom activities. In particular, we will often form small groups (randomly assigned and rotated throughout the semester) to practice solving problems. You can participate by asking questions, suggesting an idea, taking notes on the discussion, presenting the group's solution to the classroom, and encouraging your peers!


I will use Plickers for quick in-class exercises. Your responses won't affect your grade but I will keep track of whether you are participating in the activities. If you lose your Plicker QR code, ask me for your number and print out another copy from the Plickers website.

Muddy cards

I will provide index cards every lecture in which you can write down (anonymously) questions or topics that are "muddiest" from the lecture. These are entirely optional but it's a great way for you to provide direct feedback on material that is unclear. I will post the questions (along with a response) under the Discussions section on Canvas.


There will be a weekly in-class quizlet (every Friday, about 10-15 minutes). Each quizlet will consist of 1-2 problems, taken directly from the problem sets or in-class exercises (up to a small change in the numbers). Sometimes, a quizlet will be an anonymous reflection quizlet, in which you can provide anonymous feedback as to how the course is going for you so far (what you like, what you don't, how might you apply this material, what I can do to help). I will simply take attendance when you turn in your reflection quizlets to give you full credit. All quizlets are closed book/notes (unless otherwise specified) and must be completed individually. I will drop your lowest quizlet score.

Every quizlet will have a question at the end which asks "What did we cover this week?" in which you are to write 2-3 bullet points of the main topics we covered in the particular week of the quizlet (M,W,F). This method of "retrieval" has been shown to be effective in forming stronger memories of what you have learned.


There will be two in-class midterms which are worth 20% total. The dates for the two midterms (M1,M2) are:

  • M1: March 11
  • M2: April 15
Your total grade, M, for the two midterms (M1,M2) will be calculated as: M = 0.7*max(M1,M2) + 0.3*min(M1,M2). Please let me know as soon as possible if you have any conflicts with these dates.

Expectations outside of class

Problem sets

Practice, practice, practice! The problem sets provide you with opportunities to practice problem solving, and more importantly, to figure out what you understand and where you need additional practice. The problems will challenge you to apply your knowledge to something we haven't directly seen in the lecture exercises. Some of the problem sets will involve a small programming component. If you need additional practice beyond the problem sets, there are many practice problems (with solutions) in these textbooks. The problem sets will also contain an anonymous reflection question, which are to be filled into a Google Form. Once you complete the form, you will take a screenshot confirming your submission, and then attach it to a comment in your problem set submission on Canvas (this way, I know you completed the reflection, while remaining anonymous).

Submission and grading

The problem set questions will be posted on the calendar page of this site and you will upload an electronic copy of your solutions (as a single PDF file) to the corresponding Assignment in Canvas. After the submission deadline (on Tuesdays), I will post my solutions and you will then be responsible for self-grading your solutions, using this guide (with rubric). Your self-assessment will be due on Thursday following the (Tuesday) due date of the problem set -- so this is a good way to study for the Friday quizlet! You will then be assigned a grade for your combined problem set solutions and self-assessment (see the guide). We are mostly looking for effort and thought process in your solutions. I will drop your lowest problem set grade.

If you have a regular commitment that makes it hard for you to meet one of the regular problem set deadlines, please discuss with me so we can find an alternate schedule.

Mini-teaching project

A great way to learn something is to explain it to someone else. At the end of the semester, there will be a mini-project in which you will have the opportunity to practice communicating what you have learned in the course. In groups of two, you will pick any topic we covered and teach the class how to solve a problem related to that topic. Studies have shown that when students become teachers themselves, they gain a deeper understanding of the material. This will also be a great way to review for the final exam! You will pick a problem (slight tweak of the lectures, textbooks, or something you think of!) and you will have 10 minutes to explain your problem and solution to the class. The important point is for you to practice using correct terminology and being proficient in your chosen topic.

Final exam

The final exam will cover all material in the course and will be a 3-hour take-home exam. You may chose which date you prefer to take the exam: either Thursday May 14th or Friday May 15th. Times in which you can sign-in and sign-out your exam will be specified later in the semester.


Academic Accommodations

Students with documented disabilities who believe that they may need accommodations in this class are encouraged to contact me as early in the semester as possible to ensure that such accommodations are implemented in a timely fashion. Assistance is available to eligible students through Student Accessibility Services. Please contact the ADA Coordinator Jodi Litchfield, who can be reached at litchfie@middlebury.edu or 802-443-5936 for more information. All discussions will remain confidential.

Title IX

As faculty members and members of the Middlebury community, we are committed to the safety of all students. If we learn of any potential violation of our Policy Against Sexual Misconduct, Domestic and Dating Violence and Misconduct, and Stalking ('SMDVS Policy') or our Anti-Harassment/Discrimination Policy, we are required to notify a member of Middlebury's Title IX team (policies summary). This ensures that the students receives timely care and information about their rights, their choices, and available resources for support. Students who would like to speak with a confidential resource who does not have an obligation to report can contact MiddSafe, the Patron Center for Health and Wellness, WomenSafe (serving individuals of all gender identities), or campus and local clergy and medical professionals. For more information, see go/sexualviolenceinfo.

Honor Code

You are expected to maintain the highest level of academic integrity in this course. All work you turn in should be your own. However, collaboration on problem sets and projects is not only allowed, but encouraged. If you work with another student on a problem set or projects, please acknowledge that person (e.g. "I worked with xxx."). Additionally, please adhere to the following guidelines:

For problem sets, you may discuss or work on problems with others, but you should write up your solutions on your own, using your own words. However, I recommend practicing solving some problems on your own, since this is what you will have to do for quizzes and exams.

The exams and quizzes must be entirely your own work. Exams and quizzes should be completed without any notes or other resources, unless specifically allowed for. You may not share any information about midterms or quizzes with any other students, either within or outside of the course.


I will not accept late submissions unless you have a compelling reason and let me know at least 72 hours in advance. You do not need to let me know which of your problem sets or quizlets you wish to drop from your grade.