What this course is about
CS 2102 is an intermediate-level course on program design. CS 1101/1102 focused
on designing for correct program behavior. In CS 2102, we begin to consider
other design goals - such as efficiency, maintainability, and scalability -
without sacrificing correct program behavior. The course examines interactions
between data structures, algorithms, invariants, and object-oriented code
structure in the pursuit of good program design.
All programming in the course is in Java, but the course does not assume prior
Java experience. While the course covers certain issues specific to Java
and object-oriented programming, the general principles apply broadly to
most programming languages.
CS2102 is not an introductory programming course! The course assumes programming background at the depth of CS1101 (or CS1102). Students who have not had CS1101 or CS1102 should consult with the instructor before attempting the course; you will be responsible for teaching yourself the terminology of those courses at the start of the term.
Additional information about the course
is available in the
WPI undergraduate catalog course description for CS 2102.
Staff
Instructor: Glynis Hamel (GH)
Teaching Assistants: Yingmei Qi (YQ), Russell Toris (RT)
Senior Assistants: Brian Gaffey (BG), Wesley Ripley (WR)
MASH Leader: Nicole Seese (Tues 10-11, 1-2; Fri 1-2 in Academic Resource Center in Daniels Hall)
Office Hour Schedule
Day/Time |
10:00 |
11:00 |
12:00 |
1:00 |
2:00 |
3:00 |
4:00 |
5:00 |
6:00 |
Monday |
|
WR |
(class) |
GH |
RT (2:30... |
RT ...3:30) |
|
BG |
BG |
Tuesday |
GH |
YQ |
(class) |
WR |
|
|
|
|
|
Wednesday |
RT |
RT |
|
|
|
|
|
|
|
Thursday |
YQ |
YQ |
(class) |
WR |
RT (2:30... |
RT ...3:30) |
|
BG |
BG |
Friday |
YQ |
|
(class) |
WR |
GH |
|
|
|
|
TA/SA office hours are in FL A22. Glynis Hamel's office hours are in
FL 132.
Additional office hours with Glynis Hamel are available by appointment on Thursdays.
Announcements, Class Discussion Board and Email
WPI is in the process of piloting the latest version of Blackboard, the
software that powers myWPI. CS 2102 is participating in the pilot, and the
course site can be accessed at http://blackboard.wpi.edu. All students enrolled in the
course have access to the Blackboard site.
A discussion board for CS 2102 has been set up on
Blackboard. You should visit the discussion board and check the Announcements
on a daily basis.
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.
Lecture and Lab Times
Lectures meet MTRF at 12 noon in OH 107.
Labs meet on Wednesdays according to the following schedule:
Section | Time | Location | Lab Assistants |
D01 | 1 - 1:50pm | SL 123 | Brian, Wesley
|
D02 | 2 - 2:50pm | SL 123 | Brian, Wesley
|
D03 | 3 - 3:50pm | SL 123 | Brian, Wesley
|
Textbook and Software
Textbook There is no required textbook for this course. Professor
Kathi Fisler has written a set of companion notes to the lectures that will be
available as reference/reading material for this course. If you are intending to continue programming in Java beyond this course (e.g., CS, IMGD Technical, or RBE majors), we recommend
Effective Java by Joshua Bloch as an additional text. The syllabus references sections of this book for additional perspective; you will not be tested on material that appears solely in this book though.
Software: You may use either DrJava or Eclipse for this course. Eclipse has a much higher learning curve, but is used in upper-level CS courses (such as Software Engineering) and software-based jobs. If you are not going on to upper-level CS courses or if you prefer a gentler introduction to Java, we recommend DrJava. You are welcome to start in DrJava then switch to Eclipse mid-term. Lectures will use DrJava for demonstrations.
The DrJava documentation includes a useful QuickStart guide. Chapter 3 is enough to get you started once you have the software installed.
Separate instructions explain how to use the testing library with either programming environment.
Grading
Exams (20% each, total 40%)
Two exams will be given. Exams are tentatively scheduled for April 3
and April 30. You must have a passing average on
the exams in order to pass the course. (A passing average on the exams
is usually around 60%. We may lower this threshold if the exam averages
are low; the threshold will not be raised).
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 2012).
Quizzes (20%)
Six quizzes will be given (one each week, on Friday, except for the weeks when an exam
is scheduled). Quizzes will consist of one or two (or three) questions focused on a
topic from that week's lectures. Your lowest quiz grade will be dropped.
There are no makeups for quizzes.
Homework (30%)
Six homework assignments will be given.
Homework assignments will be done in pairs. Homework assignments will be due on Tuesday
evenings at 5pm. No extra credit or makeup assignments will be given.
All homework will be electronically submitted and
will be due at 5pm on the due date. No extra
credit or makeup assignments will be given.
Labs (5%)
Labs will be given during conference
sections on Wednesdays.
To get credit for a lab you must attend at your scheduled time,
actively work on the assignment during the lab period, and use
web-based turnin to turn in your work at the end of the lab
period. Each lab
will be graded as either credit (1) or no credit (0).
You will
not get credit for a lab unless you attend the section for which you
are registered. Your lowest lab grade will be dropped. There are no makeups for labs.
In-class Exercises (5%)
Once or twice a week 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 assignment will be graded as either credit (1) or no credit (0).
The lowest 20% of the in-class exercises will be dropped (for example,
if 10 in-class exercises are given throughout the term, the two lowest
grades will be dropped).
There are no makeups for
in-class exercises.
Note that
each student is allowed to miss a number of labs/quizzes/in-class exercises with no questions asked. Do not send email to the instructor or to the
TAs requesting makeup or extra-credit work.
Academic Honesty Policy
Please read WPI's Academic
Honesty Policy.
Labs and In-class group work
Collaboration is encouraged for labs and in-class group work.
Exams and Quizzes
Exams and quizzes are to be done individually.
Homework
All homework assignments will be done with a partner. You may discuss problems across
homework pairs, but each pair is responsible for writing up their own solution
from scratch.
As examples, each of the following scenarios would constitute
cheating (this list is not exhaustive!):
- Two different homework pairs share a solution to a
single question on a homework assignment.
- Students from different homework pairs sit side-by-side while
writing up their solutions and one student copies down what the other
student types up.
- You send the code for a completed homework question to a friend
in another homework pair "just so he can look at it to figure out how
to do the problem".
- You obtain a solution to a homework problem (or a problem similar
to a homework problem) from on-line or from someone who took the
course in a previous term.
In contrast, the following scenarios would not constitute
cheating:
- Students from two different homework pairs discuss a
pair-assignment (its goal, what it is asking you to do, what the
challenging parts are, or how to approach the problem).
- You ask any member of the course staff (professor, TAs, or SAs)
for help in understanding or completing an individual assignment.
- Students from the same homework pair share code to a solution.
- Students from one homework pair show their code to a student from
a different pair and ask for help in understanding why their code is
wrong. (This would become cheating if the non-pair student provided
or dictated a reasonable amount of the solution to the original pair).
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 Policy
Late homework will be accepted within 24 hours of the due date. Each student will be allowed one late submission without penalty. Beyond that, late homework will incur a 25 per cent penalty. Any homework turned in after the 24-hour grace period will receive a grade of zero. No extra credit or makeup homework assignments will be given.
Do not send email to the instructor or to the TAs 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.
Homework Submission Policy
Read Expectations on Preparing Homework.
Homework must be submitted using the web-based
turnin program.
Homework
submitted by any other means (paper, email, etc.) will receive a grade
of zero.
Students with Disabilities
Students with disabilities who believe that they may need
accomodations in this class are encouraged to contact the Disability
Services Office (DSO) as soon as possible to ensure that such
accomodations are implemented in a timely fashion. The DSO is
located in Daniels Hall.
Schedule
Note: the instructor reserves the right to change the order of topics
or the dates of the exams, if necessary.
Week |
Notes and Readings |
Topics |
Assignments
|
Mar 12 - 16 |
Lecture 1 objectives
Lecture 2 objectives
Lecture 3 objectives
Lecture 4 objectives
Code from Lecture 3
Notes for lectures 1 - 3
Notes
for lecture 4
|
Migrating to Java
Interfaces
Trees
Abstract classes
|
Homework 0 (requesting a HW partner) (due: Tuesday, March 13 at 5pm)
Homework 1 (due: Tuesday, March 20 at 5pm)
Lab 1, Wed 3/14
|
Mar 19 - 23 |
Lecture 5 objectives
Lecture 6 objectives
Lecture 7 objectives
Lecture 8 objectives
An example to motivate the use of Interfaces over Abstract Classes
BST code from Thursday's lecture
Notes
for lecture 5
More notes
for lecture 5
Notes
for lectures 6-7
More notes
for lectures 6-7
Notes
for lecture 8
|
Abstract Data Types (ADTs)
Implementations of an interface for Sets
Binary Search Trees
AVL Trees
Heaps
Program Design under Invariants
|
Lab 2, Wed 3/21
Homework 2 (due: Tuesday, March 27)
|
Mar 26 - 30
|
Lecture 9 objectives
Lecture 10
objectives
Lecture 11
objectives
Lecture 12
objectives
Code from Tuesday's class (a tree of Objects)
Code from Friday's class (bounded generic parameters)
Recap: lectures 1 - 9
Notes for lecture 10
Notes
for Lecture 11
Java API
|
Abstract methods
Lists
Abstracting over data using the Object class
Abstracting over data using generics
Abstracting over behavior
|
Lab 3, Wed 3/28
Homework 3 (due: Tuesday, April 3)
|
Apr 2 - 6 |
Lecture 13 - review
Lecture 14 - Exam date
Lecture 15
objectives
Lecture 16
objectives
Notes for lectures 15-16
|
Catch up/exam review
Exam 1 April 3
Method abstraction over class hierarchies
More about visitors
|
Lab 4, Wed 4/4
Homework 4 (due: Tuesday, April 10)
|
Apr 9 - 13 |
Lecture 17 objectives
Lecture 18
objectives
Lecture 19 objectives
Lecture 20 objectives
Fibonacci code from Lecture 17
Notes for lecture 17
How to Write an Equality Method in Java
Notes for Lecture 18
Notes for lecture 19
Notes for lecture 20
|
Memoization
Hash Tables
equals() and hashCode()
LinkedLists and for-loops
Encapsulation
Exceptions
|
Lab 5 Wed, 4/11
Homework 5(due: Tuesday, April 17)
|
Apr 16 - 20
|
Lecture 21 objectives
Lecture 22 objectives
Notes for Lecture 21
Notes for Lecture 22
|
Introduction to Graphs
Terminating Programs on Graphs
|
Lab 6 Wed, 4/18
Homework 6
(due: Thursday, April 26)
|
Apr 23 - 27 |
Lecture 23 objectives
Lecture 24 objectives
Lecture
25 objectives
Lecture 26 objectives
Notes for Lecture 23
Notes for Lecture 24
Notes for Lecture 26
More notes for Lecture 26
Comparison of looping structures in Java (pdf)
|
Graphs: Returning routes
Graphs: Encapsulating Routes
ArrayList, Stacks and Queues
Memory and Mutation
|
No lab this week
|
Apr 30 - May 1
|
Lecture 27 - Exam date
Lecture 28 objectives
Notes:
What have we learned?
|
Exam 2 April 30
Perspective and Wrap Up
|
|
http://www.cs.wpi.edu/~cs2102/d11/index.html