![]()

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: Jeff Moffett (JM), Suvesh Pratapa (SP), Di Wang (DW), Karen Works (KW)
Senior Assistants: Andrew Keating (AK), Joe Politz (JP), Galia Traub (GT), Manasi Vartak (MV)
| 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 | KW | AK | GH | MV | ||||||||
| Tuesday | KW | SP | GH | JP | JP | JP | SP | SP | ||||
| Wednesday | DW | DW | ||||||||||
| Thursday | JM | JM | JM | AK | MV | MV | GT | GT | ||||
| Friday | DW | AK | KW | GH | GH | GT |
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 | KH 202 | JP, JM |
| B02 | 12-12:50pm | KH 202 | JP, GT |
| B03 | 1:00-1:50pm | KH 202 | MV, AK |
| B04 | 2:00-2:50pm | KH 202 | AK, GT |
| B05 | 3:00-3:50pm | KH 202 | AK, JP |
| B06 | 4:00-4:50pm | KH 202 | AK, MV |
| B07 | 11:00-11:50am | KH 202 | JP, GT |
| B08 | 3:00-3:50pm | SL 123 | GT, MV |
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 Absolute Java by Walter Savitch. Savitch has a clear and concise writing style, and his books include lots of example code.
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).
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 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 (D-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.
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 28 - 31 | Chapters 1 - 6
Intermezzo 1 Lecture 1 objectives Lecture 2 objectives Lecture 3 objectives |
Review - accumulator-style functions
Java data definitions; unions Self-referential data: lists |
Lab 1, Wed 10/29
Homework 0: choosing HW partners, (due: Friday, 10/31 at 5pm) Homework 1 (due: Sunday, 11/2) |
| Nov 3 - 7 | Chapters 8 - 16
Intermezzo 2 Lecture 4 objectives Lecture 5 objectives Lecture 6 objectives Lecture 7 objectives |
Methods
Methods for unions of data Methods for self-referential data Abstract classes |
Lab 2, Wed 11/5
Homework 2 (due: Tuesday, 11/4) Homework 3 (due: Friday, November 7) |
| Nov 10 - 14 | Chapters 18 - 22
Lecture 8 objectives Lecture 9 objectives Star/BurnedStar class Star class with Posn extended as CartPt Lecture 10 objectives Lecture 11 objectives Code for sort() |
Testing for equality
Subclasses Overloading constructors Sorting |
Lab 3, Wed 11/12
Homework 4 (due: Friday, Nov 14) |
| Nov 17 - 21 | Chapters 23 - 28
Lecture 12 objectives Lecture 13 objectives Documentation for the Tester library (Eclipse) Lecture 14 - Exam date Lecture 15 objectives |
Static methods
Exceptions Public/private modifiers Mutation Exam 1 November 20 Mutating structures Wrapper classes |
Lab 4, Wed 11/19
Homework 5 (due: 11/25) |
| Nov 24 - 25 | Chapters 30 - 34
Lecture 16 objectives Lecture 17 objectives |
Abstracting over the datatype
Abstracting over behavior |
Happy Thanksgiving! |
| Dec 1 - 5 |
Chapters 36 - 37
Lecture 18 objectives Lecture 19 objectives Lecture 20 objectives Lecture 21 objectives |
Abstracting over traversals - Part 1
Generics Abstracting over traversals - Part II Arraylist |
Lab 5 Wed, Dec 3 Homework 6 (due: Tuesday, 12/9) |
| Dec 8 - 12 | Chapter 38
Lecture 22 objectives Lecture 23 objectives Lecture 24 objectives Lecture 25 objectives Book class (used to demonstrate JUnit testing) How to create JUnit tests from Eclipse |
From accumulators to loops
Selection sort Java collections Framework Iterators Stacks and Queues |
Lab 6 Wed, Dec 10 Homework 7 (due: Tuesday, 12/16) |
| Dec 15 - 18 |
Lecture 26 objectives
Lecture 27 objectives Lecture 28 - Exam date |
Hashmap Exam 2 December 18 |

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