Lectures
Section A: MWF 8:40 - 9:30am
Section B: MWF 9:45 - 10:35am
75 Shannon Street room 202
Instructor
Philip Caplan
  • Please call me Philip. My pronouns are he/him/his.
  • 75 Shannon Street, room 219
  • (802) 243-5707
  • pcaplan@middlebury.edu
Office Hours
  • Monday: 3:30 - 4:30 pm
  • Wednesday: 2 - 3pm
  • Thursday: 9 - 10am, 12:30 - 1pm, 3 - 4pm
  • (and by appointment)

Objectives

The primary goal of this course is for you to enhance your 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 mathematical objects such as sets, vectors, and functions correctly and appropriately.
  • Write clear, concise, and correct proofs using the following techniques: direct proof, induction, contrapositive, proof by contradiction, proof by counterexample, and proof by cases.
  • Express problems in terms of systems of equations.
  • 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 develop graph algorithms.
  • Describe and analyze random events using discrete probability.
  • Typeset equations using LaTeX.

Grading

Your final grade will be determined as follows:

  • Problem Sets: 10 x 3% = 30%
  • Application Project: 10%
  • Midterms: 2 x 10% = 20%
  • Final exam: 25%
  • Exit Tickets: 10%
  • Participation: 5%

Grades will be posted to the gradebook on Canvas.


Coursework

Please note that changes were made on March 14th, 2024. Additions are added in blue and deletions are crossed out in red. All due dates and grading breakdown remain the same - the only change is in the way course material is covered.

Lectures (Weeks 1-5: live; Weeks 6-12: videos)

We will be using a partly-flipped classroom for CS 200. We'll spend the first 5 weeks developing the material together in class. Then, in Weeks 6-12, you will watch videos (each about 25 minutes) before class: class time will then be devoted to working on worksheets with your peers.

All lectures (Weeks 1-12) will be live (during class time). For Weeks 6-12, videos will also be posted after class in case you want to review the content from that day.

Exit Tickets

After every class, you will submit a short exit ticket (ET) about the material that was covered in that class. Exit ticket prompts will ask you to give a brief description (about 1 sentence) of a topic that was covered or a problem-solving strategy that was used. Alternatively, you can submit a question in your exit ticket. When we switch to a flipped classroom in Week 6, submitting an exit ticket will give you access to that day's worksheet solutions.

Exit ticket responses are graded purely on effort and should contain a thoughtful response for full credit. The graders may request a resubmission in order to earn full credit for an exit ticket.

Problem Sets

Each week (except for weeks in which there is a midterm), you will submit a problem set with the main goal of practicing as well as communicating your solutions. You will also self-grade your problem sets (see "Feedback Pull Requests" below).

Problem sets will be distributed via GitHub Classroom and then submitted as a "commit" in the corresponding repository. The solutions to the problems should be typed using GitHub's flavor of Markdown. This means you can write equations using LaTeX, which is commonly used in scientific work. You can also add tables, links, references and pictures. We'll practice with this in class, but please see this documentation for more information.

Feedback Pull Requests (PR): Once you commit your problem set solution to the repository in GitHub (I strongly recommend committing many times to save your work), you will then submit a link to your latest commit in Canvas. Once the Canvas submission is complete, the solutions will become available. You will then go back to your submission in GitHub, and look for the "Pull Requests" tab. Every assignment will have a PR created called "Feedback". This is where you will annotate and make comments on your problem set submission. These comments/annotations should be made by looking at the "diff" in the "Files Changed" section of the PR. Each problem should have an annotation with the self-graded points you are assigning for that problem. For more information on how to submit your problem set and assign points when self-grading, please see this Self-Grading Guide.

Problem sets will be submitted every Friday, and the self-grading (Feedback PR) will be due on Monday. The graders will then review the self-assessment, make additional comments, and assign a final grade in Canvas.

Each problem set is worth 3% of the final grade: 2 points are based on your solutions and 1 point is earned if you do the self-grading.

Application Project

A few lectures will be devoted to looking at applications of what we have been studying. At the end of the semester, you will write a program to study a particular application. This project will be done in groups of two and will involve a programming component and a written component.

Exams

Midterms: There will be two take-home midterms ($M_1$ and $M_2$) which are worth 20% total. The total number of points $M$ will be calculated as: $M = 20 \ (0.75 \max(M_1, M_2) + 0.25 \min(M_1, M_2))$. The dates for the two midterms are March 13 ($M_1$) and April 17 ($M_2$). Please let me know as soon as possible if you have any conflicts with these dates.

Final Exam: The final exam will cover all material in the course and will be a 3-hour take-home exam. The final exam will be available on Tuesday May 14th at 9am and will be due on Friday May 17th at 9pm.

Participation

Attendance at all class sessions (Weeks 1-12) is required - of course, please let me know if you are not feeling well or have a conflict and cannot attend. When we switch to a flipped classroom, you also need to watch the asynchronous lecture videos and respond to the effort-based Panopto quizzes before class. Watching the videos will prepare you to actively engage with your group members during the worksheet sessions. Your participation grade will be based on whether you have attempted the Panopto quizzes, attended the worksheet sessions class and regularly participate with your group members.


Materials

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 course content are posted below in case you would like to use the end-of-chapter problems for more practice.

Chapter Sections
  • Logic, Propositions, Predicates, Quantifiers: DMOI 0.2-0.3; BOP 2.1-2.10
  • Sets: DMOI 0.3; BOP 1.1, 1.5-1.7, CBW 2
  • Deduction: DMOI 3.1; BOP 2.11
  • Proof techniques: DMOI 3.2; BOP 4, 5, 6, 7.1, CBW 9
  • Induction: DMOI 2.5, BOP 10, CBW 9.3
  • Graphs: DMOI 4.1, CBW 5.1
  • Trees: CBW 5.2
  • Graph Searching: CBW 5.1
  • Graph Coloring: DMOI 4.3
  • Relations: BOP 11.1-11.3; CBW 3
  • Functions: DMOI 0.4: BOP 12.1-12.3, 12.6
  • Summations: BOP 1.8; DMOI 2.1-2.2
  • Recurrences: DMOI 2.4
  • Counting: CBW 6
  • Probability: CBW 4

Expectations

Environment

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 computer science, but please let me know if there is anything I can do to improve.

Furthermore, creating such an environment is a team effort, so I expect you to join me in fostering an inclusive learning experience for everyone. Every member of the class is expected to show respect for every other member so that everyone can learn in this space. If you experience or witness any behavior that opposes this idea, it would be helpful for me to know so that I can address it. If you feel comfortable, you can report such incidents in the following ways:

  • talk to or email me,
  • report the incident to our anonymous CS departmental climate feedback form,
  • fill out a Bias Incident Report which goes to the Middlebury Community Bias Response Team.

You belong in this class and in the computer science department. Thank you for being here and for contributing to this course.


Policies

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 students receive 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.

Borrowing a Laptop

If you ever find yourself temporarily in need of a laptop, the Computer Science department has several Dell laptops available to our students. These come pre-installed with software for most of the courses in the major. They are available to be loaned out short-term or long-term based on your need (as determined by you). Feel free to ask me ahead of time if you think you need one for just a class period, or you can send an e-mail to Smith Gakuya: sgakuya [at] middlebury.edu directly. On Long-Term Use: College policy has changed recently to include the expectation that every student have a laptop available. The college provides laptops to those who need them where “need” is based on Student Financial Services calculations. If you anticipate needing a laptop for the whole term, we encourage you to inquire with Student Financial Services and the library first due to our smaller pool of equipment. However, our department commits to meeting the needs of every student, so do not be afraid to reach out if you believe you need one of our laptops for any length of time.

Honor Code

You are expected to maintain the highest level of academic integrity in this course. All assignments and exams should be purely your work. For homework, collaboration is not only allowed, but encouraged: it's okay to share ideas (e.g. on a whiteboard or paper) about how to approach a homework problem, as long as you are not directly copying someone else's solution. Exams should be completed individually without the use of any notes, books or internet.

Generative AI

The use of generative AI tools (such as ChatGPT) is only allowed to assist while preparing/studying for assignments or exams but may not be used in any direct manner to complete the assignments or exams in this course. In other words, you may not use a generative AI tool to write any code, develop proofs or directly solve problems for you.