Math Foundations of Computer Science
Photo © Mark Farber (www.markfarber.com)

# Announcements

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

# Goals

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

• Ability to think like a computer scientist (using the tools of mathematics).
• Ability to communicate like a computer scientist (using the language of mathematics).
• Proficiency using common mathematical tools of computer science, and ability to apply these tools in novel situations.

### Learning Objectives

After completing this course, students should 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.
• Describe and construct finite state machines.

# CS 200 Syllabus

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

• Section A: 9:05-9:55 AM
• Section B: 10:10-11:00 AM

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.

• 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. (You may book 2 sessions in a row if you think you need more time.) You can also schedule an appointment by e-mail if these times do not work for you.

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.

Texts:
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

• Group Work: You will be assigned to a small group for in-class discussions and problem solving. Diverse groups tend to perform better than homogeneous groups, so think about what perspectives or background you might bring to your group.
• Attendance: Because of the emphasis on group work, it is important that you attend class regularly. I will use Plickers to keep attendance and for feedback, but your Plicker responses will not affect your grade. If you need to print out your Plicker QR code, go to plickers.com.
• Participation Grade: according to this rubric

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.

• Pre-Quiz: It is extremely difficult to complete one of my problem sets in one sitting. Your brain needs time to understand, brainstorm, and synthesize the ideas needed to solve these problems, and this process generally takes a couple of days (and several good night's sleep) and occurs even if you are not actively thinking about the problem set. The purpose of the Pre-Quiz is to force you to at least look at the problem set soon after it is assigned, in order to jump-start this process.
• Problem Set: Provides opportunity and incentive to practice skills of the course. Should be submitted as a PDF to Canvas. Due most Mondays before class. You will be graded on effort, using these criteria.
• Self-Grade: Helps you to figure out what you understand, and where you need more practice. I will give you my solutions to the problem set, and you will go through your solutions and use this rubric to give yourself a grade. My expectations for your self-grade are specified here. Your self-grade will be done through the Canvas feedback system (to be explained in class), and will be due most Wednesdays before class.
• Reflection: Studies have shown that thinking critically about your learning process improves your learning. To facilitate this thinking, after each problem set, you will write a reflection, using this worksheet as a starting point. I will grade reflections using this rubric. Due most Wednesdays before class, submitted as a PDF to 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.

Quizzes
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.

Tests
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:

• March 14-16
• April 16-18

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

• Thursday, May 17, 9am-noon
• Friday, May 18, 9am-noon

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

• You can submit two problem sets within 24 hours late of the due date without effect on your grade.
• You can skip one problem set (and associated pre-quiz, self-grade, and reflection) without effect on your grade, but you are still responsible for the material.
• You can miss one class without an excused absence without effect on your grade, but you are still responsible for the material.
• I will drop your two lowest quiz scores.

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

• Final: 30%
• Midterms: 25%
• Quizzes: 20%
• Problem Sets: 15%
• Class Participation and Attendance: 10%

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.

# Resources

### Texts

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

• DMOI: Discrete Mathematics: an Open Introduction by Oscar Levin
• BOP: Book of Proof by Richard Hammack (I will abbreviate at BOP)
• DMA: Ereserves (Password on Canvas Site.) Discrete Mathematics and Its Applications by Kenneth Rosen (selected chapters).
• E-Book on course reserves. (Discrete Mathematics with Applications by Thomas Koshy - beware some typos.) To download e-books for offline use see this tutorial

### Rubrics and Resources

• Reflection Worksheet (pdf) or (tex)
• Problem Set Self-Grading Rubric (pdf)
• Problem Set, Self-Grade, and Reflection Criteria (pdf)
• Programming Rubric (pdf)
• Group Work Grading Rubric (pdf)
• Latex Resources here

### 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.

# Calendar

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

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

Spring Recess

Spring Recess

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

# Staff

#### Prof. Shelby Kimmel

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