Section 51
Spring 2020
Prof. Jose Guerra

Class Meetings Lab Meetings
Tue/Thu @ 12:00 - 1:15 p.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 (used to be) freely available from The newest version is called drRacket and is available from

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

Nuts and Bolts

Instructor Prof. Jose Guerra, SC 016 (That's Sanders Classroom, not SP.)
Prof. Guerra's Office Hours Coming Soon
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/drRacket software that we will be using throughout the semester. Even if you have the drScheme/drRacket 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 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. Guerra during his office hours. However, there will typically be one or more problems on each assignment that will be "help free" (i.e., no assistance by coaches or Prof. Guerra 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/drRacket software. If you'd like to set up drRacket on your own computer, then go to to download the software.
Computer Accounts Each student will be provided with a CS computer account that is distinct from your Vassar computer account. The drScheme/drRacket 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 (____), Quizzes (____), Assignments (____), First Exam (____), Second Exam (____), and Final Exam (____).
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, as well as information about labs and assignments.

Mon. Lab
3:10 - 5:10 p.m.

Tue. Class
12 - 1:15 p.m.

Thu. Class
12 - 1:15 p.m.

Jan. 23
Welcome and Introduction.
Chapters 1-3 in the Textbook.
Play Yahtzee online
Jan. 27
Chapters 2-5.
Jan. 28
Jan. 30