- Office Hours this week: Normal on Monday, cancelled on Wed. No appointments Thurs.
- Video lecture for this Wednesday. Video You will need to use your Middlebury log-in to view. If you are having technical issues let me know.
- Just a reminder that Friday no class, but there wil be a video lecture, and a quiz for PS7 done through Canvas. I will e-mail you about both of these later in the week. The quiz will likely be available from Thursday afternoon/evening through Friday afternoon.
- Solutions to the first midterm are on my door. Please do not copy, do not remove from MBH 6th floor, and return to my door when finished looking at them.
- Exam next week:
- Available after Monday's class, and must be returned Wed at 6pm. Pick up from my door as last time. 3.5 hours to return, 3 hours to take exam. If I am not in my office, slide under door.
- In addition to regular office hours next week, I will be available to answer questions if they come up while you are taking the exam Monday: 5-6pm, Tuesday: 11-noon, 4:30-6pm, Wed: 5-6
- The exam will cover material up until PS7, which is up until April 4. It will be cumulative, but with a focus on PS5-PS7.
- The exam will be closed, EXCEPT for a one-sided 8x11.5 piece of paper of notes. (Typed or handwritten.) Please turn this note paper in with your exam.
- We will have a review on Monday during class next week. There is a "quiz" on Canvas to collect topics that you would like covered on the exam. Please fill out by 1pm on Sunday so I have time to prepare the review. Link to "Quiz"

- Programming assignments: I'm happy to discuss high level approaches with you during office hours. I will generally not help you to debug.
- Note PS8 is not due until April 23... but that does not mean you should put it off until then. Work on it while the material is fresh!

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.

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

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.

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

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

- 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

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

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

Class Introductions Slides

Assign Questionnaire (due. Feb 16)

Assign PS1 (tex) (due Feb 19)

Eval Pre-Quiz PS1 (due by midnight)

Assign Questionnaire (due. Feb 16)

Assign PS1 (tex) (due Feb 19)

Eval Pre-Quiz PS1 (due by midnight)

Class Induction Notes, Slides

Eval Quiz: Syllabus

Due Questionnaire

Read DMOI 2.5 (before Strong Induction)

Read BOP 10 (before 10.1)

Eval Quiz: Syllabus

Due Questionnaire

Read DMOI 2.5 (before Strong Induction)

Read BOP 10 (before 10.1)

Class Sets,
Notes, Sets Worksheet, Sets Worksheet Solutions

Eval Quiz: PS1

Due PS1 Reflection/Self Grade

Read DMOI 0.3

Eval Quiz: PS1

Due PS1 Reflection/Self Grade

Read DMOI 0.3

Winter Carnival - No Class!

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.

Due PS2

Assign PS3, (tex) (due Mar 5)

Eval Pre-Quiz

Read DMOI 0.2

Read BOP 2.1, 2.7.

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

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

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

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

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

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

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

Eval Midterm self-scheduled from Mar. 14 to Mar. 16. Pick up exam from box on my door.

Due PS4 Reflection/Self Grade

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

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

Spring Recess

Spring Recess

Spring Recess

Class Functions: Big-O Notes

Due PS6 (Tuesday Apr. 3)

Assign PS7 (tex) (due Apr 9)

Read Function Growth

Due PS6 (Tuesday Apr. 3)

Assign PS7 (tex) (due Apr 9)

Read Function Growth

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

Due PS6 Reflection/Self Grade (due Thursday Apr. 5)

Due Pre-Quiz

Due Mid-Semester Feedback Survey

Assign PA2

Read DMOI 1.3

Class Counting: Combining Techniques, Probability Video, Notes, Worksheet, Worksheet Solutions

Due PS7 Reflection/Self Grade

Due PreQuiz PS8

Read Probability

Due PS7 Reflection/Self Grade

Due PreQuiz PS8

Read Probability

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.

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.

Spring Student Symposium

Class Probability: Random Variables

Eval Quiz: PS8

Eval Quiz: PS8

Class Functions: Recurrence and Master Method

Due PS9

Assign PS10 (due May 7)

Due PS9

Assign PS10 (due May 7)

Class Counting: Diagonalization

Due PS9 Reflection/Self Grade

Due Pre-Quiz

Due PS9 Reflection/Self Grade

Due Pre-Quiz

Class Graphs: Trees and Other Special Graphs

Eval Quiz: PS9

Eval Quiz: PS9

Class Slush

Due PS10

Due PS10

Class Halting Problem

Due PS10 Reflection/Self Grade

Due PS10 Reflection/Self Grade

Class Reflections and Evaluations

Due Overall Reflection/Self Grade

Due Overall Reflection/Self Grade

Class Review

Eval Quiz: PS10

Eval Quiz: PS10

Office: MBH 635

Office Hours:

Email: skimmel [at] middlebury [dot] edu

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