Section 51
Spring 2018
Prof. Luke Hunsberger

Section Class Meetings Lab Meetings
101-51 Tue/Thu @ 1:30 - 2:45 p.m. in SP 309 Thu @ 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 (You can download drRacket instead if you want; it should work fine.)

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

Nuts and Bolts

Instructor Prof. Luke Hunsberger, SP 104.3
Prof. Hunsberger's Office Hours See My Web Page
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 exams.
Seating will be randomized for each quiz & lab.
Exams There will be two in-class exams: one shortly before or after spring 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 should 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.

Tue. Class

Thu. Class

Thu. Lab

Jan. 23
No Class Yet!
Jan. 25
Welcome and Introduction.
Covered Chapters 1-3 in the Textbook.
Jan. 25
Covered Chapters 1-6.
Jan. 30
Reviewed Chapters 1-6.
Code from class
Read Chapter 7: Special Forms
Feb. 1
Chapter 7: Special Forms
Feb. 1
Lab 1: Intro to your CS account
Jerry Bailie's slides
Instructions for Lab 1
Read Appendix A *before* coming to Lab!
Feb. 6
Prof. out sick.
Read Chapters 8-9
Feb. 8
Overview plus Chapters 8-9, plus a bit of Chapter 10.
Code from class
Feb. 8
The PROBLEMS pdf file.
Feb. 13
Chapters 10 and 11.
Code from class
Feb. 15
Chapters 11 and 12.
Code from class
Feb. 15
Quiz before Lab over Chapters 1-9!
Feb. 20
Recursion, Chapter 12
Code from class
Feb. 22
Chapter 13.
Code from class
Feb. 22
Quiz before Lab on Chapters 1-11.
Asmt. 3 Solutions!
Feb. 27
Chapters 13-14 (and/or/not and more recursion)
Code from class
Mar. 1
Finished with Chapter 13; Looked at Section 14.2 (Tail Recursion)
Code from class
Mar. 1
Mar. 6
In-class Exam!
Covers material through the end of class on Feb. 27.
Mar. 8
Code from class
Mar. 8
Lab 6