Sections 01, 02 & 05
Fall 2017
Profs. Luke Hunsberger and Simon Ellis

Section Class Meetings Lab Meetings
101-01 Mon/Wed @ 12:00 - 1:15 p.m. in SP 309 Mon @ 6:00 - 8:00 p.m. in SP 309
101-02 Mon/Wed @ 1:30 - 2:45 p.m. in SP 309 Tue @ 3:10 - 5:10 p.m. in SP 309
101-05 Tue/Thu @ 9:00 - 10:15 a.m. in SP 309 Mon @ 3:10 - 5:10 p.m. in SP 309

Note: SP = "Sanders Physics"

Contents and Frequented Links


People use computers to solve problems. To be effective, programmers must thoroughly understand not only the problem to be solved, but also the interesting relationship between the programmer, the program and the computer. Investigating this relationship raises several unexpected, but important issues. For example, what sort of language do we want to use to "communicate" with a computer? What sorts of problems can computers be expected to solve? What are the basic elements of computation? What concepts or constructions can facilitate the task of programming a computer? This course addresses these and other important issues by having students directly interact with computers from the very beginning. The lectures involve the exploration of topics not only by discussing them, but also by regularly putting ideas to the test in live computer sessions. (The computer code seen during lecture is regularly posted on the course web site.) The course includes weekly lab sessions in which students get regular hands-on experience with the issues being addressed in the lectures. These lab sessions also serve as a kind of warm-up for the weekly programming assignments, in which students explore issues in greater depth.

The course covers the following topics:

These topics are addressed in the context of the Scheme programming language. Although these topics could be discussed in the context of any programming language, Scheme is a good choice because it has a comparatively simple computational model (syntax and semantics), yet is as powerful as any programming language.

To facilitate the writing and running of programs, this course employs the drScheme software, which is installed on all of the lab computers and is freely available from (Ignore the pop-up windows that talk about drRacket!)

The textbook for this course is available online---for free.

Nuts and Bolts

Instructors Prof. Luke Hunsberger, SP 104.3
Prof. Simon Ellis, ...
Prof. Hunsberger's Office Hours See My Web Page
Prof. Ellis' Office Hours Forthcoming
Text The textbook for this course will be provided online---for free. You may wish to print it out and put it into a loose-leaf binder. This would also be good for holding lab and assignment solutions if you want to print them out.
Lectures The lectures will augment the material covered in the online textbook by providing in-depth examples and analyses. The material covered each week builds on what was covered in prior weeks. As such, it is essential that you attend every lecture---and keep up with the reading assignments.
Labs (and Quizzes) This course has weekly lab sessions held in SP 309. The lab computers use the Linux operating system and have the drScheme software that we will be using throughout the semester. Even if you have the drScheme software installed on your own computer, you must do your lab work in the lab on one of the lab computers during the lab time. Each lab session should be viewed as a warm-up to prepare you for that week's forthcoming assignment. You must do your own work; so asking one of your classmates for assistance is not permitted. If you get stuck, raise your hand to ask for help. When you are finished a lab, simply ask the professor or one of the coaches to verify that you have done the work and they will record your grade on a scale from 0 (no work) to 3 (well done).
Each lab, after the first week or so, will begin with a short quiz that together will serve as warm-ups for the in-class midterm.
Seating will be randomized for each quiz & lab.
Exams There will be two in-class exams: one shortly before or after fall break, and another toward the end of the semester. They will be paper-n-pencil exams. You may not use any computers or calculators or other devices: just a pencil. You may bring to each exam a single 8.5"-by-11" piece of paper with whatever notes you want to write on it that you may consult during the exam. (Font size no smaller than 8pt!)
No final exam for this course!
Assignments Starting the second week of classes there will typically be one assignment each week. Most assignments will be programming assignments. Unless explicitly authorized for a particular assignment, collaboration is NOT allowed on assignments. If you run into difficulty with an assignment, you should contact one of the student coaches during their office hours or Prof. Hunsberger during his office hours. (However, there will typically be one problem on each assignment that will be "help free" (i.e., no assistance by coaches or Prof. Hunsberger until after the assignment has been turned in.) All programming assignments must be submitted electronically. As you will find out, submitting assignments electronically is easy to do from the Lab computers. If you want to do a programming assignment on your own computer (see "Software" below), email yourself a copy of your assignment files, then use a Lab computer to read your email and download the files, then submit as usual. More details will be provided in the near future about how to submit an assignment electronically. You must also turn in a paper printout of your programming assignments.
The final programming assignment will be a two-week project that will count the same as two ordinary assignments. It will be due towards the end of the study period.
Coaches' Office Hours Office Hours
Software The computers in the lab are set up for you to use the drScheme software. If you'd like to set up drScheme on your own computer, then go to to download the software. (Ignore the pop-up windows about drRacket that may pop up from time to time! Stick with drScheme! And be sure to select version 4.2.1 since that is the version we will be using in class. Additional instructions will be provided soon. In the meantime, use the computers in the lab.)
You may choose to use drRacket for your assignments; it will probably work!   :)
Computer Accounts Each student will be provided with a CS computer account that is distinct from your Vassar computer account. The drScheme software that is used in this course is automatically available on your CS computer account. More details will be provided during your first programming lab.
Grades Based on Labs (10%), Quizzes (10%), Assignments (50%), First Exam (15%), Second Exam (15%).
Note: Although higher numerical scores will necessarily receive the same or higher letter grades, I do not feel bound to follow the frequently used 90/80/70/60 cut-offs.
Academic Integrity Don't cheat! Read Going to the Source: A Guide to Academic Integrity and Attribution at Vassar College. The guidelines that apply to writing in general apply equally well to the writing of computer programs. Copying someone else's code without attribution amounts to plagiarism! School policy dictates that instructors must report all suspected incidents of cheating to their department chair. Did you read the preceding sentence?! Please don't put yourself or your professor in that position. In this course, unless explicitly stated otherwise, collaboration is not allowed on labs or assignments; and it is never allowed on exams.
Academic Accommodations Academic accommodations are available for students registered with the Office for Accessibility and Educational Opportunity (AEO) . Students in need of disability (ADA/504) accommodations should schedule an appointment with me early in the semester to discuss any accommodations for this course that have been approved by the Office for Accessibility and Educational Opportunity, as indicated in your AEO accommodation letter.
Title 9 Note Vassar College statement on providing a safe learning environment.
Caution! This course starts out with basic concepts, but each week the online course notes, lectures, labs and assignments build new ideas on top of what was seen previously. Therefore, it is extremely important that you attend all lectures, keep up with the reading, and do all labs and assignments in a timely fashion. Historically, those students who experienced difficulty with CMPU-101 got into trouble by ignoring this advice. If you find yourself having trouble, by all means, come to my office hours! I'm more than happy to assist!


The following calendar of lecture topics will be filled out during the course of the semester. Typical calendar entries will also include links to the code we looked at in class that day.

Mon. Class


Wed. Class

Aug. 28
Welcome and Introduction.
The textbook.
Covered Primitive Data Expressions (Chapter 2) and the Evaluation Function (Chapter 3). Dipped a toe into Chapter 4 (DrScheme).
Aug. 28/29
DrScheme (Chapter 4), Built-in Functions (Chapter 5) and Evaluating Non-Empty Lists using the Default Rule (Chapter 6).
Aug. 30
Reviewed the syntax and semantics of Scheme that we have seen so far (Chapters 1-6), discussed the Default Rule for evaluating non-empty lists in more detail (Chapter 6), and introduced the define special form (Section 7.1).
Sept. 4
Labor Day (no class)
Sept. 5-6
Introduction to your CS account.
Resetting your Linux password
Linux tutorial
Please read the following sections in the Appendix before coming to your first class this week: A.1 and A.2 (pp. 259-261); and B.1 (pp. 266-271).
Code from class (Section 02)
Sept. 6-7
The quote special form (Section 7.2) and Predicates (i.e., functions that return boolean values) (Chapter 8).
Code from class (Section 02)
Note: Section 01 only has one meeting this week due to Labor Day.
Sept. 11-12
Code from class (Section 01)
Code from class (Section 02)
Code from class (Section 05)
Sept. 11-12
Code from Lab (Section 05)
Sept. 13-14
Code from class (Section 01)
Code from class (Section 02)
Code from class (Section 05)
Asmt. 1 Solutions!
Sept. 18-19
Code from class (01)
Code from class (02)
Sept. 18-19
Code from lab (01)
Code from lab (02)
Sept. 20-21
Code from class (01)
Code from class (02)
Asmt. 2 Solutions!!
Sept. 25-26
Code from class (01 & 02)
Sept. 25-26
Lab 4 Solutions!, Lab 4 (Section 05)
Sept. 26-27
Code from class (01 & 02)
Oct. 2-3
Code from class (01), Code from class (02).
Oct. 2-3 (Lab session)
MIDTERM EXAM Solns.for Sections 01 & 02
Oct. 4-5
Oct. 9-10
Oct. 9-10
Oct. 10-11
Oct. 16-17
Finishing chapter 12, starting chapter 13.
Code from class (Sec. 02)
Oct. 16-17
Lab 5 Solutions!!
Oct. 18-19
Continuing with Chapter 13.
Code from class (Sec. 02) Asmt. 4 Solutions!
Oct. 23-24
Continuing Chapter 13: let and let*.
Code from class (01), Code from class (02), Code from class (05).
Oct. 23-24
Lab 6 Solutions!
Oct. 25-26
Asmt. 5 Solutions!
Oct. 30-31
Chapter 14
Code from class (01), Code from class (02). Code from class (05).
Oct. 30-31
Lab 7 Solutions!
Nov. 1-2
Code from class (01), Code from class (02), Code from class (05).
Nov. 6-7
Code from class (01), Code from class (02). Code from class (05).
Nov. 6-7
Lab 8 Solutions!
Nov. 8-9
Code from class (01), Code from class (02). Code from class (05).
Asmt. 6 Solutions!
Nov. 13-14
Code from class (01), Code from class (02). Code from class (05).
Nov. 13-14
Lab 9 Solutions!
Nov. 15-16
Code from class (01), Code from class (02). Code from class (05).
Asmt. 7 Solutions!
Nov. 20-21
Code from class, Code from class. Code from class (05).
Nov. 20-21
Lab 10
Problems 1-5 in Chapter 15.
Nov. 22-23
Code from class (01), Code from class (02). [No section 5 class (Thanksgiving).]
Nov. 27-28
Code from class (01), Code from class (02).
Online yahtzee!
Yahtzee Asmt.: Due: Dec. 10 @ 11:59 pm.
Code from class (05).
Nov. 27-28
Lab 11 Solutions (for compute-histogram)
Nov. 29-30
Code from class (01), Code from class (02), Dice-Dice game (text-based), Graphical Dice-Dice
Dec. 4-5
Exam 2 for sections 1, 2 and 5, focusing on Chapters 12-15
24-Hour Take Home Exam. Pick up in CS Dept office anytime Monday or Tuesday, Dec. 4-5, between 10:00 a.m. and 4:00 p.m. and return to the CS Dept office no more than 24 hours later!
Graphical Blackjack!
Dec. 4-5
Dec. 5 = THURSDAY teaching day
Dec. 6
Dec. 6 = FRIDAY teaching day
Last assignment will be due on the last day of Study Period (i.e., Dec. 10)