Objectives | Why Scheme? | 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.
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:
Why Scheme? 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. Scheme (a close cousin of the programming language Lisp) 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 Scheme 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 Scheme 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:
Paul Graham's site has number of other articles discussing advantages of using Lisp in programming projects.
Common LISP's role in planning parts of the pathfinder mission
Successful Scheme, an article from Unix Insider about Scheme and some of its real-world uses.
The Functional Programming in the Real World website, with pointers to a slew of real-world projects that use functional languages.
A Q&A on Scheme and Lisp
Some of the software for NASA's Deep Space 1 was written in LISP.
Schemers.org, the online home for all things Scheme.
Instructor: Glynis Hamel (GH)
Teaching Assistants: Guillaume Marceau (GM), Medhabi Ray (MR), Shweta Srivastava (ShS)
Senior Assistants: Samuel Song (SaS), Jennifer Spinney (JS), Manasi Vartak (MV)
(Note: TA/SA office hours will be held in FL A22, unless otherwise noted. Glynis Hamel's office hours are held in FL 132.)
If you have a question regarding your grades in the course, send email to cs1101-ta *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.
Labs meet on Wednesdays according to the following schedule:
Lecture and Lab Times
Lectures meet MTRF from 10:00-10:50am in SL 115.
Labs meet on Wednesdays according to the following schedule:
|C01||1 - 1:50pm||SL 123||MV, JS|
|C02||12 - 12:50pm||SL 123||MV, JS|
|C03||11 - 11:50am||SL 123||JS, SaS|
|C04||2 - 2:50pm||SL 123||JS, SaS|
|C05||9-9:50am||SL 123||JS, SaS|
|C06||10-10:50pm||SL 123||MV, SaS|
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 free online version or purchase a hard copy.
Software: We will use DrScheme, version 423 for all coding projects in the course. You must use DrScheme 423. 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).
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 (A-term '10).
Academic Honesty Policy
Please read WPI's Academic
Collaboration is encouraged within a homework pair on homework assignments 2 - 11. 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 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.
Do not send me email 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 will not be considered an acceptable excuse for an extension.
Schedule & Assignments
Note: the instructor reserves the right to change the order of topics
or the dates of the exams, if necessary.
|Jan 14 - 15||
HTDP Chapter 1
HTDP Chapter 2
Intro to Programming and Scheme
Expressions, Images, and Functions
Homework 1 (due: Wednesday, Jan 20)
Lecture 1 objectives
Lecture 2 objectives
|Jan 18 - 22|| HTDP Chapter 3
HTDP Chapter 4
HTDP Chapter 5
HTDP Chapter 6
January 18 - No School (MLK Day)
Symbols and strings
Lab 1, Wed Jan 20
Homework 2 (due: Tuesday, Jan 26)
Lecture 3 objectives
Lecture 4 objectives
Lecture 5 objectives
Symbols and Strings
Study Guide on Functions
Creating helpers (pen code)
|Jan 25 - 29|| HTDP Chapter 7
HTDP Chapter 9
Mixed data and the Design Recipe
Lab 2,Wed Jan 27
Homework 3 (due: Friday, Jan 29)
Homework 4 (due: Tuesday, Feb 2)
Lecture 6 objectives
Lecture 7 objectives
Lecture 8 objectives
Lecture 9 objectives
tiger data definition and function (notes from Monday's class)
Study Guide on Structures
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
contains-milk? code from Friday's class
|Feb 1 - 5||
HTDP Chapter 10.1
HTDP Chapter 10.2
Exam 1, Monday, Feb 1
Lists of Structs
Wed Feb 3
Homework 5 (due: Friday, Feb 5)
Homework 6 (due: Tuesday, Feb 9)
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 12
Answers to Lecture 13 class problems (.scm file)
|Feb 8 - 12|| HTDP Chapter 14.1
HTDP Chapter 15.1
HTDP Chapter 15.2
Wed Feb 10
Homework 7 (due: Friday, Feb 12)
Homework 8 (due: Tuesday, Feb 16)
Lecture 14 objectives
Lecture 15 objectives
Lecture 16 objectives
Lecture 17 objectives
Additional problems from Lecture 15
Exam preparation Guidelines
Sample Exam 2 [pdf]
Tree Data Definitions - Ancestor (fixed-width) trees (.pdf)
Solutions to Friday's lecture problems
|Feb 15 - 19||
HTDP Chapter 34
HTDP Chapter 35
HTDP Chapter 36
HTDP Chapter 37.1
More on hierarchies
Exam 2, Tuesday, Feb 16
Feb 18 - No School (Academic Advising Day)
Introduction to set!
Wed Feb 17
Homework 9 (due: Friday, Feb 19)
Homework 10 (due: Friday, Feb 26)
Lecture 19 - Exam 2
Lecture 20 objectives
Problems from Monday's lecture
Class notes - Friday's lecture
|Feb 22 - 26||
HTDP Chapter 40.3
HTDP Chapter 40.5
HTDP Chapter 41
HTDP Chapter 31
Program design with set!
Changing struct contents
More on set with structures
Lab 6, Wed Feb 24
Homework 11 (due: Tuesday, Mar 2)
Lecture 21 objectives
Lecture 22 objectives
Lecture 23 objectives
Lecture 24 objectives
Code for Vending machine
Notes from lecture 22
|Mar 1 - 5||
HTDP Chapter 21.1, 21.2
Intro to higher-order functions
Filter and map
Wrap-up, course evaluations
Exam 3, Friday, Mar 5
Lecture 25 objectives
Lecture 26 objectives
Lecture 27 objectives
Lecture 28 - Exam 3
Sample Exam 3 [pdf]
Filter exercises from Lecture 26 (save and open as a scheme file)
Code from Lecture 27