![]()

Objectives | Staff&Contact Information | Where&When | Textbook | Grading | Policies | Schedule&Assignments
What this course is about
In CS 2102 we'll study class-based program design and the
design of abstractions that support the design of reusable software and
libraries. The course covers the principles of object oriented program design
and examines the relationship between algorithms and data structures.
This course assumes the student has had prior program design experience such as
can be found in CS 1101 or CS 1102. Additional information about the course
is available in the
WPI undergraduate catalog course description for CS 2102.
Instructor: Glynis Hamel (GH)
Teaching Assistants: Choong-Soo Lee (CL), Di Wang (DW)
Senior Assistants: Jessica Doherty (JD), Galia Traub (GT)
| 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 |
| Monday | lecture | GH | GT | JD | JD | JD | ||||||
| Tuesday | GH | lecture | CL | CL | CL | |||||||
| Wednesday | DW | DW | DW | |||||||||
| Thursday | lecture | GT | GT | |||||||||
| Friday | lecture | GH | GH |
TA/SA office hours are in FL A22. Glynis Hamel's office hours are in FL 132.
If you have a question regarding your grades in the course, please send email to cs2102-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.
| Section | Time | Location | Lab Assistants |
| D01 | 1-1:50pm | SL 123 | JD, GT |
| D02 | 2-2:50pm | SL 123 | JD, GT |
| D03 | 3-3:50pm | SL 123 | JD, GT |
Textbook, Software, and Authors' Website
Textbook (required): Felleisen, Matthias, et. al., How to Design Classes,
Draft: May 20, 2008. Shrink-wrapped copies of the notes for this text are available for purchase
at the WPI Bookstore.
(recommended) There are many textbooks that cover introductory programming in Java. At some point you probably will want to have such a textbook in your library to use as a reference book. I recommend Big Java by Cay Horstmann. Out of the "intro to Java programming" kinds of books, this is the one that most closely follows the order in which we'll cover the material.
Software: We will be using two programming environments in this course. For the first few weeks we'll work with ProfessorJ, a language available under the DrScheme programming environment. DrScheme is installed on CCC Unix and all CCC lab machines. You can also download DrScheme to your own computer; it's free and supports the usual OS's (Unix, PC, Mac).
Later we'll migrate to the Java IDE available from Eclipse. Both the Java programming language and the Eclipse Java IDE are free and available for download. Instructions on how to obtain the correct versions of this software will be made available during the fourth week of the course.
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, 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 (B-term 09).
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.
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 assignments will not be accepted without prior consent of the instructor. 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.
Schedule
Note: the instructor reserves the right to change the order of topics
or the dates of the exams, if necessary.
| Week | Reading | Topics | Assignments
|
| Mar 16 - 20 | Chapters 1 - 6
Intermezzo 1 Lecture 1 objectives Lecture 2 objectives Lecture 3 objectives Lecture 4 objectives Code from Lecture 2 Code from Lecture 4 |
Java data definitions; unions
Self-referential data: lists Methods |
Lab 1, Wed 3/18
Homework 0: choosing HW partners, (due: Friday, 3/20 at 5pm) Homework 1 (due: Friday, 3/20)) |
| Mar 23 - 27 | Chapters 8 - 16
Intermezzo 2 Lecture 5 objectives Lecture 6 objectives Lecture 7 objectives Lecture 8 objectives Code from Lecture 6 Code from Lecture 7 Code from Lecture 8 |
Methods for unions of data
Methods for self-referential data Abstract classes "sameness" |
Lab 2, Wed 3/25
Homework 2 (due: Tuesday, 3/24) Homework 3 (due: Friday, 3/27) Homework 4, part 1("due": Tuesday, 3/31) |
| Mar 30 - Apr 3 | Chapters 18 - 22
Lecture 9 objectives Lecture 10 objectives Lecture 11 objectives Lecture 12 objectives Code for Lecture 9 Code for Lecture 10 Code for Lecture 10 - Star example Sample Exam1 Code for Lecture 11 |
Public/private access modifiers
Getters/setters Overloading Constructors Derived classes Sorting Wrappers |
Homework 4, (part 2) (due: Tuesday, April 7)
Lab 3, Wed 4/1 |
| Apr 6 -- 10 | Chapters 23 - 28
Lecture 13 objectives Lecture 14 - Exam date Lecture 15 objectives Lecture 16 objectives Code for Lecture 13 (Wrapper code) Code for Lecture 16 (List of Objects) |
Javadoc
Exam 1 April 7 Exceptions Abstracting over the datatype |
Homework 5 (due: Tuesday, April 14)
Lab 4, Wed 4/8 |
| Apr 13 - 17 | Chapters 30 - 34
Lecture 17 objectives Lecture 18 objectives Lecture 19 objectives Lecture 20 objectives |
Abstracting over behavior
Abstracting over traversals Abstracting over the datatype, Part 2: Generics Abstracting over traversals: Part 2 |
Lab 5 Wed, 4/15
Homework 6 (due: Friday, April 24) |
| Apr 20 - 24 |
Chapters 36 - 37
Lecture 21 objectives Lecture 22 objectives |
Monday, no class: Patriot's Day
Arraylist Thursday, no class: Project Presentation day From accumulators to loops |
Lab 6 Wed, 4/22 Homework 7 (due: Friday, May 1) |
| Apr 27 - May 1 | Chapter 38
Lecture 23 objectives Lecture 24 objectives Lecture 25 objectives Lecture 26 objectives Sample Exam2 Using JUnit from Eclipse JUnit Documentation |
Selection sort
Java collections Framework Iterators Stacks and Queues Big-O and sorting Algorithms and complexity |
|
| May 4 - 5 |
Answers to Sample Exam 2
Lecture 27 objectives Lecture 28 - Exam date |
Hashing
Exam 2 May 5 |

http://www.cs.wpi.edu/~cs2102/d09/index.html