WPI Worcester Polytechnic Institute

Computer Science Department
------------------------------------------


CS 1101 A Term 2007
Introduction to Program Design

Objectives | 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.

Outcomes

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

Mapping of Course Outcomes to CS Department Outcomes


Staff

Instructor: Glynis Hamel (GH)

Teaching Assistants: Artur Janc (AJ), Choong-Soo Lee (CL), Juan Li (JL), Fan Wu (FW)

Senior Assistants: Bob Breznak (BB), Joe Politz (JP), Shikhar Saxena (SS), Niva Shrestha (NS)

Office Hour Schedule

(Note: TA/SA office hours will be held in the FL A22, unless otherwise noted. 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 9:00 10:00 11:00
Monday     JL GH CL CL              
Tuesday     GH NS NS JP   FW FW FW SS SS SS
Wednesday               BB (ADP lab)          
Thursday GH   JL CL   JP BB (ADP lab) BB (ADP lab)          
Friday     GH NS JL JP AJ AJ AJ        
Saturday                          
Sunday                 SS SS      

CS 1101 Tutors

There are also tutors for CS 1101 available at the Academic Resource Center. This term, Rui "Daniel" Dai is the tutor for CS 1101. Rui's tutoring schedule is Mon/Fri 10-11am, Tues 7-8pm, Wed 12-1pm, Thu 3-4pm.


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 for section A01 - A04 meet MTRF from 9:00-9:50am in Perreault Lecture Hall (FL AUD).

Lectures for section A05 - A08 meet MTRF from 10:00-10:50am in Perreault Lecture Hall (FL AUD).

Labs meet on Wednesdays according to the following schedule:

Section Time Location Lab Assistants
A01 8 - 8:50am AK 120d Fan, Joseph
A02 9 - 9:50am AK 120d Fan, Joseph
A03 10 - 10:50am AK 120d Artur, Niva
A04 11 - 11:50am AK 120d Artur, Niva
A05 12 - 12:50pm AK 120d Juan, Bob
A06 1 - 1:50pm AK 120d Juan, Bob
A07 2 - 2:50pm AK 120d Choong-Soo, Shikhar
A08 3 - 3:50pm AK 120d Choong-Soo, Shikhar


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, 2003. You may use the online version or purchase a hard copy.

Software: We will use DrScheme, version 371 for all coding projects in the course. You must use DrScheme 371. No other Scheme implementation or version provides the libraries that we will use in this course. DrScheme is installed on CCC Unix and all CCC lab machines (On CCC Unix, DrScheme is at /usr/local/bin/drscheme). You can also download it to your own computer; it's free and supports the usual OS's (Unix, PC, Mac).


Grading

Exams (60%)

Three exams will be given. Exams are tentatively scheduled for September 10, September 25, and October 11. 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 08).

Homework (30%)

Twelve homework assignments will be given. Most homework assignments will be due on Tuesday and Friday evenings at 11:59pm. No extra credit or makeup assignments will be given. Read Homework Expectations for details on how to prepare your homeworks.

Labs and In-class Group Work (10%)

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). You will not get credit for a lab unless you attend the section for which you are registered. There are no makeups for labs.

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 group assignment will be graded as either credit (1) or no credit (0). There are no makeups for group assignments.

The total of your best 10 lab grades/group assignment grades will be added to your final average to account for 10% of your final grade.


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.

Exams

Collaboration is prohibited on exams.

Homework

Collaboration is encouraged on homework assignments, according to the guidelines listed here. You may discuss problems across 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 constrast, 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 assignments will not be accepted without prior consent of the instructor (the TAs are not allowed to grant extensions). Extensions will be granted only in the event of unforseen and documentable emergencies, or extenuating circumstances that you discuss with the professor well in advance. One pair member forgetting to turn in an assignment will not be considered an acceptable excuse for an extension. No extra credit or makeup homework assignments will be given.

Homework Submission Policy

Homework must be submitted using the web-based turnin program. Homework submitted by any other means (paper, CD, 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 Disability Services Office (DSO) as soon as possible to ensure that such accomodations are implemented in a timely fashion. The DSO is located in Daniels Hall.


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 23-24 HTDP Chapter 1
HTDP Chapter 2
Intro to Programming and Scheme
Expressions, Images, and Functions
Homework 0 (due: Friday, Aug 24)
Homework 1 (due: Sunday, Aug 26)
Homework 2 (due: Tuesday, Aug 28)

Lecture 1 objectives
Lecture 2 objectives
Using Images
Creating Operators
Aug 27 - 31 HTDP Chapter 3
HTDP Chapter 4
HTDP Chapter 5
HTDP Chapter 6
Function Composition
Conditionals
Symbols and strings
Structures
Nested structs
Lab 1, Wed Aug 29
Homework 3 (due: Friday, Aug 31)
Homework 4 (due: Wednesday, Sept 5)

Lecture 3 objectives
Lecture 4 objectives
Lecture 5 objectives
Lecture 6 objectives
Symbols and Strings
Study Guide on Functions
Creating helpers (pen code)
Sept 4 - 7 HTDP Chapter 7
HTDP Chapter 9
Mixed data and the Design Recipe
Lists
Lab 2,Wed 9/5
Homework 5 (due: Saturday, Sept 8)
Homework 6 (due: Tuesday, Sept 11)

Lecture 7 objectives
Lecture 8 objectives
Lecture 9 objectives
Sample Exam 1 [pdf]
Study Guide on Structures
Data Definitions and Templates for Structs[pdf]
Design Recipe Worksheet[pdf]
Data Definition and Template for Lists[pdf]
When to Think While Programming
Exam preparation Guidelines
count-short-strings code from Friday's class
contains-milk? code from Friday's class
Sept 10 - 14 HTDP Chapter 10.1
HTDP Chapter 10.2
Exam 1, Monday, Sept 10
Producing lists
Sorting
Lists of Structs
Lab 3, Wed 9/12
Homework 7 (due: Friday, Sept 14)
Homework 8 (due: Tuesday, Sept 18)
Lecture 10 - Exam 1
Lecture 11 objectives
Lecture 12 objectives
Lecture 13 objectives
Data Definition and Template for List of Struct[pdf]
Solutions and additional problems from Lecture 13
Sept 17 - 21 HTDP Chapter 14.1
HTDP Chapter 15.1
HTDP Chapter 15.2
Trees
Hierarchies
Lab 4, Wed 9/19
Homework 9 (due: Friday, Sept 21)
Lecture 14 objectives
Lecture 15 objectives
Lecture 16 objectives
Lecture 17 objectives
Answers to Lecture 14 class problems (.scm file)
Solutions to Tuesday's in-class problems
Additional problems from Lecture 15
Exam preparation Guidelines
Sample Exam 2 [pdf]
Solution to Thursday's in-class problem
Tree Data Definitions (.pdf)
On filling in templates
Solutions to Friday's lecture problems
Sept 24 - 28 HTDP Chapter 34
HTDP Chapter 35
HTDP Chapter 36
HTDP Chapter 37.1
More on hierarchies
Exam 2, Tuesday, Sept 25
Introduction to set!
Program design with set!
Lab 5, Wed 9/26
Homework 10 (due: Friday, Sept 28)
Lecture 18 objectives
Lecture 19 - Exam 2
Lecture 20 objectives
Lecture 21 objectives
Class notes - Thursday's lecture
Code for Vending machine
Oct 1 - 5 HTDP Chapter 40.3
HTDP Chapter 40.5
HTDP Chapter 41
HTDP Chapter 31
Changing struct contents
More on set with structures
Counting cycles
Accumulating data
Homework 11 (due: Tuesday, Oct 2)
Homework 12 (due: Tuesday, Oct 9)
Lab 6, Wed 10/3

Lecture 22 objectives
Lecture 23 objectives
Lecture 24 objectives
Lecture 25 objectives
Code from Lecture 24
Oct 8 - 11
HTDP Chapter 11
Functions on natural numbers
Wrap-up, course evaluations
Exam 3, Thursday, Oct 11
Lab - Exam 3 help sessions (Oct 10) Lecture 26 objectives
Lecture 27 objectives
Lecture 28 - Exam 3
Sample Exam 3 [pdf]

------------------------------------------
http://www.cs.wpi.edu/~cs1101/a07/index.html


[WPI] [CS]