Objectives | Staff&Contact Information | Where&When | Textbook/Software/Videos | Grading | Policies | 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: Christina Aiello
Senior Assistants: Ankit Kumar, Charles Lovering, Nick McMahon, Thomas Meehan, Hoang Minh Ngo, Huyen Bui Thanh Nguyen, Alexandre Pauwels, Axe Soota, William Temple, Yang Xu
(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 |
Sunday | Hoang | Huyen | ||||||
Monday | Ankit | Thomas | Glynis | Charles | ||||
Tuesday | Yang | Yang | Thomas | Nick/Hoang | Nick/Christina | Ankit | ||
Wednesday | Huyen | Ankit/Charles | Charles/William | Axe | Axe | Nick | Alex | |
Thursday | Alex | Glynis | Thomas | Christina | ||||
Friday | Yang | William |
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, TA, and SAs. 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 questions of general interest to the class discussion board.
Section | Time | Location | Lab Assistants |
A01 | 8 - 8:50am | SL 123 | Hao Loi, Huyen |
A02 | 9 - 9:50am | SL 123 | Hao Loi, Charles |
A03 | 10 - 10:50am | SL 123 | Hao Loi, Alex |
A04 | 11 - 11:50am | SL 123 | Hao Loi, Axe |
A05 | 12 -12:50pm | SL 123 | Hao Loi, Axe |
A06 | 1 - 1:50pm | SL 123 | Hao Loi, Yang |
A07 | 2 - 2:50pm | SL 123 | Hao Loi, Hoang |
A08 | 3 - 3:50pm | SL 123 | Hao Loi, Christina |
A09 | 2 - 2:50pm | FL A21 | William, Thomas |
A10 | 10 - 10:50am | FL A21 | Huyen, Nick |
A11 | 4 - 4:50pm | SL 123 | Hao Loi |
A12 | Tues 3 - 3:50pm | SL 123 | Christina, William |
Textbook, Software, and Videos
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 class lectures. 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.2.1), 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).
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).
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 16).
Academic Honesty Policy
Please read WPI's Academic
Honesty Policy.
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 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.
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 27 - 28 |
1 Arithmetic
2 Functions and Programs |
("BSL" = Beginning Student Language)
View before Aug 28: 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 31: 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 1 (90 points) (due: Thursday, Sept 3) |
Class 1 objectives Class 2 objectives Using Images |
Aug 31 - Sept 4 | 3 How to Design Programs (sections 3.1 - 3.5) |
("HtDF" = How to Design Functions)
View before Sept 1: 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 Sept 3: 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 Sept 4: 03b Compound Data - 1 - define-struct (5:27) 03b Compound Data - 2 - Compound Data Definitions (6:18) |
Lab 1, Wed 9/2
Homework 2 (120 points) (due: Thursday, Sept 10) |
Class 3 objectives Class 4 objectives Class 5 objectives Class 6 objectives
|
Sept 8 - 11 |
5 Adding structure(sections 5.1 - 5.4)
9 Lists |
View before Sept 10: 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) ************************************************************************ View before Sept 11: 04a Self-Reference - 5 - Revising the Recipes for Lists (12:14) ************************************************************************ View before Sept 14: 04a Self-Reference - 6 - Designing with Lists (13:04) 04a Self-Reference - 7 - Positions in List Templates (7:15) |
A brief intro to event-driven programming (read before you try Lab 2) Lab 2,Wed 9/9 Homework 3 (175 points)(due: Thursday, Sept 17) |
Monday, September 7 - Labor Day Holiday Class 7 objectives Class 8 objectives Class 9 objectives
|
Sept 14 - 18 |
10 Designing With Self-Referential Data Definitions
11 More on Lists |
View before Sept 15: 04b Reference - 1 - The Reference Rule Part 1 (10:41) ************************************************************************ View before Sept 17: 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 18: 05b More Helpers - 4 - Operating on a List (10:55) 05b More Helpers - 5 - Domain Knowledge Shift (14:48) ************************************************************************ View before Sept 21: 05b More Helpers - 6 - Wrap Up (7:19) 06a BSTs - 1- List Abbreviations (5:45) |
Lab 3,
Wed 9/16
Homework 4 (155 points)(due: Thursday, Sept 24) |
Exam 1, Monday, Sept 14
Class 11 objectives Class 12 objectives Class 13 objectives
|
Sept 21 - 25 | HTDP Chapter 14.1 HTDP Chapter 15.1 HTDP Chapter 15.2 |
View before Sept 22: 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 24: 06b Mutual-Ref - 1 -Mutually Referential Data (9:13) 06b Mutual-Ref - 2 - Templating with Mutual Reference (4:50) ************************************************************************ View before Sept 25: 06b Mutual-Ref - 3 - Functions on Mutually Referential Data - Part 1 (12:42) ************************************************************************ View before Sept 28: 06b Mutual-Ref - 4 - Functions on Mutually Referential Data - Part 2 (12:01) 06b Mutual-Ref - 5 - Backtracking Search (19:05) |
Lab 4,
Wed 9/23
Homework 5 (160 points) (due: Thursday, Oct 1) |
Class 14
objectives
Class 15 objectives Class 16 objectives Class 17 objectives
|
Sept 28 - Oct 2 |
HTDP Chapter 19
HTDP Chapter 20 |
View before Oct 1: 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 Oct 2: 08 Abstraction - 3 - From Examples 2 (10:39) 08 Abstraction - 4 - From Examples 3 (17:26) ************************************************************************ View before Oct 5: 08 Abstraction - 5 - Using Built-In Abstract Functions (19:15) 08 Abstraction - 6 - Closures (12:20) |
Lab 5,
Wed 9/30
Homework 6 (170 points) (due: Thursday, Oct 8) |
Class 18
objectives
Exam 2, Tuesday, Sept 29 Class 20 objectives Class 21 objectives |
Oct 5 - 9 |
HTDP Chapter 31
HTDP Chapter 34 HTDP Chapter 35 HTDP Chapter 36 HTDP Chapter 37.1 |
View before Oct 6:
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 8: 10 Accumulators - 5 - Tail Recursion Part 1 (8:32) 10 Accumulators - 6 - Tail Recursion Part 2 (9:48) ************************************************************************ View before Oct 9: Extra Videos - 3 - Mutable Variables (12:00) |
Homework 7 (90 points)
(due:
Tuesday, Oct 13)
Lab 6, Wed 10/7 |
Class 22 objectives Class 23 objectives Class 24 objectives Class 25 objectives
|
Oct 13 - 16 |
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 |
Lab 7, Wed 10/14 |
Class 26 objectives
Class 27 objectives Exam 3, Thursday, Oct 15 |
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. 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 turnin accounts of both homework partners. You can access the grade sheet for a particular assignment by choosing the assignment in turnin, and clicking on the "Comments" submitted by the grader for the assignment.
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.
The feedback sheet for each homework assignment gives the name and email address of the assistant who graded your assignment. Contact that person first. Be prepared to explain why your assignment should be awarded additional credit. If you can't come to an agreement with the grader, contact TA Christina Aiello (cjaiello) next. If you can't come to an agreement with Christina, contact the instructor (ghamel).
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/a15/index.html