The required textbook is Discrete Mathematics and Functional Programming by Thomas VanDrunen. All our readings will come from this book. It is available from the College Bookstore and many online bookstores, as well as the publisher.

This is a first-edition textbook. The author's web site provides a list of errata. I encourage you to go through the book and mark these errata before we get too far: the first erratum is on page 50. I will award a modest amount of extra credit, applicable towards homework, for every additional error found and reported to me by email; I will collect these errata and forward them to the author.

The author also provides source code for textbook examples and exercises.

Learning Activities

This class meets three times per week on Monday, Wednesday, and Friday, 11:00-11:50 a.m., in Olin 124.

This course will have a predictable rhythm. Class time is mainly for working out new kinds of problems together and consolidating what you have learned. There will be daily homework assignments. Tests come when we get to good stopping points.

Before class you are to read the assigned sections from the textbook and, sometimes, watch a video presentation. In class I will review and highlight material, especially definitions, that you have read. I will avoid lecturing as much as possible, preferring to devote most of our meeting time to working through problems together. Some class periods will also include demonstrations of new ML features. At the end of each class, I will assign problems from the textbook, which will also be posted on the course website.


Readings fit into four categories:

Read carefully means I will not cover the material in class at all. It's background for what we really want to work on. You solely are responsible for it.

Read means I will highlight and review the main ideas but not lecture on them. I will assume you have already seen these ideas in the reading. We will work on sample problems from these sections in class.

Skim means this is difficult material that most students will need to see twice to understand. Familiarize yourself with the reading before class, and then we will work through the reading together in class. Note that skim does not mean skip.

Review means we have already discussed this material, but you will benefit from revisiting it.


At times, I will also ask you to watch video tutorials created by the textbook author. These tutorials supplement the textbook. Watching them will be considered part of your preparation for class. The goal is to allow more time for active learning in class by spending less class time on lectures and demonstrations.


To help you prepare for class, most days will have a short pre-class "Readback" form for you to fill out. Readbacks are graded on a binary scale: "done" or "not done." Your average score on Readbacks will comprise 5% of the final grade.

You can find the Readback form on the class schedule next to the reading for the day. Remember it's timestamped and due at least one hour before the start of class, to help me prepare. No late Readbacks will be accepted.

Class meetings

You are expected to attend and actively participate in class. I am expected to make class worth attending.

Participating in class involves: If your participation or non-participation causes problems for other students, I will invite you to visit office hours to discuss the issue.

Some advice: Take the right amount of notes. You need to be active in class, working through the problems we are doing together on the board or in small groups. Research suggests that the most important part of taking notes is to process new ideas and decide what to write down. Don't feel like you have to transcribe everything we write on the board; in fact, this may get in the way of your processing.


As noted above, this class will have daily homework assignments. Assignments will include both written mathematical work and programming problems. In total, homework will comprise 25% of your final grade.

Written mathematical work will be submitted on paper during the class period after it is assigned. Make sure each problem is clearly labeled. For legibility, please do not write on the backs of pages. If your work spans multiple pages, please staple them together. If you know LaTeX or want to learn it, you are welcome to type your work. Handwriting is equally acceptable.

I will collect your work at the end of class. (Remind me if I forget.) However, you are granted an automatic grace period until 5:00 pm that day. Assignments not complete at class time, or assignments you want to revise after class, may be submitted to the envelope on my door. If your work is not complete at the end of the grace period (5:00 pm), then turn in what you have at that time for partial credit.

Assignments are spot-checked: Depending on the assignment, about half the problems will be graded, and you won't know ahead of time which ones. This is because my capacity to grade problems is less than the amount of practice you will need.

Programming problems will be turned in using an automated grader. The same rules about due dates and times apply. The system will run the submitted code against a series of test cases and then report on the results. (You will not see the test cases. Testing your code with your own test cases is part of the assignment.) You may submit as many times as you want until the deadline. Submissions that do not pass all the test cases will be assigned partial credit. Feedback will be reported by email.

Grades and comments will be recorded in the gradebook on CLEo.

Practice makes perfect. Assigned problems are for practicing new skills. It's important to put in regular practice—hence the daily homework—but it's also important to master the material. After you receive your graded assignments back, you may redo any proof, programming problem, or "game" problem (from Chapter 3) that you did not receive full points on. Resubmit your work up to two class meetings later for up to full credit. If you do not receive full credit the second time, you may resubmit again under the same rules, up to the final day of classes. When resubmitting your work, please include the graded original and any subsequent regraded attempts.


This course has a data modeling project in which you will apply the discrete math material and what you have learned about programming to model real-world information or phenomena using SML. Work on the project will be spread throughout the semester. This project will comprise 10% of your final grade.


There will be two midterm exams and a final. We will discuss the format of the exams as they approach. In total, exams will comprise 60% of your final grade. Dates appear in the course schedule.

Per College policy, the final exam will be Friday, December 16, 2 - 4 pm. I will not permit students to take the exam early. Please plan your travel accordingly.


Academic Honesty and Collaboration

The computer science faculty have prepared some common guidelines for academic integrity in computer science courses, which you should read. Here are my policies for this course:

You are encouraged to discuss concepts, problems, and approaches to solving problems with your classmates. However, your solutions, proofs, and programs must be your own. 

If you are having trouble debugging a program (or proof!) you have written, you may show it to a classmate to receive help; likewise you may inspect a classmate's incorrect program or proof to provide help. However, you should not show correct code to a classmate, nor should you look at another students' correct code, unless I direct you to do so. Similiarly, you should not share correct proofs unless directed to do so. Work resulting from inappropriate collaboration will not be accepted.

Significant insights obtained from other students should be acknowledged in your programs and in your written work. The suggested acknowledgment format is "[Person X] helped me to [do thing Y] by [explaining Z]."


If you are a student with a disability who will need accommodations in this course, please meet with either Julia Dunn, Associate Dean of Students (Memorial 325, 509-527-5213, or Rebecca Frost, Director of Student Success and Disability Support Services (Memorial 325, 509-527-5213, for assistance in developing a plan to address your academic needs.

All information about disabilities is confidential. If I receive notification from Ms. Dunn or Ms. Frost that you are eligible to receive an accommodation, I will provide it in as discreet a manner as possible.


Class is time for learning and practice which you cannot obtain by reading someone else's notes. Moreover, we depend on your contributions and partnership.

There is no specific penalty for absence. However, consistent attendance will bolster a borderline grade.

I will excuse your absence if you have a legitimate reason to miss class and you manage your absence responsibly:

Getting help

The material in this class builds on itself. If you don't understand something, don't just shrug it off and move on: Get it right. Even if it doesn't seem like last week's material is being used this week, it will come back in the future.

In a class like this, much of the learning happens in office hours. I prefer that you come to my official office hours, posted on my home page, but you may knock any time my door is open. If your need is known at least 24 hours in advance, you are very welcome to schedule an appointment with me for a chat in my office, a walk, or lunch.

You are welcome to email me with simple questions, but note my response time will be unpredictable. I will try to answer email every day during my office hours when I am not busy meeting students. Mornings are for focused work, while evenings and weekends are for my family. Although it may be convenient for you to send an email, you may get a faster and better response by visiting in person. Of course, complex questions (or simple questions with complex answers) are best discussed in person.


I will use the following scheme as an initial basis for assigning final grades:

Type of work

Letter grades will be assigned according to the following scale. Plusses and minuses will be awarded at my discretion.

Grade   Percentage
A - 90-100
B - 80-90
C - 70-80
D - 60-70
F - 0-60

I do not believe in grading on a curve; I would be thrilled to give you all As. However, I reserve the right to make adjustments if this weighting scheme produces grades which are lower than I believe are deserved. Any such adjustments will only raise your grade, never lower it.

Janet Davis ( Some assignments and policies are adapted from Thomas VanDrunen's syllabus for CS/MATH 243, Wheaton College.

Created August 28, 2016
Last revised August 30, 2016, 01:22:45 PM PDT
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.