How to Think Like a Computer Scientist by lots of people. A free, open-source textbook that anyone can read, edit and share.

Our local copy is maintained by Professor Schueller. If you encounter any errors in the textbook, please email him.

Learning Activities

This class meets three times per week on Tuesday, Thursday, and Friday, 8:00 - 8:50 a.m., in Olin 165.

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 work on laboratory exercises at the computer with other students in the class. We will start and/or end many days with a short discussion. 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, check the schedule for today's class meeting to find out what we will be working on.  Second, if there is a reading listed for today's class meeting, read it before class and answer the readback questions. Third, 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 projects and demonstrate your learning through three in-class exams.


To help you prepare for class, most days will have a short pre-class "Readback" form for you to fill out. Your average score on Readbacks is worth 10% of the final grade.

You can find the Readback form on the class syllabus next to the reading for the day. Remember it's timestamped and is due at least one hour before the start of class. 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, 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. I encourage you to take notes with pen and paper during class.

Participating in class involves:

If your participation or non-participation is problematic, I will invite you to visit office hours to discuss the issue.


There will be regular programming assignments. hese homework assignments are intended to help practice important ideas and constructs, and learn some new things as well.Your overall homework average will comprise 35% 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. When you submit the assignment, you will reflect on your experience and 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 most homework assignments. Although I want everyone to give teamwork a try, I understand that some students strongly prefer doing their homework alone. After the first two programming assignments, I will give you the opportunity to decide whether you want me to continue to assign you to a team or whether you prefer to work alone.

When you work with a partner, you must inform me in a comment at the top of your assignment the names of the two contributors to the homework.

Above & Beyond. To earn full credit, each submission must have a modest extension that you formulate and include on your own, in addition to the assigned work. There must also be a brief written description of the piece of the assignment that you consider to be the Above & Beyond component, so that I'll know what to look for. This part of the assignment will be worth roughly 10% of any particular homework

Significant Bits presentation

Almost every class period a student will do a brief 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 serve) 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.

Your score on the presentation is worth 5% of the final grade.


There will be two exams during the semester and one final exam (2-4pm, Tuesday, May 17th). The final exam is cumulative with roughly half of the exam concentrating on the latter third of the course and the other half concentrating on the previous two-thirds of the course.

The final exam is worth 25% of the final grade; the other two exams together are worth 25% of the 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 Catalog:

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.

Plagiarism occurs when a student, intentionally or unintentionally, uses someone else’s words, ideas, or data, without proper acknowledgement. College policy regarding plagiarism is more fully explained in the Whitman College Student Handbook. Each student is required to sign the Statement on Academic Honesty and Plagiarism. Cases of academic dishonesty are heard by the Council on Student Affairs.

Here are my policies:

Do your own work. Programming is hard. The only way to learn is to do it yourself. As such, while you may discuss general approaches to homework problems with anyone, you may discuss code only with your designated partner(s) and not with other students. You may also seek help as described below.

When you work with a partner, you should not divide up the problems to work 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.

Python programs to solve homework exercises can sometimes be found with a simple Google search. You may not use these.  If you have questions, ask me. All the work you submit to me is implicitly 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 to complete a pressing assignment, instead, please talk to me about it.

Attribute the contributions of others. When you explicitly work as part of a group or team, you need not identify the work of each individual (unless I specify otherwise). It is assumed that each of you contributed to all parts of the assignment. Any conceptual contributions by individuals not in your group should be acknowledged and attributed in your report. That is, you must give specific attribution for any assistance you receive. The suggested acknowledgment format is "[Person X] helped me to [do thing Y] by [explaining Z]."

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

I will offer a small amount of extra credit for turning in a one-page, 8.5"x11", single-sided "cheat sheet", handwritten by you, along with your exam. Preparing a "cheat sheet" serves at least three functions: First, it may save you time and uncertainty during the exam. Second, writing important information may help you to remember it, so that you don't even need to look at your cheat sheet. Third, and most importantly, preparing a "cheat sheet" requires you to reflect on what kinds of problems are likely to appear on the exam and what information will help you solve them.


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 considered private; 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. Thus, 1% will be deducted from your overall grade for each unexcused absence.

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

I understand that sometimes "things happen." Therefore, you will be granted one unexcused absence from class without penalty. However, this rebate is cancelled upon a second unexcused absence.


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 between the instructor and 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

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 interests or career plans.

You are welcome to drop in during my official office hours, posted on my home page, and 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 technology problems, Python syntax and semantics, and general approaches to problem solving. During regular work hours, talk withMath & CS Technical Specialist Dustin Palmer in Olin 166. After hours, you can find student lab aides in Olin 165.

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


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

Type of work
Significant Bits presentation
Midterm exams
Final exam

Letter grades will be assigned according to the following scale:

Grade   Percentage
A - 92-100
A- - 90-91
B+ - 88-89
B - 82-87
B- - 80-81
C+ - 78-79
C - 72-77
C- - 70-71
D+ - 68-69
D - 62-67
D- - 60-61
F - 0-59

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 ( with thanks to Sam Rebelsky, Henry Walker, Jerod Weinman, and Albert Schueller

Created January 15, 2016
Last revisedApril 14, 2016, 11:30:58 AM PDT
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.