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


9/23/2017: Office hours updated:


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


The syllabus contains important information! You are expected to be familiar with all of the information contained in the syllabus.

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

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

Professor Office Hours: in MBH 635.

Tutor Office Hours: See the CS Tutoring Site

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 regularly for an up-to-date record of assignments, due dates, and lecture notes.

There are no required texts. I will post lecture notes after each lecture. I will also post suggested OPTIONAL readings from the texts below. These readings will give you a different perspective from the one I provide in class. All textbooks are open access.

One CSCI course at the 100-level.

Growth Mindset:
I expect all students to work to develop a growth mindset: awareness that intelligence is not fixed, and that your ability in any skill will increase through practice. I will provide many low-stakes opportunities for you to practice skills in this course, including in-class activities and problem sets.

Part of developing a growth mindset is viewing critical feedback (through grades or other forms of assessment) for what it is: an opportunity to understand your weaknesses and improve on them, rather than a sign of failure. This perspective will not only tend to improve your grades, but will make learning more enjoyable.

Group Work:
You will be assigned to a small group for in class discussions and problem solving. Groups will be assigned randomly. Diverse groups tend to perform better than homogeneous groups, so please think about what diverse perspectives or background you might bring to your group.

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. Otherwise, I will ask you to put the technology away, or step out of the class while using it. 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).

Office Hours and E-mail Policy
Please come to office hours with specific questions, comments, or concerns. I will not answer coding questions or problem set questions via e-mail, except for logistical questions.

Problem Sets
As mentioned above, problem sets are an opportunity for you to practice the skills of this course, and to become aware of areas for further practice and improvement. Because of this, only a small part of your grade is based on the correctness of your responses.

Each problem set will have two parts:

Part 1:

Part 2:

Please see the Resources tab for a sample problem set procedure.

Programming Assignments
Programming assignments serve to connect some of the abstract mathematical concepts we learn in class to more concrete problems.

Quizzes and Tests
One of the primary ways I assess your learning is through quizzes and tests. However, you should also view these assessments as feedback on your own learning. There will be quizzes on most Fridays. Quizzes will usually consist of two problems, one from topics on the problem set due earlier that week, and one from earlier topics. (Questions will typically be similar to in-class activities or problem sets questions.)

The midterm will be Friday Oct. 20, 2:45-4:45 pm in MBH 216, and the final will be scheduled (you may attend either session):


Get Out of Jail Free Passes
I will drop your two lowest problem set scores, quiz scores, and programming assignment scores.

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

Note: rubric points do not necessarily correspond to percentage points.

Excused Absences and Extensions:
If you miss class because of sickness, a doctor/nurse's note should be provided. If you will miss class because of a religious observance, please notify me within the first two weeks of class. 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. This means that work you submit must be the result of your own individual effort. You may discuss problem sets and programming assignments with other students in the course, but you may not collaborate in the actual writing of problem sets or code. (This is obviously to your benefit as a learner, since your skills will not improve if you do not practice those skills!)

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

Regarding problem sets: You may not read, copy, or possess another student's solutions, solutions from previous semesters, or solutions you may find online, while working on Part 1. While working on Part 2, in order to grade your problem set, you may obviously look at the written solutions I provide, but you can also look at other students' solutions in order to discuss self-grading. The reflection must be entirely your own work.

Regarding programming assignments: You can help one another, but I do not want to see identical assignments that differ only in small ways. If someone does show you code (as an explanation or asking for debugging help), do not copy it. Retain ideas, and go away and write your own version later. I encourage you to help classmates to debug misbehaving code. You are welcome to use the internet to look up approaches for basic language functionality, but you may not look up code that implements the complete solution.

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.

This syllabus is a guideline, and parts may be subject to change if we find that they are not conducive to your learning.


Detailed Problem Set Procedure (with examples)

The following is a sample procedure for how problem sets work in this course.

  1. A problem set is assigned, usually on Mondays. Here is a sample problem set.
  2. The following Monday, you should turn in your answers to the problem set (this is Part 1 of the assignment). For example if you use Latex, your solution to the sample problem set might look like this.
  3. The same Monday that you turn in Part 1, I will post solutions, which would look like this for the sample problem set.
  4. The Wednesday after you submit Part 1, Part 2 will be due. Part 2 contains two subparts:
    • You should submit a marked up (using a pen whose color is not the same as the color of your solutions), graded copy of the problem set you submitted for Part 1. You should grade using the solutions I provide and these rubrics. You can also come discuss grading with me or the TAs. Note that the number of points next to a problem informs you which rubric you should use. Here is an example of grading for the sample problem set. In the sample, the problem is an 11-point problem, so you should use the rubric for 11-point problems. There are three categories for 11-point problems, so the grade includes a subgrade for each part, and an explanation as necessary.
    • You should submit a reflection on your experiences while working on and grading the problem set. Here is a worksheet with suggested questions to answer. For example, here is an example of a reflection for the sample problem set.
    Please staple the reflection to your graded problem set, and hand them in together. Your name, problem set number, and your total points should be visible on the top sheet.
  5. After turning in your self-grade, we will give you our grade and comments for Part 1 of the problem set, using the same rubric you used for your self-grade (i.e. this one). (This will hopefully be done through Canvas.)
  6. Based on the feedback from your self-grade and from our comments and grade, you should tailor your study for the quiz that week.
  7. We will return the combined problem set and reflection with a final grade for Part 2. Part 2 will be graded using this rubric.

Best Practices for Problem Sets

You grades for nearly all problem set questions will depend on the clarity of your writing and thinking, and not just on correctness. It is very hard to write a good problem set solution that is both clear and correct on the first try. I strongly encourage you to revise your problem set solutions at least once. One of the things that makes this easier is typing your solutions. I recommend LaTex, but it is not required. See these tutorials for a good introduction to LaTex.

If you find you are struggling with a problem and getting frustrated, take a break and come back to it, preferably a day later. Research indicates that sleep is very important for learning. I have often been surprised when a concept that I could not grasp one day suddenly became clear the next day. (A corollary of this is that you should not start your problem set the day before it is due.)

If you find during the self-grade or based on our grading of a problem set that you have made a serious mistake, I recommend looking at the solution, then putting the solution away and trying to solve the problem again. This practice will help you to learn. If you find that you need more practice, try looking for similar problems in the textbooks listed above, or ask me for suggestions.

I do not expect you to do all parts of all problem sets correctly. The problem set is an opportunity for you to practice and learn. You can still get an A in this course without getting 100% on the problem sets.

Rubrics and Resources


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

Jump to This Week

class: Reading/Class eval: Quiz or Test PS: Problem Set or Other Assignment

Topics: Pf: Proofs Gph: Graphs Fun: Functions Count: Counting NT: Number Theory
PS=Problem Set, PA=Programming Assignment

Monday, Sept. 11

class Introductions Lecture Notes
PS Assign: Questionnaire (due. Sept 15)
PS Assign: PS1 pdf/tex (due Sept 18 to Canvas)
PS Assign: PA1 (due Sept 18 to Canvas)

Wednesday, Sept. 13.

class Induction: Lecture Notes, Slides
Optional Reading: DMOI 2.5 and BOP Chapter 10 before 10.1

Friday, Sept. 15

class Induction: Lecture Notes, Slides
Optional Reading: DMOI 2.5 and BOP Chapter 10 before 10.1
eval Quiz: Syllabus
PS Due: Questionnaire

Monday, Sept. 18

class Self-Grade/Reflection and Sets Lecture Notes, Faulty Proof, Sample Solution
PS Due: PS1
PS Due: PA1
PS Assign: PS2 pdf/tex (due Sept 25 to Canvas)
PS Assign: PA2 description PA2 (due Sept 25 to Canvas)

Wednesday, Sept. 20

class Sets and Statements Lecture Notes Sets Worksheet
PS Due: Reflection/Grade PS1

Friday, Sept. 22

class Statements Lecture Notes, Logical Connectives Handout
eval Quiz: PS1

Monday, Sept. 25

class Quantifiers and Logical Proofs Lecture Notes (Quantifiers) Lecture Notes (Logical Proofs)
PS Due: PS2
PS Due: PA2
PS Assign: PS3 (tex) (due Oct 2, uploaded to Canvas)
PS Assign: PA3 (due Oct 9, uploaded to Canvas)

Wednesday, Sept. 27

class Pf:
PS Due: Reflection/Grade PS2

Friday, Sept. 29

class Pf:
eval Quiz: PS2

Monday, Oct. 2

class Fun:
PS Due: PS3
PS Assign: PS4 (due Oct 9)

Wednesday, Oct. 4

class Count:
PS Due: Reflection/Grade PS3

Friday, Oct. 6

class Gph:
eval Quiz: PS3

Monday, Oct. 9

class Fun:
PS Due: PS4
PS Due: PA3
PS Assign: PS5 (due Oct 16)
PS Assign: PA4 (due Oct 16)

Wednesday, Oct. 11

class Count:
PS Due: Reflection/Grade PS4

Friday, Oct. 13

class Gph:
eval Quiz: PS4

Monday, Oct. 16

class Fun:
PS Due: PS5
PS Due: PA4

Wednesday, Oct. 18

class Midterm Review

Friday, Oct. 20

eval Midterm on Friday Oct. 20 2:45-4:45, MBH 216
class Count:
PS Assign: PS6 (due Oct 30)
PS Assign: PA5 (due Oct 30)

Monday, Oct. 23

No Class!

Wednesday, Oct. 25

class Gph:
PS Due: Reflection/Grade PS5

Friday, Oct. 27

eval Quiz: PS5
PS Due: Reflection/Grade of Midterm

Monday, Oct. 30

class Fun:
PS Due: PS6
PS Due: PA5
PS Assign: PS7 (due Nov 6)
PS Assign: PA6 (due Nov 6)

Wednesday, Nov. 1

class Count:
PS Due: Reflection/Grade PS6

Friday, Nov. 3

class Gph:
eval Quiz: PS6

Monday, Nov. 6

class Fun:
PS Due: PS7
PS Due: PA6
PS Assign: PS8 (due Nov 13)
PS Assign: PA7 (due Nov 13)

Wednesday, Nov. 8

class Count:
PS Due: Reflection/Grade PS7

Friday, Nov. 10

class Gph:
eval Quiz: PS7

Monday, Nov. 13

class Fun:
PS Due: PS8
PS Due: PA7
PS Assign: PS9 (due Nov 20)
PS Assign: PA8 (due Nov 20)

Wednesday, Nov. 15

class Count:
PS Due: Reflection/Grade PS8

Friday, Nov. 17

class Gph:
eval Quiz: PS8

Monday, Nov. 20

class Fun :
PS Due: PS9
PS Due: PA8

Wednesday, Nov. 22

No Class!

Friday, Nov. 24

No Class!

Monday, Nov. 27

class NT:
PS Assign: PS10 (due Dec 4)
PS Assign: PA9 (due Dec 4)

Wednesday, Nov. 29

class NT:
PS Due: Reflection/Grade PS9

Friday, Dec. 1

class NT:
eval Quiz: PS9

Monday, Dec. 4

class NT:
PS Due: PS10
PS Due: PA9

Wednesday, Dec. 6

class NT:
PS Due: Reflection/Grade PS10

Friday, Dec. 8

class NT:
eval Quiz: PS10


Prof. Shelby Kimmel

Shelby Kimmel Headshot
Office: MBH 635
Office Hours:
  • Drop-in: Tues 9-10 am, Wed 3-4, Thursday 1-2, Friday 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