Introduction to Program Design
Objectives | Staff&Contact Information | Where&When | Textbook/Software/Videos | Grading | Policies and Expectations | Schedule&Assignments | Design Recipes | FAQs
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:
Instructor: Glynis Hamel
Lab Supervisor: Hao Loi
Teaching Assistant: Kennedy Tran
Student Assistants: Ebenezer Ampiah, Josh Desmond, Trang Ha, Jacob Henry, Brian Keeley-Debonis, Huyen Nguyen, Andrew Rottier, Harry Sadoyan, William Temple, Yang Xu, Ziyan Ding
(Note: TA/SA office hours will be held in FL A22. Glynis Hamel's office hours are held in FL 132.)
Day/Time | 10:00 | 11:00 | 12:00 | 1:00 | 2:00 | 3:00 | 4:00 | 5:00 | 6:00 | 7:00 | 8:00 | 9:00 |
Sunday | Will | |||||||||||
Monday | Jacob, Trang | Huyen | Kennedy | Glynis | Brian | Harry | Josh (7:30... | ...8:30) | ||||
Tuesday | Ziyan | Yang | Andrew | Andrew | Huyen | Glynis | Will | Ebenezer | ||||
Wednesday | Brian | Kennedy | Ziyan | Josh | ||||||||
Thursday | Jacob | Trang | Ebenezer | |||||||||
Friday | Glynis | Harry | Yang |
The MASH tutor for CS 1101 is Bailey Sheridan. Refer to the MASH tutoring schedule for A-term for times/locations. The Academic Resource Center also provides one-on-one tutors for CS 1101. Here are instructions for scheduling a tutoring appointment.
A discussion board forum for CS 1101 has been set up on InstructAssist. You are responsible for all announcements and information posted on the InstructAssist site. A separate page explains how to configure notifications from InstructAssist.
As a general rule, use the InstructAssist forum to ask questions rather than sending email to individual staff. The forum lets you mark each message as public (visible to other students in the class) or private (visible only to the course staff), so it is no less private than staff-wide email. Unlike email, however, the forum lets us track messages and our progress towards handling them.
If you send a message to an individual staff member that should have gone to the forum, we will ask you to use the forum instead. We aren't being rude. We are simply trying to handle the large volume of email that we get in a large course. The less time we spend managing email, the more time we can spend actually helping you!
The forum has different categories for your messages. When you create a message, tag it with the most appropriate category (which will direct it to the right person on our end).
If you have a question that really should go only to the instructor, you may email Glynis at ghamel@cs.wpi.edu. We expect that most questions will be sent via the InstructAssist forum.
Section | Time | Location | Lab Assistants |
AX01 | Wed 8 - 8:50am | SL 123 | Hao Loi, Huyen Nguyen |
AX02 | Wed 9 - 9:50am | SL 123 | Hao Loi, Ziyan Ding |
AX03 | Wed 10 - 10:50am | SL 123 | Hao Loi, Ebenezer Ampiah |
AX04 | Wed 11 - 11:50am | SL 123 | Hao Loi, Trang Ha |
AX05 | Wed 10 -10:50am | FL A21 | Andrew Rottier, Jacob Henry |
AX06 | Wed 1 - 1:50pm | SL 123 | Hao Loi, Will Temple |
AX07 | Wed 2 - 2:50pm | SL 123 | Hao Loi, Huyen Nguyen |
AX08 | Wed 3 - 3:50pm | SL 123 | Hao Loi, Trang Ha |
AX09 | Wed 2 - 2:50pm | FL A21 | Kennedy Tran, Yang Xu |
AX10 | Wed 12 - 12:50pm | SL 123 | Brian Keeley-Debonis, Ziyan Ding |
AX11 | Wed 4 - 4:50pm | SL 123 | Hao Loi, Jacob Henry |
AX12 | Tues 3 - 3:50pm | SL 123 | Harry Sadoyan, Josh Desmond |
Textbook, Software, Videos, and Clickers
Textbook: Many students do well in CS 1101 without consulting a
textbook. All the material you will be responsible for learning will
be covered in the videos and in the classroom activities. However, if you would
like to delve more deeply into the topics covered in the course, or if you'd
like additional problems or exercises to work on, we recommend
How to Design Programs by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi (MIT Press). The book is available online (free)
as well as in hard copy.
Software: We will use DrRacket (the latest version is 6.6), 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).
InstructAssist will be used for all course communications and for homework/lab submissions.
Videos: Most of the course lecture material will consist of online lecture videos, available through Youtube. To get started, visit the Systematic Program Design channel on Youtube. Choose Playlists. You'll see that each playlist is numbered; we'll start with the videos in the 01a- BSL playlist (see the Schedule below for the daily video assignment).
Clickers: Clickers will be used for daily quizzes. Each student will be provided with a clicker to use throughout the term. Instructions on how to register your clicker will be provided the first week of class. You'll be using Canvas to register your clicker; this is the only time you'll need to use Canvas for this course. All other course information and communication will be done through InstructAssist.
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. 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 17).
Academic Honesty Policy
Please read WPI's Academic
Honesty Policy.
For the remaining homework assignments, you are strongly encouraged to work 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. If you work on an assignment as an individual, you alone are responsible for writing up your 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 14, Academic Honesty Policy of the WPI Code of Conduct.
Do not send email to the instructor or to the TAs/SAs 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.
Students are expected to treat each other and the course staff with respect. By the same token, you have the right to expect to be treated respectfully by the course staff. If you have any concerns with the course staff, please bring them to the instructor. If your concern is with the instructor, please bring it to the Computer Science department head, Prof. Wills.
Schedule & Assignments
Note: the instructor reserves the right to change the order of topics
or the dates of the exams, if necessary.
Week | Supplementary Reading (from "How to Design Programs") | Video Viewing Homework (on this Youtube channel)
Video assignments are listed by the number and name of the playlist, the number and title of the video in the playlist, and the approximate viewing time. For example, the first video can be found as video 1 in the 01a BSL playlist. The title of the video is "Introduction". The video is 5 minutes and 32 seconds long.
|
Assignments | Extras
|
Aug 25 - 26 |
1 Arithmetic
2 Functions and Programs |
("BSL" = Beginning Student Language)
View before Aug 26: 01a BSL - 1 - Introduction (5:32) 01a BSL - 3 - Expressions (8:29) 01a BSL - 4 - Evaluation (6:55) 01a BSL - 5 - Strings and Images (11:29) 01a BSL - 6 - Constant Definitions (6:15) ******************************************************* View before Aug 29: 01a BSL - 8 - Function Definitions (11:01) 01a BSL - 9 - Booleans and if Expressions (14:01) 01a BSL - 10 - Using the Stepper (5:36) 01a BSL - 11 - Discovering Primitives (5:25) |
Homework 0 (90 points) (due: Wednesday, Aug 31) |
Class 1 objectives Class 2 objectives Using Images |
Aug 29 - Sept 2 | 3 How to Design Programs (sections 3.1 - 3.5) |
("HtDF" = How to Design Functions)
View before Aug 30: 01b HtDF - 1 - Full Speed HtDF Recipe (8:46) 01b HtDF - 2 - Slow Motion HtDF Recipe (11:21) 01b HtDF - 3 - Examples - yell! (3:30) 01b HtDF - 4 - Examples - area (5:02) 01b HtDF - 5 - Examples - image-area (5:59) 01b HtDF - 6 - Examples - tall (11:17) *********************************************************** ("HtDD" = How to Design Data) View before 02 HtDD - 1 - cond Expressions (11:12) 02 HtDD - 2 - Data Definitions (8:00) 02 HtDD - 3 - Atomic Non-Distinct Data Definitions (8:04) 02 HtDD - 4 - HtDF with Non-Primitive Data (7:49) ************************************************************ View before 03b Compound Data - 1 - define-struct (5:27) 03b Compound Data - 2 - Compound Data Definitions (6:18) ************************************************************************ View before Sept 6: 04a Self-Reference - 1- Introduction to Arbitrary Sized Data (1:22) 04a Self-Reference - 2 - List Mechanisms (8:40) 04a Self-Reference - 3 - List Data Definition (11:32) 04a Self-Reference - 4 - Function Operating on List (7:36) |
Lab 1, Tues/Wed, Aug 30/31
Homework 1 (115 points) (due: Wednesday, Sept 7) |
Class 3 objectives Class 4 objectives Class 5 objectives Class 6 objectives
|
Sept 6 - 9 |
5 Adding structure(sections 5.1 - 5.4)
9 Lists |
View before Sept 8: 04a Self-Reference - 5 - Revising the Recipes for Lists (12:14) ************************************************************************ View before Sept 9: 04a Self-Reference - 6 - Designing with Lists (13:04) 04a Self-Reference - 7 - Positions in List Templates (7:15) |
Lab 2, Tues/Wed, Sept 6/7 Homework 2 (105 points)(due: Tuesday, Sept 13) |
Monday, September 5 - Labor Day Holiday Class 7 objectives Class 8 objectives Class 9 objectives
|
Sept 12 - 16 |
10 Designing With Self-Referential Data Definitions
11 More on Lists |
View before Sept 13: 04b Reference - 1 - The Reference Rule Part 1 (10:41) ************************************************************************ View before Sept 15: 05b More Helpers - 1 - Introduction (1:00) 05b More Helpers - 2 - Function Composition (13:44) 05b More Helpers - 3 - Laying out a List of Images (4:05) ************************************************************************ View before Sept 16: 05b More Helpers - 4 - Operating on a List (10:55) 05b More Helpers - 5 - Domain Knowledge Shift (14:48) ************************************************************************ View before Sept 19: 05b More Helpers - 6 - Wrap Up (7:19) 06a BSTs - 1- List Abbreviations (5:45) |
Lab 3,
Tues/Wed, Sept 13/14
Homework 3 (185 points)(due: Tuesday, Sept 20) |
Exam 1, Monday, Sept 12
Class 11 objectives Class 12 objectives Class 13 objectives
|
Sept 19 - 23 | HTDP Chapter 14.1 HTDP Chapter 15.1 HTDP Chapter 15.2 |
View before Sept 20: 06a BSTs - 2 - List of Account (2:44) 06a BSTs - 3 -Binary Search Trees (7:56) 06a BSTs - 4 -BST Data Definition (11:49) 06a BSTs - 5 -Lookup in BST (14:53) ************************************************************************ View before Sept 22: 06b Mutual-Ref - 1 -Mutually Referential Data (9:13) 06b Mutual-Ref - 2 - Templating with Mutual Reference (4:50) ************************************************************************ View before Sept 23: 06b Mutual-Ref - 3 - Functions on Mutually Referential Data - Part 1 (12:42) ************************************************************************ View before Sept 26: 06b Mutual-Ref - 4 - Functions on Mutually Referential Data - Part 2 (12:01) 06b Mutual-Ref - 5 - Backtracking Search (19:05) |
Lab 4,
Tues/Wed, Sept 20/21
Homework 4 (90 points) (due: Tuesday, Sept 27) |
Class 14
objectives
Class 15 objectives Class 16 objectives Class 17 objectives
|
Sept 26 - 30 |
HTDP Chapter 19
HTDP Chapter 20 |
View before Sept 29: 07b Local - 1 - Introduction (0:43) 07b Local - 2 - Forming and Intuition (4:56) 08 Abstraction - 1 - Introduction (1:10) 08 Abstraction - 2 - From Examples 1 (11:16) ************************************************************************ View before Sept 30: 08 Abstraction - 3 - From Examples 2 (10:39) 08 Abstraction - 4 - From Examples 3 (17:26) ************************************************************************ View before Oct 3: 08 Abstraction - 5 - Using Built-In Abstract Functions (19:15) 08 Abstraction - 6 - Closures (12:20) |
Lab 5,
Tues/Wed, Sept 27/28
Homework 5 (135 points) (due: Tuesday, Oct 4) |
Class 18
objectives
Exam 2, Tuesday, Sept 27 Class 20 objectives Class 21 objectives
|
Oct 3 - 7 |
HTDP Chapter 31
HTDP Chapter 34 HTDP Chapter 35 HTDP Chapter 36 HTDP Chapter 37.1 |
View before Oct 4:
10 Accumulators - 1 - Context Preserving Accumulators Part 1 (6:30) 10 Accumulators - 2 - Context Preserving Accumulators Part 2 (9:58) 10 Accumulators - 3 - Practice Problem - skipn Part 1 (1:44) 10 Accumulators - 4 - Practice Problem - skipn Part 2 (9:33) ************************************************************************ View before Oct 6: 10 Accumulators - 5 - Tail Recursion Part 1 (8:32) 10 Accumulators - 6 - Tail Recursion Part 2 (9:48) ************************************************************************ View before Oct 7: Extra Videos - 3 - Mutable Variables (12:00) |
Homework 6 (120 points)
(due:
Tuesday, Oct 11)
Lab 6, Tues/Wed, Oct 4/5 |
Class 22 objectives Class 23 objectives Class 24 objectives Class 25 objectives
|
Oct 10 - 13 |
HTDP Chapter 40.3 HTDP Chapter 40.5 |
(no videos for this week's topics)
More on set-structure! Counting cycles Wrap-up, course evaluations |
No lab this week |
Class 26 objectives
Class 27 objectives Exam 3, Thursday, Oct 13 |
Why isn't CS 1101 taught using C/C++/Java/Python...? 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. Racket 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 easily.
CS 1102 is an accelerated version of CS 1101, and is intended for CS majors who come into the course with substantial programming experience. More information about the two courses is available on the CS 1101/CS 1102 FAQ sheet.
WPI recommends that you should spend about 12 hours per week outside of class on each course that you take. For CS 1101, each week you should:
The videos are available via a channel on Youtube. Once you connect to Youtube, click on Playlists to find a complete list of the modules available for the Systematic Program Design course. In the Schedule (above), each video is referred to by its number and title in a particular Playlist.
The videos were originally produced as part of an online course for Coursera, and are now available through EdX. Professor Kiczales has made the lectures available via Youtube so that anyone can watch the lectures without having to register for the EdX course offering. The problems, handouts, and other materials are all still available through EdX, though, and it doesn't cost any money to register. If you would like to access all the materials associated with the online offering of the course, you may enroll in "Systematic Program Design - Part 1" on the EdX website.
Handouts similar to those available through EdX can be found in the Design Recipes and Other Handouts section, above.
You can request that the HTML5 video player be used if your browser doesn't automatically support it already. With HTML5, the settings knob at the bottom of the Youtube screen will allow you to run the videos at different speeds.
A grade sheet will be filled out for every graded homework assignment. The grader will upload a copy of the grade sheet to the InstructAssist accounts of both homework partners. You can access the grade sheet for a particular assignment by choosing the "Grades" tab in InstructAssist, and "Display Grades". There's an "Attachment" for each Homework assignment listed in the Grade Report. Click on the attachment to see your feedback.
There is a staff of 12 people grading CS 1101 homework assignments. The graders will be uploading your feedback as soon as they can, but expect that the feedback will be available at different times from different graders. We'll try to guarantee that the feedback for any given assignment will be posted within a week of the due date.
Post a question on the Grading Error forum of InstructAssist.
The TA office hour room is FL A22, in the sub-basement of Fuller Labs. The sub-basement is the bottom-most level of Fuller. Follow the signs to the "Zoo Lab", which is next door to the office hour room.
http://www.cs.wpi.edu/~cs1101/a16/index.html