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.
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.
Instructor: Glynis Hamel (GH)
Teaching Assistants: Choong-Soo Lee (CL), Shweta Srivastava (ShS)
Senior Assistants: Christopher Kevorkian (CK), Samuel Song (SaS), Jennifer Spinney (JS)
MASH Tutor: Eric Walston. Here is Eric's schedule.
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.
|D01||1 - 1:50pm||SL 123||SaS, JS|
|D02||2 - 2:50pm||SL 123||SaS, CK|
|D03||3 - 3:50pm||SL 123||JS, CK|
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) Bloch, Joshua, Effective Java, Addison-Wesley, 2008. Quoting Gilad Bracha, a reviewer for the first edition of this book, it is "crammed with good advice on using the Java programming language and object-oriented programming in general."
(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'll use the Java programming language to illustrate the object-oriented concepts we discuss in this course, and the Eclipse programming environment is the environment we'll use in the lab. Both Java and the Eclipse Java IDE (Integrated Development Environment) are free and available for download. Instructions on how to obtain the correct versions of this software will be made available during the first lab meeting.
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. 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 2010).
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.
Do not send me email 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 will not be considered an acceptable excuse for an extension.
Note: the instructor reserves the right to change the order of topics
or the dates of the exams, if necessary.
|Mar 15 - 19||Chapters 1 - 6
Lecture 1 objectives
Lecture 2 objectives
Lecture 3 objectives
Lecture 4 objectives
Code from Lectures 3-4 (.zip file)
Java data definitions; unions
Self-referential data: lists
Lab 1, Wed 3/17
Requesting HW partners, (due: Monday, 3/22 at 5pm)
Homework 1 (due: Mar 23)
|Mar 22 - 26||Chapters 8 - 16
Lecture 5 objectives
Lecture 6 objectives
Lecture 7 objectives
Lecture 8 objectives
Code from Lecture 6 (.zip file)
The difficulties in overriding equals()
Code from Lecture 8 (.zip file)
Methods for unions of data
Methods for self-referential data
Lab 2, Wed 3/24
Homework 2 (due: Friday, 3/26)
Homework 3 (due: Tuesday, 3/30)
|Mar 29 - Apr 2||Chapters 18 - 22
Lecture 9 objectives
Lecture 10 objectives
Lecture 11 objectives
Lecture 12 objectives
Code for Lecture 9 (.zip file)
Code for Lecture 10 - constructors
Code for Lecture 10 - Star example
Instructions on first page of exam
Public/private access modifiers
Inheritance (derived classes)
Programming with mutation
More about access modifiers
Lab 3, Wed 3/31
Homework 4 (due: Friday, April 9)
|April 5 - 9||Chapters 23 - 28
Lecture 13 objectives
Lecture 14 - Exam date
Lecture 15 objectives
Lecture 16 objectives
Code for Lecture 15 (.zip)
Link to Java API Specification
Code for Lecture 16 (.zip)
Exam 1 April 6
Using the Object class to abstract over the datatype
Abstracting over behavior - functions as objects
Lab 4, Wed 4/7
Homework 5 (due: Tuesday, April 13)
|Apr 12 - 16||Chapters 30 - 34
Lecture 17 objectives
Lecture 18 objectives
Lecture 19 objectives
Lecture 20 objectives
Code for Lecture 18 (Creating a Library)
Abstracting over traversals - Part 1
Abstracting over the datatype, Part 2: Generics
Binary search trees
Abstracting over traversals - Part 2
Lab 5 Wed, 4/14
Homework 6 (due: Tuesday, April 20)
|Apr 19 - 23||
Chapters 36 - 37
Lecture 21 objectives
Lecture 22 objectives
From accumulators to loops
Java Collections Framework
|Homework 7 (due: Friday, April 30)|
|Apr 26 - 30||Chapter 38
Lecture 23 objectives
Lecture 24 objectives
Lecture 25 objectives
Lecture 26 objectives
Stacks and Queues
Big-O and sorting
Algorithms and complexity
Lab 6 Wed, 4/28
|May 3 - 4||
Lecture 27 objectives
Lecture 28 - Exam date
Exam 2 May 4