The required textbook is Discovering Computer Science by Jesse Havill. You can purchase from the Whitman College Bookstore or any major online bookseller, as well as from the publisher. Note that the most affordable option is an eBook rental from the publisher. At times we will supplement this textbook with readings from other sources.

Learning Activities

This class meets three times per week on Monday, Wednesday, and Friday, 2:30 - 3:50 p.m., in Olin 124.

This course is taught in a collaborative workshop style. Some days we will spend the class period working through problems or concepts together as a class. Most days, you'll spend part of the class working on laboratory exercises at the computer with other students. Participation is key.

Because our time in class is limited, you should come prepared to each class. What does it mean to be prepared? First, attempt any exercises given to you to work on between classes. Next, check the schedule for today's class meeting to find out what we will be working on. If there is a reading listed for today's class meeting, read it before class and answer the readback questions. Finally, come to class on time, with paper and a writing instrument, ready to be an active participant. After class, you should review your notes, the in-class exercises, and possibly the reading as well, to gain their full benefit.

You will have the opportunity to exercise your creativity in many open-ended programming assignments and a final project. You will demonstrate your learning through ungraded, weekly quizzes and through three midterm exams. Although there is no final exam, we will use the final exam timeslot for final project 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 is due at least one hour before the start of class, to help me prepare. No late Readbacks will be accepted.

To get the most out of the readings, try the SQ3R method:
Skim the material, especially the introduction, summary, and headings, to get the big picture and an idea of what is important.
Formulate questions that you expect the reading to answer.
Read thoroughly, with particular attention to how the questions are answered.
Check that you can answer the questions, in your own words, from memory.
Go back over the whole, focusing on parts for which you can't answer the questions. Also note any questions you have that the reading doesn't answer or that you are still confused about, so that you can ask these questions in your readback or in class.

Class meetings

Class meetings will involve a mix of discussions, demonstrations, collaborative activities, hands-on exercises, and the occasional lecture. In short: You are expected to attend and actively participate in class. I am expected to make class worth attending.

Participating in class involves:

Research suggests that writing notes in longhand is more effective for learning than typing notes on a computer. Therefore, I encourage you to try taking notes by hand. At times, you will also need to draw diagrams. Therefore, coming prepared to class includes bringing paper and pencil or a tablet computer that you can draw on.

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


There will be regular programming assignments. These homework assignments are intended to let you gain experience with interdiscplinary applications, practice using important constructs and ideas, and exercise your creativity and problem solving skills. Your overall homework average will comprise 50% of your grade.

Wrappers. To help you monitor your learning, you will be required to complete a "wrapper" for most assignments. As part of the readback on the day the assignment is handed out, you will estimate the amount of time you will need to complete the assignment and think about how the assignment will challenge you. After you submit the assignment, the next readback will help you reflect on what you learned.

Teamwork. Because students can often learn and accomplish more in teams, I encourage collaboration on homework assignments. However, good friends do not always make good collaborators. Therefore, I will assign teams for many homework assignments.

Style. It is not enough to write code that works. Work that meets the requirements of the assignment will earn about 90% of the points.The remaining 10% will concern style, elegance, and efficiency. My expectations will increase in sophistication throughout the semester. I will aim to give you guidance on my current expectations in each assignment. If I do not, please ask.

Above & Beyond. I will give up to 5% extra credit for going "above and beyond" by doing something extra that is not part of the requirements of the assignment. Sometimes I will suggest possible extensions; other times you will need to think of extensions on your own. Occasionally, I will award Above & Beyond credit for unusually thoughtful solutions to required problems. Write a comment explaining which part of your work you consider to be the Above & Beyond component, so that I'll know what to look for.

Significant Bits presentation

Each student will deliver a 5 minute presentation on some topic related to computer science. The list of presentation topics is in this Google spreadsheet. You will pick a question (first come, first served) or suggest a question of your own during the first week of class. A presentation date will be assigned at random and presentations will begin in the second week. You will be provided with a grading rubric to consult as you prepare your presentation.

The Significant Bits presentation will be counted as an additional homework assignment.


Each week there will be a short, online quiz. The purpose of these quizzes is diagnostic: to help you understand where you are struggling, and to help me know when you are struggling. You may retake each quiz without penalty until you get the answers right; I will see how many times you take it.

The quizzes will comprise 5% of your final grade.


There will be three midterm exams, spaced about every four weeks. We will discuss the format of the exams as they approach. The exams will comprise 30% of your final grade.


Academic Honesty and Collaboration

I encourage collaboration when it promotes learning. However, it is also important for you to understand your homework solutions and to demonstrate your own learning on exams. As explained in the Student Handbook online:

Any form of falsification, misrepresentation of another’s work as one’s own (such as cheating on examinations, reports, or quizzes), or plagiarism from the work of others is academic dishonesty and is a serious offense.

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:

Do your own work. The only way to learn how to program is to do it yourself. You may discuss general approaches to homework problems with anyone. If you are having trouble debugging a program, you may show it to a classmate to ask for advice; likewise, you may inspect a classmate's incorrect program to provide advice. You may also seek help as described below.

You should never show correct code to a classmate, nor should you look at another student's correct code. You may collaborate only with your assigned partner(s).

Python programs to solve homework exercises can sometimes be found with a simple Google search. Don't do it. All work you submit to me is understood to be your own (unless otherwise attributed). If it is discovered that it is not, you will be prosecuted under the College's plagiarism guidelines. If you are tempted to plagiarize, instead, please talk to me about your concerns.

You are allowed to use online sources to help you debug your program or to learn how to do something not covered in our textbook.

When you work with a partner, you should not divide up the problems to do separately. You will not get the full benefit of the assignment if you divide the work. Instead, you should use a pair programming approach, as discussed in class, to work together on the problems.

Because I intend quizzes and exams to assess your individual understanding of the material, collaboration is not permitted. If you have questions, bring them directly to me. Of course, I encourage you to collaborate while studying for exams.

Attribute the contributions of others. When you work as part of a group, you must name each collaborator. However, you need not identify work done by each individual. It is assumed that each of you contributed to all parts of the assignment.

Any intellectual contributions by persons not in your group should be acknowledged through comments in your programs. The suggested acknowledgment format is "[Person X] helped me to [do thing Y] by [explaining Z]."

If you consulted an online source, provide a URL and briefly explain what you learned.


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. In particular, consistent attendance is required to invoke the Good-faith grade guarantee™.

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


Readbacks are due one hour before class, without exception.

Each homework assignment will specify a deadline. Deadlines may be extended for individuals and groups in accordance with the attendance policies described above or, rarely, by negotiation with the entire class.

Because I am concerned about your health and well-being, I will also accept late homework according to my health and well-being policy. You may invoke this policy under the following conditions:

Getting help

Everyone needs help now and then. I encourage you to come see me as soon as possible if you are having difficulties with the readings, class sessions, or homework. I also welcome discussions about course content and assignments, related current events, and your academic interests or career plans.

I am willing to answer questions by email if I can, but 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.

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.

Lab staff can help with Python syntax and semantics, technology problems, and general approaches to problem solving. In the evenings and on weekends, you can find student lab aides in Olin 124. During work hours, talk with Math & CS Technical Specialist Dustin Palmer next door in Olin 126.

Want additional help with your Significant Bits presentation? The COWS has drop-in tutoring hours with speaking fellows Tuesday, Thursday, and Sunday, 8 - 10 p.m. Or schedule an appointment online.

Finally, class mentors will provide assistance during class and in optional, weekly review sessions (time TBA). Mentors are also available for regular one-on-one or small group tutoring.


Grades on individual assignments will be posted to the CLEo gradebook for this class.

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

Type of work
Final project

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.

Good-Faith Grade Guarantee™

I believe everyone can learn computer science. However, learning requires significantly more effort for some students than for others. At the same time, I don't want you to be afraid to give computer science a try. Therefore, I reward effort as well as outcome.

Every student who makes the effort to learn in this class will pass with at least a C-. A good-faith effort includes missing no more than two classes, turning in every assignment, making a good-faith effort on each quiz and exam, and coming to talk with me if I ask you to.

Janet Davis ( with thanks to Andy Exley, Thomas VanDrunen, Albert Schueller, Jerod Weinman, Henry Walker, and Samuel A. Rebelsky

Created August 9, 2016
Last revised August 28, 2016, 04:55:05 PM PDT
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.