WPI Worcester Polytechnic Institute

Computer Science Department

CS 1101 A Term 2011
Introduction to Program Design

Objectives | CS 1101/ CS1102 | Why DrRacket? | Staff&Contact Information | Where&When | Textbook&Software | Grading | Policies | Schedule&Assignments

What this course is about

What drives someone to write a program? Once you have an idea for a program, what do you do next? What skills does it take to write useful programs? How does computer science interact with other disciplines? And what do computer scientists do besides programming anyway? CS 1101 introduces students to the worlds of computing and programming. Through a series of programming and information design exercises, students will learn how programmers view the world and how to turn problems into working programs. We'll study the various aspects of program design and write some fun programs along the way. This course assumes no prior programming background and is designed for both potential CS majors as well as curious students from other majors. Additional information about the course can be found in the WPI undergraduate catalog course description for CS 1101.

Course Objectives

CS 1101 is designed to help you identify problems that programs can solve and to learn how to design programs that solve problems. Program design involves a series of smaller skills, including information design, logic design, testing, and documentation. Improving your skills in these areas should help you with general problem solving even when you aren't programming.


Upon completion of this course, the student should be able to:

CS 1101 or CS 1102?

CS 1101 is intended for students with little or no programming experience. If you have had considerable prior programming experience (functions, recursion, lists, and trees) you may want to consider trying CS 1102, Accelerated Introduction to Program Design, instead. The curricula for the two courses are designed to allow you to switch back into CS1101 up through the midpoint in the term, if you find the pace of CS 1102 too fast. Refer to these details for transferring from CS 1102 to CS 1101 for more information.

Why DrRacket?

Why isn't CS 1101 taught using C/C++/Java...? None of the courses in the Computer Science department are intended to just teach you a programming language. Our courses use one or more programming languages to teach Computer Science concepts. DrRacket (a close cousin of the programming languages Lisp and Scheme) is particularly well-suited for teaching beginning programmers the essential concepts of program design, because its regular syntax makes it easy to learn how to program in the language and its simplicity means that students can begin writing complete programs from day one. Once you've mastered program design concepts, you'll find that additional languages can be learned more easily. And don't be fooled into thinking that DrRacket is a language for academics only. Some of the following readings provide details on Scheme (and Lisp) programming in academia and in the real world:


Instructor: Glynis Hamel (GH)

Teaching Assistants: Sarah Jaffer (SJ), Kenneth Loomis (KL), Sahel Mastoureshgh (SM), Yumeng Qiu (YQ), Francis Usher (FU)

Senior Assistants: Richard Brown (RB), Brian Gaffey (BG), Jon Kelly (JK), Wesley Ripley (WR), Joanne Zhang (JZ)

Office Hour Schedule

(Note: TA/SA office hours will be held in FL A22. Glynis Hamel's office hours are held in FL 132.)

Day/Time 11:00 12:00 1:00 2:00 3:00 4:00 5:00 6:00 7:00 8:00
Monday SM   YQ GH RB   BG JZ JZ JK
Tuesday KL FU SM WR SJ JK        
Wednesday   FU YQ YQ JZ     BG    
Thursday   FU WR SJ SJ SM BG   JK  
Friday   RB WR GH KL KL RB      
Glynis Hamel is available for additional office hours on Tuesday/Thursday by appointment.

CS 1101 Tutors

The MASH tutor for CS 1101 for A-term is Nicole Seese. Nicole will be available to provide MASH help in the Academic Resource Center in Daniels Hall on Mondays 6-7pm, Tuesdays 2-3pm, and Sundays 7-8pm. See the full MASH tutoring schedule for A-term here.

Class Discussion Board and Email

A discussion board for CS 1101 has been set up on myWPI. You are responsible for all announcements and information posted on the myWPI site - check it on a daily basis.

If you have a question regarding your grades in the course, send email to cs1101-staff *at* cs.wpi.edu. Mail sent to this address goes to the instructor and to the TAs. Include your section number in all correspondence.

The instructor's email address is ghamel *at* cs.wpi.edu. Please restrict your use of my personal email address to issues of a confidential nature. You will get a quicker response if you post your questions to the class discussion board.

Lecture and Lab Times

Lectures MTRF from 9:00 - 9:50am, and from 10:00-10:50am in FLPH-UPR. You should attend the lecture for which you are registered.

Labs meet on Wednesdays according to the following schedule:

Section Time Location Lab Assistants
A01 8 - 8:50am SL 123 Richard, Jon
A02 9 - 9:50am SL 123 Richard, Jon
A03 10 - 10:50am SL 123 Richard, Jon
A04 11 - 11:50am SL 123 Richard, Joanne
A05 12 -12:50pm SL 123 Joanne, Wesley
A06 1 - 1:50pm SL 123 Brian, Joanne
A07 2 - 2:50pm SL 123 Brian, Wesley
A08 3 - 3:50pm SL 123 Brian, Wesley

Textbook and Software

Textbook: The textbook for the course is How to Design Programs by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. MIT Press, 2001. You may use the online version or purchase a hard copy.

Software: We will use DrRacket, version 5.1.3, for all coding projects in the course. DrRacket is installed on all CCC lab machines. You can download DrRacket to your own computer; it's free and supports the usual OS's (Unix, PC, Mac).


Exams (60%)

Three exams will be given. Exams are tentatively scheduled for September 12, September 27, and October 13. You must have a passing average on the exams in order to pass the course. (A passing average on the exams is usually around 60%. We may lower this threshold if the exam averages are low; the threshold will not be raised).

Exams are closed-book, closed-notes. You may bring in one sheet of notes (one paper, 8.5" x 11.5", both sides) to each exam. You may not use any computers, calculators, cellphones, headphones, or other electronic devices during the exams.

There are no makeups for exams. Absence from an exam will be excused only for medical or emergency reasons. A note from your doctor or from the Office of Academic Advising will be required. In such cases your final grade will be recorded as Incomplete and you will be allowed to take a makeup exam the next time the course is offered (C-term 12).

Homework (30%)

Seven homework assignments will be given. Starting with Homework 2, homework assignments will be done in pairs. Homework assignments will be due on Tuesday evenings at 5pm. No extra credit or makeup assignments will be given. Read Homework Expectations for details on how to prepare your homeworks. The graders will follow these grading guidelines when grading your homework.

Labs (5%)

Labs will be given during conference sections on Wednesdays. To get credit for a lab you must attend at your scheduled time, sign the attendance sheet, actively work on the assignment during the lab period, and use turnin to turn in your work at the end of the lab period. Each lab will be graded as either credit (1) or no credit (0). At the end of the term, your 5 highest lab grades will be used to account for 5% of your final grade. You will not get credit for a lab unless you attend the section for which you are registered. There are no makeups for labs.

In-class assignments (5%)

Several times during the term we will take a few minutes of class time for in-class group work. This will consist of one or two questions related to recently-covered lecture material or homework problems. Each assignment will be graded as either credit (1) or no credit (0). At the end of the term, five of these assignments will be chosen at random by the instructor, and these will count as 5% of your final grade. There are no makeups for group assignments.

Academic Honesty Policy

Please read WPI's Academic Honesty Policy.

Labs and In-class group work

Collaboration is encouraged for labs and in-class group work.


Collaboration is prohibited on exams.


Homework 1 is to be done individually.

Starting with Homework 2, you will be working with a homework partner. You may discuss problems in a general manner across homework pairs, but each pair is responsible for writing up their own solution from scratch.

As examples, each of the following scenarios would constitute cheating (this list is not exhaustive!):

In contrast, the following scenarios would not constitute cheating:

Cheating will not be tolerated. If you are unsure whether a given activity would constitute cheating, ask the instructor. Violations of the Academic Honesty Policy can result in an NR for the course, and violators will be subject to the procedures outlined in section 5 of the WPI Judicial Policy.

Late Policy

Late homework will be accepted within 24 hours of the due date. Each homework-partner-group will be allowed one late submission without penalty. Beyond that, late homework will incur a 25% penalty (i.e. 25% of the total possible points for the assignment will be deducted). Any homework turned in after the 24-hour grace period will receive a grade of zero. No exceptions will be made to the late homework policy. No extra credit or makeup homework assignments will be given.

Do not send email to the instructor or to the TAs requesting special exemption from the late policy. The late policy is applicable for all possible reasons for late submissions. In particular, one pair member forgetting to turn in an assignment on time will not be considered an acceptable excuse for an extension.

Homework Submission Policy

Homework must be submitted using the web-based turnin program. Homework submitted by any other means (paper, email, etc.) will receive a grade of zero.

Students with Disabilities

Students with disabilities who believe that they may need accomodations in this class are encouraged to contact the Office of Disability Services (ODS) as soon as possible to ensure that such accomodations are implemented in a timely fashion. The ODS is located in the West St. House (157 West Street), 508.831.4908

Schedule & Assignments

Note: the instructor reserves the right to change the order of topics or the dates of the exams, if necessary.

Week Reading Topics Assignments Extra Notes

Aug 25 - 26 HTDP Chapter 1
HTDP Chapter 2
Intro to Programming and Racket
Expressions, Images, and Functions
Homework 1 (due: Tuesday, August 30)
Lecture 1 objectives
Lecture 2 objectives
Aug 29 - Sept 2 HTDP Chapter 3
HTDP Chapter 4
HTDP Chapter 5
HTDP Chapter 6
Function Composition
Symbols and strings
Nested structs
Lab 1, Wed 8/31
Homework 2 (due: Tuesday, Sept 6)

Lecture 3 objectives
Lecture 4 objectives
Lecture 5 objectives
Lecture 6 objectives

Messy "printed-pen-cost" code
Creating helpers (cleaned up "printed-pen-cost" code)
Symbols and Strings
Study Guide on Functions
Study Guide on Structures
tiger data definition (notes from class)

Sept 6 - 9 HTDP Chapter 7
HTDP Chapter 9

Mixed data (Unions) and the Design Recipe
Templates for lists
Lab 2,Wed 9/7
Homework 3 (due: Tuesday, Sept 13)

Lecture 7 objectives
Lecture 8 objectives
Lecture 9 objectives
Data Definitions and Templates for Structs[pdf]
Design Recipe Worksheet[pdf]
Exam preparation Guidelines
Sample Exam 1 [pdf]
Data Definition and Template for Lists[pdf]
When to Think While Programming
Sept 12 - 16 HTDP Chapter 10.1
HTDP Chapter 10.2
Exam 1, Monday, Sept 12
Producing lists
Lists of Structs
Lab 3, Wed 9/14
Homework 4 (due: Tuesday, Sept 20)
Lecture 10 - Exam 1
Lecture 11 objectives
Lecture 12 objectives
Lecture 13 objectives

Programs from Lecture 11 (Tuesday)
Data Definition and Template for List of Struct[pdf]
Solutions and additional problems from Lecture 12
Answers to the "CD Inventory" class problems (DrRacket file)

Sept 19 - 23 HTDP Chapter 14.1
HTDP Chapter 15.1
HTDP Chapter 15.2
Lab 4, Wed 9/21

Homework 5 (due: Tuesday, Sept 27)
Lecture 14 objectives
Lecture 15 objectives
Lecture 16 objectives
Lecture 17 objectives

Tree Data Definitions for fixed-width trees (.pdf)
Problems from Lecture 15
Solution to "update-year" function
Exam preparation Guidelines
Sample Exam 2 [pdf]
Solution to "count-older-blue" problem from Lecture 16
On filling in templates
"gather-green-eyed" and "find-person"

Sept 26 - 30 HTDP Chapter 19
HTDP Chapter 20
More on hierarchies
Exam 2, Tuesday, Sept 27
Intoduction to higher-order functions
Lab 5, Wed 9/28

Homework 6 (due: Tuesday, Oct 4)
Lecture 18 objectives
Lecture 19 - Exam 2
Lecture 20 objectives
Lecture 21 objectives

Problems from Monday's lecture
Problems from Thursday's lecture(Download and run in DrRacket)
Problems from Friday's lecture(Download and run in DrRacket)

Oct 3 - 7 HTDP Chapter 31
HTDP Chapter 34
HTDP Chapter 35
HTDP Chapter 36
HTDP Chapter 37.1
Accumulating data
Introduction to set!
Program design with set!
Changing struct contents
Homework 7 (due: Tuesday, Oct 11)
Lab 6, Wed 10/5

Lecture 22 objectives
Lecture 23 objectives
Lecture 24 objectives
Lecture 25 objectives
Notes from Monday's lecture on accumulator-style programming
Notes from Tuesday's lecture on set!(DrRacket file)
Code for Vending machine (DrRacket file)
Sample Exam 3 [pdf]
Notes from Friday's lecture (set-structure!)
Oct 10 - 13 HTDP Chapter 40.3
HTDP Chapter 40.5
More on set-structure!
Counting cycles
Wrap-up, course evaluations
Exam 3, Thursday, Oct 13
Lab 7, Wed 10/12 Lecture 26 objectives
Lecture 27 objectives
Lecture 28 - Exam 3
Fun with set-structure!
Code from Monday's lecture (DrRacket file)
Code from Lecture 27


[WPI] [CS]