CS 200 Announcements Goals Syllabus Resources Calendar Staff
italian beach and city
Math Foundations of Computer Science
Photo © Mark Farber (www.markfarber.com)


Office hours for week of May 13: Monday 11:15-12:15, 3-4. Tuesday: 1-2:30, Wed: 9-11:30.


Many of the questions and answers we pose in computer science can be stated most simply and clearly using the language of mathematics. In this course, we will learn about mathematical objects, ideas, and techniques that are useful for computer science. This knowledge will allow you to communicate clearly with other computer scientists and programmers, and will be helpful in understanding many of the more complex concepts in computer science.

Learning Goals are broad and somewhat immeasurable goals that I want you to achieve by the end of the course. Learning Objectives are concrete, measurable learning outcomes that will help you to reach the Learning Goals.

Learning Goals

Learning Objectives

After completing this course, students should be able to

CS 200 Syllabus

Time and location: Monday, Wednesday, Friday in MBH 403

What do I call you? Professor Kimmel or Professor. I use she/her/hers pronouns.

Professor Office Hours: in MBH 635. Please come to office hours with specific questions, comments, or concerns.

Tutor Office Hours: See the CS Tutoring Site

Canvas Site: Here

Super Useful Department Wiki: Here!

Communication: I will use e-mail to communicate with you about urgent matters. Please check your Middlebury e-mail at least once a day. I will post less urgent messages (e.g. a change in office hours) to the announcements section of this site. Please check the Calendar section of this site regularly for an up-to-date record of assignments, due dates, and lecture notes.

E-mail Policy: I will not answer coding questions or problem set questions via e-mail, except for logistical questions.

There are no required texts. I will post lecture notes after each lecture. See the Resources section for a list of open access texts that you can use for additional perspective and practice problems. I will post optional supplemental readings from these texts.

Technology in the Classroom
You may NOT use any type of cell phone, tablet, or computer during class, unless you have a compelling reason. Please come talk to me if you have a compelling reason for wanting to use technology. Taking notes on a laptop has been shown to be less effective and lower quiz scores not only for the student using the device, but for nearby students as well (because it distracts those around you).

Class Participation

Problem Sets
The primary purpose of problem sets is to help you to learn the course material. The problem sets provide you with opportunities to practice, and importantly, to figure out where you need additional practice. The problems will not necessarily be cookie-cutter versions of the problems we do in class. Instead, you will have to apply the concepts we learn in class in new and creative ways. Part of what I want to you be able to do is to develop the ability to transfer knowledge from a problem you've seen before to something new. The only way to develop this skill is to practice. The problem set problems may not be sufficient for you to learn the material, and you are responsible for finding further practice problems as needed (using resources I will provide.)

You will be graded on effort and thoughtfulness, not correctness. Each problem set will have four graded parts, and all parts are submitted through Canvas.

Your problem sets will not be graded by TAs. Since you are learning, it will sometimes be difficult for you to determine if your answer is correct, but just different from mine. In these cases, please post your solution to the Discussion section of the Canvas site under the relevant problem set posting. You should attach a picture or include a description of your solution, along with the problem number, and then graders will respond with feedback. Your solution and the feedback will be viewable by all members of the class, in order to provide a broader range of correct and incorrect solutions. You can comment on or "like" others' postings as long as you are respectful - it can be difficult to post your potential mistakes in a public place, but try to take a growth mindset perspective, and know that mistakes are extremely helpful for learning!

If you are the first to find a typo in the problem set or solutions, I will give you a small bonus.

There will be a weekly quiz to assess your understanding of concepts from the previous week's problem set. Additionally, many studies have shown that giving tests improves learning through the "testing effect." Quizzes will usually consist of two problems, one from topics on the problem set due earlier that week, and one from earlier topics. Some quizzes will be held in class, and some will be taken at home through Canvas. All quizzes are completely closed book and must be completed individually.

Time Management
It is typical for students to spend 2-6 hours on problem sets, 1 hour on self-grade and reflection, and an additional 1-3 hours practicing for the quiz using problems from the problem set, course texts, or online. However, every student is different and if your past experiences have prepared you particularly well or particularly poorly for the type of learning we do in this class, you may spend less or more time than this.

The midterms will be self-scheduled. You should plan to set aside 3 hours during the exam window to take the test. The dates of the midterms are:

You can take the final in the time slot for either section:

Programming Assignments
Programming assignments serve to connect some of the abstract mathematical concepts we learn in class to more concrete problems. However the focus of this class is on mathematical concepts, so if you do not do the programming assignments, they will not lower your final grade. However, for each assignment that you complete with a score of 28 or higher, you will get a small boost to your final grade, with the total effect of both assignments capped at a grade increase (i.e. from B+ to A-, or from B to B+). The exception is that to earn an A in the course, you must complete both assignments with a grade of 28 or higher. You may turn in the programming assignments as many times as you would like to Canvas before the last day of class, as long as there are significant changes between the submissions. I will grade programming assignments using this rubric.

Get Out of Jail Free Passes

Evaluation and Grading
Your final grade will be determined as follows:

Excused Absences and Extensions:
If you will miss class because of a religious observance, please notify me within the first two weeks of class. Please look at exam dates and let me know as soon as possible if you have conflicts. Other absences will be dealt with on a case by case basis, but please let me know as early as possible if you will not be able to attend a class. If you miss class, you are still responsible for the missed material. You should carefully read the lecture notes for the class you miss. I will be happy to answer questions related to the lecture, but I will not repeat the lecture for students who missed the original. Quizzes will be rescheduled as necessary for students with an excused absence.

In extenuating circumstances (e.g. personal crisis, serious illness, family problems) extensions for assignments or quizzes may be granted. Please contact me in this case.

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 programming assignments is not only allowed, but encouraged. Additionally, you can use course textbooks and online resources to look up approaches and similar examples (but not the exact same problem). To ensure that you are not in violation of the honor code if you collaborate with others, I suggest after discussing code or problem sets, you write up your own solutions or code later on your own.

If you work with another student on a problem set or programming assignment, please acknowledge that person (e.g. "I worked with xxx.") For programming assignments put this acknowledgment in a comment header.

The exams and quizzes must be entirely your own work. You may not share any information about tests or quizzes with any other students, either within or outside of the course.

Academic Accommodation:
Students with documented disabilities who may need accommodations in this class (e.g., extra time on exams) are encouraged to contact me as early as possible to ensure that such accommodations are implemented in a timely fashion. Assistance is available to eligible students through the Student Accessibility Office. Please contact one of the ADA Coordinators. Jodi Litchfield cab be reached at litchfie@middlebury.edu or 802-443-5936 and Courtney Cioffredi can be reached at cioffredi@middlebury.edu or 802-443-2169 for more information. All discussions will remain confidential.

Disclaimer: This syllabus is a guideline, and parts may be subject to changes if current policies not conducive to your learning.



The following resources provide a different perspective and contain lots of additional practice problems and solutions.

Rubrics and Resources

Problem Set Submission Guidelines

When you submit your problem set to Canvas, it should be in pdf form, but you can hand write it (and then scan it, or use an app on your phone to take a pic and convert) or type it.

However, when you submit, please check that is it well-sized and readable. It is much better if the whole document is one file instead of multiple files for each page. You will be using the pdf on Canvas later for the self-grading portion, so your life will be easier if you make sure it is readable. You can resubmit the pset multiple times (before the deadline) if it doesn't look good, so try to submit something early just to test.

To check if it is readable, there is a button on the Problem Set 1 page that says "Submission Details." Click this, and then go to "View Feedback." On the View Feedback window, there is a button to blow the viewer up to the full screen (you might need to scroll up on the window to see it). If this view is easy to read, then you are all set.


NOTE! This calendar is subject to change (except for past dates.) Please check regularly.

Jump to This Week

Class: Topic/Notes Read: Optional Reading Eval: Quiz/Test Assign: Assignment Given Due: Assignment Due

PS=Problem Set, PA=Programming Assignment

Monday, Feb. 12

Class Introductions Slides
Assign Questionnaire (due. Feb 16)
Assign PS1 (tex) (due Feb 19)
Eval Pre-Quiz PS1 (due by midnight)

Wednesday, Feb. 14.

Class Induction Notes, Slides
Read DMOI 2.5 (before Strong Induction)
Read BOP 10 (before 10.1)

Friday, Feb. 16

Class Induction Notes, Slides
Eval Quiz: Syllabus
Due Questionnaire
Read DMOI 2.5 (before Strong Induction)
Read BOP 10 (before 10.1)

Monday, Feb. 19

Class Sets, Notes, Sets Worksheet (we will continue working on Wednesday)
Due PS1
Eval Pre-Quiz PS2 (due by midnight)
Assign PS2, (tex) (due Feb 26.)
Read DMOI 0.3

Wednesday, Feb. 21

Class Sets, Notes, Sets Worksheet, Sets Worksheet Solutions
Eval Quiz: PS1
Due PS1 Reflection/Self Grade
Read DMOI 0.3

Friday, Feb. 23

Winter Carnival - No Class!

Monday, Feb. 26

Class Statements, Predicates, and Quantifiers, Notes, Logical Connective Definitions, English to Math Problems
Due PS2
Assign PS3, (tex) (due Mar 5)
Eval Pre-Quiz
Read DMOI 0.2
Read BOP 2.1, 2.7.

Wednesday, Feb. 28

Class English to Math Slides/Solutions
Due PS2 Reflection/Self Grade
Assign PA1
Read BOP 2.9

Friday, Mar. 2

Class Logic Notes
Eval Quiz: PS2
Read DMOI 3.1
Read BOP Chapter 2

Monday, Mar. 5

Class Proofs and Deduction Notes, Proof Style Worksheet
Due PS3
Assign PS4, (tex) (due Mar 12)
Eval Pre-Quiz PS4 (due before class on Wed.)
Read BOP 5.3
Read BOP Chapter 2.11

Wednesday, Mar. 7

Class Proofs Notes, Slides, First pages of midterm
Due PS3 Reflection/Self Grade
Due Pre-Quiz PS4
Read DMOI 3.2 (Direct and Contrapositive proofs)
Read BOP Chapter 4.1-4.3, 5.1

Friday, Mar. 9

Class Iff, Cases Proofs Notes, Slide
Eval Quiz: PS3
Assign Questionnaire for Review Topics (due 3pm on Sunday)
Read DMOI 3.2 (Proof by Cases)
Read BOP Chapter 4.4, 7.1

Monday, Mar. 12

Class Review Notes, Review Worksheet, Worksheet Solutions
Due PS4

Wednesday, Mar. 14

Class Proof by Contradiction, Proof by Strong Induction Notes
Eval Midterm self-scheduled from Mar. 14 to Mar. 16. Pick up exam from box on my door.
Due PS4 Reflection/Self Grade

Friday, Mar. 16

Class Strong Induction and Example/Counterexample Notes
Assign PS5 (tex)(due Mar 19)

Monday, Mar. 19

Class Functions: Definitions Notes/Worksheet, Worksheet Solution
Due PS5
Assign PS6 (tex) (due Tuesday Apr. 3 by 10:10 am)
Eval Pre-Quiz
Read DMOI 0.4
Read BOP 12.1, 12.2

Wednesday, Mar. 21

Class Counting: Add/Mult/Sub Rules Notes
Due PS5 Reflection/Self Grade
Read DMOI 1.1
Read BOP 3.1 (a slightly different perspective)

Friday, Mar. 23

Class Graphs: Definitions Notes
Eval Quiz: Quiz 5 (take before class!)
Read DMOI 4.1

Monday, Mar. 26

Spring Recess

Wednesday, Mar. 28

Spring Recess

Friday, Mar. 30

Spring Recess

Monday, Apr. 2

Class Functions: Big-O Notes
Due PS6 (Tuesday Apr. 3)
Assign PS7 (tex) (due Apr 9)
Read Function Growth

Wednesday, Apr. 4

Class Counting: Permutations and n-choose-k Notes
Due PS6 Reflection/Self Grade (due Thursday Apr. 5)
Due Pre-Quiz
Due Mid-Semester Feedback Survey
Assign PA2
Read DMOI 1.3

Friday, Apr. 6

Class Graphs: Adjacency Matrix and Adjacency List Notes
Eval Quiz: PS6

Monday, Apr. 9

Class Functions: Relations, Summations Notes
Due PS7
Assign PS8 (tex) (due Apr 23)

Wednesday, Apr. 11

Class Counting: Combining Techniques, Probability Video, Notes, Worksheet, Worksheet Solutions
Due PS7 Reflection/Self Grade
Due PreQuiz PS8
Read Probability

Friday, Apr. 13

Class Graphs: Search video, Notes
Eval Quiz: Quiz 7

Monday, Apr. 16

Class Review First Page of Midterm 2, Notes, Review worksheet, Review solutions
Due Review Quesitonnaire due 1pm Sunday April 15
Eval Midterm self-scheduled from Apr. 16 to Apr. 18. Pick up exam from box on my door.

Wednesday, Apr. 18

Class Probability: Conditional Probability and Random Variables Notes
Read Probability

Friday, Apr. 20

Spring Student Symposium

Monday, Apr. 23

Class Graphs: Breadth First Search
Due PS8
Assign PS9, (tex) (due Apr 30)

Wednesday, Apr. 25

Class Functions: Recurrence Notes, Worksheet, Worksheet Solutions
Due PS8 Reflection/Self Grade
Due PreQuiz PS 9
Read Recurrence

Friday, Apr. 27

Class Probability: Random Variables Notes
Eval Quiz: PS8
Read Probability

Monday, Apr. 30

Class Functions: Recurrence and Master Method, Notes
Due PS9
Assign PS10, (tex) PS10 (due May 7)
Read Recurrence

Wednesday, May 2

Class Counting: Linearity of Expectation and Indicator Random Variables Notes, Slides
Due PS9 Reflection/Self Grade
Due Pre Quiz 10

Friday, May 4

Class Functions/Counting/Graphs: Master Method Notes
Eval Quiz: PS9

Monday, May 7

Class Counting Infinity Notes
Due PS10
Optional PS11, (tex)

Wednesday, May 9

Class Trees and DFAs Tree Notes, DFA Notes, DFA problems
Due PS10 Reflection/Self Grade

Friday, May 11

Class Reflections and Evaluations Announcements
Due Overall Reflection/Self Grade

Monday, May 14

Class Review Notes, Worksheet
Eval Quiz: PS10


Prof. Shelby Kimmel

Shelby Kimmel Headshot
Office: MBH 635
Office Hours:
  • Drop-in: Mon: 11:15-12:15 and 3-4; Wed: 3-4;
  • By appointment: Thursday 9am-noon + other times. Click Here to book at least 12 hours in advance.
  • If you would like to schedule something outside of these hours e-mail me, and I will do my best to find time to meet with you.

Email: skimmel [at] middlebury [dot] edu