![]()

Objectives | Options | 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.
If you already know Java and are confused why this course does not look like a Java course you may have already seen, remember: this is not a course about Java.
The accelerated option is meant for students with very strong backgrounds in
program design, such as might be obtained by a grade of B or better in CS 1102.
In the accelerated option, the student will:
Here is more information about the accelerated
option.
Most students will take the standard option. In the standard option, the
student will complete all parts of the course as described in the the Grading
and Schedule sections, below; namely, student will be expected to
Two Ways to Experience this Course
We are offering two ways to get credit for CS 2102; for lack of better terms,
we'll call them the accelerated option and the standard option.
Instructor: Glynis Hamel (GH)
Accelerated-track Project Mentor Guillaume Marceau
Teaching Assistants: Theo Giannakaopoulos (TG), Chuan Lei (CL), Jeff Moffett (JM), Shweta Srivastava (ShS)
Senior Assistants: Christopher Kevorkian (CK), Thomas Liu (TL), Samuel Song (SaS), Christopher Trufan (CT)
| 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 | CT | JM | ShS | TG | TL | GH | GH | SaS | ||||
| Tuesday | CK | JM | GH | CT | ||||||||
| Wednesday | ShS | TL | JM | |||||||||
| Thursday | CT | TG | TG | ShS | CL | CK | SaS | SaS | ||||
| Friday | CK | GH | CL | CL | TL |
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 |
| B01 | 8 - 8:50am | GH 012 | CK, CT |
| B02 | 12-12:50pm | GH 012 | CK, CT |
| B03 | 1:00-1:50pm | GH 012 | SaS, TL |
| B04 | 2:00-2:50pm | GH 012 | SaS, TL |
| B05 | 3:00-3:50pm | GH 012 | JM, ShS |
| B06 | 4:00-4:50pm | GH 012 | SaS, TL |
| B07 | 11:00-11:50am | GH 012 | CK, CT |
| B08 | 3:00-3:50pm | SL 123 | CL, TG |
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 (On CCC Unix, DrScheme is at /usr/local/bin/drscheme). You can also download DrScheme to your own computer; it's free and supports the usual OS's (Unix, PC, Mac). Make sure you download version 4.2.1 of DrScheme.
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 third 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 reasons or documented emergencies. 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 (D-term 2010).
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.
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
|
| Oct 27 - 30 | Chapters 1 - 6
Intermezzo 1 Lecture 1 objectives Lecture 2 objectives Lecture 3 objectives Code from Lecture 1 Code from Lecture 2 |
Java data definitions; unions
Self-referential data: lists Methods |
Lab 1, Wed 10/28
Homework 0: choosing HW partners, (due: Friday, 10/30 at 5pm) Homework 1 (due: Sunday, 11/1) Homework 2 (due: Thursday, 11/5) |
| Nov 2 - 6 | Chapters 8 - 16
Intermezzo 2 Lecture 4 objectives Lecture 5 objectives Lecture 6 objectives Lecture 7 objectives Code from Lecture 4 Code from Lecture 6 Code from Lecture 7 |
Methods for unions of data
Methods for self-referential data Abstract classes |
Lab 2, Wed 11/4
Homework 3 (due: Tuesday, 11/10) |
| Nov 9 - 13 | Chapters 18 - 22
Lecture 8 objectives Lecture 9 objectives Lecture 10 objectives Lecture 11 objectives Code from Lecture 8 Code from Lecture 9 Code from Lecture 10 Code from Lecture 11 (Books) Code from Lecture 11 - Star example |
"sameness"
Sorting Public/private access modifiers Overloading Constructors Derived classes |
Lab 3, Wed 11/11
Homework 4 (due: Tuesday, Nov 17) |
| Nov 16 - 20 | Chapters 23 - 28
A Sample Midterm Exam Lecture 12 objectives Lecture 13 objectives Lecture 14 - Exam date Lecture 15 objectives |
Mutation
Wrappers Javadoc Exam 1 November 19 More about access modifiers |
Lab 4, Wed 11/18
Homework 5 (due: Tuesday, Nov 24) |
| Nov 23 - 24 | Chapters 30 - 34
Lecture 16 objectives Lecture 17 objectives Summary of Lecture 16 |
Abstracting over the datatype
Abstracting over behavior |
Happy Thanksgiving! |
| Nov 30 - Dec 4 |
Chapters 36 - 37
Lecture 18 objectives Lecture 19 objectives Lecture 20 objectives Lecture 21 objectives |
Abstracting over traversals - Part 1
Abstracting over the datatype, Part 2: Generics Abstracting over traversals - Part 2 Arraylist |
Lab 5 Wed, Dec 2 Homework 6 (due: Tuesday, 12/8) |
| Dec 7 - 11 | Chapter 38
Lecture 22 objectives Lecture 23 objectives Lecture 24 objectives Lecture 25 objectives Sample Exam2 |
From accumulators to loops
Selection sort Java collections Framework Iterators Stacks and Queues Big-O and sorting |
Lab 6 Wed, Dec 9 Homework 7 (due: Tuesday, 12/15) |
| Dec 14 - 17 |
Lecture 26 objectives
Lecture 27 objectives Lecture 28 - Exam date |
Hashing
JUnit testing Evaluations and Review for Final Exam Exam 2 December 17 |

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