CS 1101 C Term 2012
Introduction to Program Design
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.
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:
- Understand when to use and write programs over structures, lists, and trees
- Develop data models for programming problems
- Write recursive and mutually recursive programs
- Explain when state is needed in value-oriented programming
- Develop test procedures for simple programs
Why Racket?
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 (which is based on the programming language Scheme,
which is based on the programming language Lisp, which has its roots in
lambda calculus)
is particularly well-suited for teaching
beginning programmers the essential concepts of program design.
It is a simple language that takes much less time to learn than
languages like C++ and Java, giving you more time to master
basic program design concepts. Languages come and go, but the methodology
and organizational techniques
we'll learn in this course will be helpful to you as problem-solving tools
even if you never write another computer program.
Staff
Instructor: Glynis Hamel (GH)
Teaching Assistants: Yingmei Qi (YQ), Hao Wan (HW), Chiying Wang (CW),
Yutao Wang (YW)
Senior Assistants: Taylor Andrews (TA), Eric Finn (EF), Jon Kelly (JK), Eric Walston (EW)
Office Hour Schedule
(Note: SA office hours will be held in FL A22. Glynis
Hamel's office hours are held in FL 132.)
Day/Time |
9:00 |
10:00 |
11:00 |
12:00 |
1:00 |
2:00 |
3:00 |
4:00 |
5:00 |
6:00 |
7:00 |
Monday |
|
(class) |
GH |
YQ |
EW |
YW |
CW |
EW |
EW |
HW |
|
Tuesday |
|
(class) |
TA |
JK |
GH |
JK |
EF |
EF |
|
|
|
Wednesday |
|
|
TA |
TA |
|
|
|
HW |
HW |
|
|
Thursday |
|
(class) |
EF |
YW |
YW |
|
|
|
|
JK |
|
Friday |
|
(class) |
|
YQ |
YQ |
GH |
CW |
CW |
|
|
|
Glynis Hamel is available for additional office hours on Thursday by appointment.
CS 1101 MASH Tutor
Nicole Seese is the MASH tutor for CS 1101 this term. Nicole's tutoring
schedule is Monday 12-1 and 4-5, and Tuesday 11-12, in the Academic Resource Center in Daniels Hall.
Class Discussion Board and Email
WPI is in the process of piloting the latest version of Blackboard, the software
that powers myWPI. CS 1101 is participating in the pilot, and the course
site can be accessed at http://blackboard.wpi.edu
A
Discussion Board for CS 1101 has been set up on myWPI, and will be the primary
means of electronic communication for the course. You will be expected to know all information
posted on the myWPI site - check the Announcements and Discussion Board
on a daily basis.
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.
Lecture and Lab Times
Lectures meet MTRF from 10:00-10:50am in SL 115.
Labs meet on Wednesdays according to the following schedule:
Section | Time | Location | Lab Assistants |
C01 | 1 - 1:50pm | SL 123 | TA, EW
|
C02 | 12 - 12:50pm | SL 123 | JK, EW
|
C03 | 11 - 11:50am | SL 123 | JK, EF
|
C04 | 2 - 2:50pm | SL 123 | TA, EF
|
C05 | 9-9:50am | SL 123 | EW, TA
|
C06 | 10-10:50am | SL 123 | JK, TA
|
C07 | 3 - 3:50pm | SL 123 | JK, EF
|
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'll be writing programs using the programming language called Racket. You should download the most recent version of Racket (as of this writing, the most recent version
is 5.2) to your computer. The software is free and supports the usual OS's (Unix, PC, Mac).
The Racket software (DrRacket) is installed on CCC Unix and all CCC lab machines
Grading
Exams (60%)
Three exams will be given. Exams are tentatively scheduled for January 27 January 30,
February 14, and March 1.
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 (A-term '12).
Homework (30%)
Six homework assignments will be given. 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.
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 assignments
Collaboration is encouraged for labs and in-class assignments.
Exams
Collaboration is prohibited on exams.
Homework
Homework assignments will be done in pairs.
Collaboration is encouraged
within a homework pair. 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!):
- Two different homework pairs share a solution to a
single question on a homework assignment.
- Students from different homework pairs sit side-by-side while
writing up their solutions and one student copies down what the other
student types up.
- You send the code for a completed homework question to a friend
in another homework pair "just so he can look at it to figure out how
to do the problem".
- You obtain a solution to a homework problem (or a problem similar
to a homework problem) from on-line or from someone who took the
course in a previous term.
In contrast, the following scenarios would not constitute
cheating:
- Students from two different homework pairs discuss a
pair-assignment (its goal, what it is asking you to do, what the
challenging parts are, or how to approach the problem).
- You ask any member of the course staff (professor, TAs, or SAs)
for help in understanding or completing an individual assignment.
- Students from the same homework pair share code to a solution.
- Students from one homework pair show their code to a student from
a different pair and ask for help in understanding why their code is
wrong. (This would become cheating if the non-pair student provided
or dictated a reasonable amount of the solution to the original pair).
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 pair will be allowed one late submission without penalty. Beyond that, late homework will incur a 25 per cent penalty. Any homework turned in after the 24-hour grace period will receive a grade of zero.
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 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
|
Jan 12 - 13 |
HTDP Chapter 1
HTDP Chapter 2
|
Intro to Programming and Racket
Expressions, Images, and Functions
|
Homework 0 - Choose a HW Partner (due: Friday, Jan 13)
Homework 1
(due: Tuesday, Jan 24)
|
Lecture 1 objectives
Lecture 2 objectives
Using Images
Creating Functions (operators)
|
Jan 16 - 20 |
HTDP Chapter 3
HTDP Chapter 4
HTDP Chapter 5
HTDP Chapter 6
|
January 16 - No School (MLK Day)
Function Composition
Conditionals
Symbols and strings
Structures
|
Lab 1, Wed Jan 18
|
Lecture 3 objectives
Lecture 4 objectives
Lecture 5 objectives
Symbols and Strings
Study Guide on Functions
Creating helpers (printed-pen-cost code)
|
Jan 23 - 27
|
HTDP Chapter 7
HTDP Chapter 9
|
Nested structs
Unions
The Design Recipe
Introduction to Lists
|
Lab 2,Wed Jan 25
Homework 2 (due: Tuesday, January 31)
|
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 Structs
Data Definitions and Templates for Structs and Unions[pdf]
Design Recipe Worksheet[pdf]
Exam preparation Guidelines
Answers to Sample Exam 1 (NOT!!!)
Sample Exam 1 [pdf]
Data Definition and Template for Lists[pdf]
When to Think While Programming
contains-milk? code from Friday's class
|
Jan 30 - Feb 3 |
HTDP Chapter 10.1
HTDP Chapter 10.2
|
Exam 1, Monday, January 30
Producing lists
Lists of structs
|
Lab 3,
Wed Feb 1
Homework 3 (due: Tuesday, February 7)
|
Lecture 10 - Exam date
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 (CD inventories)
|
Feb 6 - 10 |
HTDP Chapter 14.1
HTDP Chapter 15.1
HTDP Chapter 15.2
|
Fixed-width ("ancestor") trees
Variable-width ("descendant") trees
|
Lab 4,
Wed Feb 8
Homework 4 (due:
Tuesday, Feb 14)
|
Lecture 14
objectives
Lecture 15
objectives
Lecture 16
objectives
Lecture 17 objectives
Notes and additional problems from Lecture 14
Exam preparation Guidelines
Why aren't answers provided for the Sample Exam?
Sample Exam 2 [pdf]
Tree Data
Definitions - Ancestor (fixed-width) trees (.pdf)
Tuesday's lecture notes - fixed-width and variable-width trees
Solutions to Thursday's lecture problems
Solutions to Friday's lecture problems
|
Feb 13 - 17
|
HTDP Chapter 34
HTDP Chapter 35
HTDP Chapter 36
HTDP Chapter 37.1
|
Sorting lists
Exam 2, Tuesday, Feb 14
Feb 16 - No Class (Academic Advising Day)
Higher-order functions; filter
|
Lab 5,
Wed Feb 15
Homework 5 (due:
Tuesday, Feb 21)
|
Lecture 18
objectives
Lecture 19 - Exam 2
Lecture 20 objectives
Friday's exercises using filter
|
Feb 20 - 24 |
HTDP Chapter 40.3
HTDP Chapter 40.5
HTDP Chapter 41
HTDP Chapter 31
|
Higher-order functions; map
Accumulating data
Program design with set!
|
Lab 6,
Wed Feb 22
Homework 6
(due:
Tuesday, Feb 28)
|
Lecture 21 objectives
Lecture 22 objectives
Lecture 23 objectives
Lecture 24 objectives
Solutions to Monday's problems (map/filter)
Solutions to Tuesday's problems (accumulator-style functions)
Thursday's lecture problems on set!
Friday's lecture problems on set!
Code for Vending machine (we'll finish this on Monday)
|
Feb 27 - Mar 2
|
HTDP Chapter 21.1, 21.2
|
Changing struct contents
More on mutation with structures
Programming with cyclic data
Wrap-up, course evaluations
Exam 3, Thursday, Mar 1
|
|
Lecture 25
objectives
Lecture 26 objectives
Lecture 27 - Exam 3
Lecture 28 objectives
Exam preparation Guidelines
Why aren't answers provided for the Sample Exam?
Sample Exam 3 [pdf]
Programming with set-structure! (Monday's notes)
Code from Friday's lecture (writing programs for data with cycles)
|
http://www.cs.wpi.edu/~cs1101/c12/index.html