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.
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 | CL | (class) | CL | GH | JS | JS | JS | |||||
Tuesday | (class) | GH | SaS | SaS | SaS | CK | ||||||
Wednesday | CK | |||||||||||
Thursday | GH | (class) | ShS | ShS | CK | |||||||
Friday | ShS | (class) | GH | CL |
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 | 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).
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.
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.
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 15 - 19 | Chapters 1 - 6
Intermezzo 1 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 Methods |
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
Intermezzo 2 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 Sorting Abstract classes "sameness" |
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 Sample Exam1 Instructions on first page of exam |
Public/private access modifiers
Overloading Constructors Inheritance (derived classes) Programming with mutation Wrapper classes 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) |
Javadoc
Exam review Exam 1 April 6 Using the Object class to abstract over the datatype Casts 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 Arraylist |
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 Iterators |
Homework 7 (due: Friday, April 30) |
Apr 26 - 30 | Chapter 38
Lecture 23 objectives Lecture 24 objectives Lecture 25 objectives Lecture 26 objectives Sample Exam2 |
Stacks and Queues Big-O and sorting Algorithms and complexity Hashing, hashtables Hashmap |
Lab 6 Wed, 4/28 |
May 3 - 4 |
Lecture 27 objectives Lecture 28 - Exam date |
JUnit testing
Exam review Exam 2 May 4 |
http://www.cs.wpi.edu/~cs2102/d10/index.html