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
Pictures of the
CS 2102 staff members
Instructor: Glynis Hamel
Teaching Assistants: Chiying Wang (head TA), Junjie "Homer" Gu
Senior Assistants: Alex Chen, Ryan Danas, Eyleen Graedler, Alex Karp,
Nicholas Morin
MASH Leader: Tim DeFreitas
Office Hour Schedule
Day/Time |
10:00 |
11:00 |
12:00 |
1:00 |
2:00 |
3:00 |
4:00 |
5:00 |
6:00 |
7:00 |
Sunday |
|
|
|
Eyleen |
Eyleen |
Nick |
Nick |
|
|
|
Monday |
Chiying |
Alex K. |
(class) |
Homer |
Glynis |
Homer |
|
Tim (MASH) |
|
|
Tuesday |
Ryan |
|
(class) |
Tim (MASH) |
|
Alex C. |
|
|
|
|
Wednesday |
|
|
|
|
|
|
|
|
|
|
Thursday |
|
Eyleen |
(class) |
|
Chiying |
Alex C. |
|
|
|
Tim (MASH) |
Friday |
Glynis |
|
(class) |
Alex K. |
|
Ryan |
|
|
|
|
TA/SA office hours are in FL A22. MASH sessions are held in either the
Academic Resource Center (ARC) or Exam Proctoring Center (EPC) in Daniels Hall. The complete MASH schedule is available here. Glynis Hamel's office hours are in
FL 132.
Additional office hours with Glynis Hamel are available by appointment on Thursday afternoons.
Announcements, Class Discussion Board and Email
A discussion board for CS 2102 has been set up on myWPI.
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 | Alex K., Nick
|
D02 | 2 - 2:50pm | SL 123 | Alex C., Homer
|
D03 | 3 - 3:50pm | SL 123 | Alex C., Ryan
|
D04 | 12 - 12:50pm | SL 123 | Alex K., Nick
|
D05 | 4 - 4:50pm | SL 123 | Eyleen, Ryan
|
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 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 (Exam 1 20%, Exam 2 25%, total 45%)
Two exams will be given. Exams are tentatively scheduled for April 8
and May 6. 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 2014).
Quizzes (15%)
Five quizzes will be given (one each week, on Friday, except for
April 11 (same week as exam) and April 25 (short week)). Quizzes will consist of two or three questions focused on
topics from that week's lectures. Your lowest quiz grade will be dropped.
There are no makeups for quizzes.
Homework (30%)
Eight homework assignments will be given. The first four homework assignments
will be done individually.
The remaining homework assignments will be done
in pairs. Most homework assignments will be due on Tuesday
evenings at 5pm. No extra credit or makeup assignments will be given.
All homework (except Homework 1 and Homework 3) will be electronically submitted and
will be due at 5pm on the due date. No extra
credit or makeup assignments will be given.
Homework 1 and Homework 3 are written assignments that will be passed in at
the beginning of class on the due date. No late submissions will be allowed
for these homework assignments.
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.
Class Participation (5%)
This part of your grade will be based on your willingness to ask and answer questions in
class and/or your attendance at office hours, and your active participation in working on in-class problems.
Note that
each student is allowed to miss a number of labs/quizzes 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 work
Collaboration is encouraged for labs and in-class work.
Exams and Quizzes
Exams and quizzes are to be done individually.
Homework
Starting with Homework 5, you will be working with a homework partner.
You will have the
same partner throughout the term, and both partners will receive the
same grade on any given assignment. Here is more information about
working with
a homework partner.
In the following discussion of Academic Honesty as it pertains to homework
in CS 2102, sharing between members of a homework pair is encouraged. All
other kinds of sharing (between one homework pair and another homework
pair for Homeworks 5 - 8, or between two individuals for Homeworks 1, 2, 3, and 4)
are subject to the following rules:
You are encouraged to talk to others in a general way about homework
assignments (what approach to take, for example) but any work submitted
for grading must be solely that of the individual/pair who submits the
work. Some examples of situations that would be considered academically
dishonest are:
- Two or more (individuals/pairs) write the solution or part of the
solution to a homework assignment together
- All or part of a solution to a homework assignment is copied from
another (individual/pair), with or without that other individual's/pair's
consent
- Providing all or part of a solution to a homework assignment to
another (individual/pair)
- All or part of a solution to a homework assignment is copied from
a book, journal, or website
- You obtain a solution to a homework problem (or a problem similar
to a homework problem) 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 17 - 21 |
Lecture 1 objectives
Lecture 2 objectives
Lecture 3 objectives
Lecture 4 objectives
Notes for lectures 1 - 3 (Racket to Java)
Notes
for lecture 4 (Abstract classes)
pptx|
pdf
Starter code for Lecture 4
An example to motivate the use of Interfaces over Abstract Classes
Answer to
Tuesday's in-class assignment (likesSameFood)
Answer to
Thursday's in-class assignment on family trees
A set of solutions to Quiz 1
|
Migrating to Java
Interfaces
Trees
Abstract classes
|
Homework 1 (65 points) (due: Friday, March 21 at 12pm)
Grading rubric for Homework 1
Homework 2 (125 points) (due: Tuesday, March 25 at 5pm)
Lab 1 (new to Java), Wed 3/19
Lab 1 (know Java), Wed 3/19
|
Mar 24 - 28 |
Lecture 5 objectives
Lecture 6 objectives
Lecture 7 objectives
Lecture 8 objectives
Notes
for lecture 5 (Abstract Data Types)
Notes
for lecture 6 (Data Structures for Sets)
Notes
for lecture 7 (implementing BSTs)
More
notes
for lecture 7 (BSTs as ISets)
Recap: lectures 1 - 8
Extra: a gentle introduction to removing type questions
A set of solutions to Quiz 2
|
Abstract Data Types (ADTs)
Implementations of an interface for Sets
Binary Search Trees
AVL Trees
|
Lab 2, Wed 3/26
Homework 3 (50 points) (due: Thursday, March 27 at 12 noon)
Grading rubric for Homework 3
Homework 4 (100 points) (due: Tuesday, April 1 at 5pm)
|
Mar 31 - April 4
|
Lecture 9 objectives
Lecture 10
objectives
Lecture 11
objectives
Lecture 12
objectives
Notes
for lecture 9 (Linked Lists and for-each loops)
Notes for lecture 10 (Encapsulation)
Notes for
Lecture 11 (Heaps)
Notes
for Lecture 12 (Data Abstraction)
Java API
A set of solutions to Quiz 3
|
Linked Lists and foreach loops
Encapsulation
Heaps
Object class and Generics
|
Lab 3, Wed 4/2
Homework 5 (135 points)(due: Thursday, April 10)
|
Apr 7 - 11 |
Lecture 13 - review/catch up
Lecture 14 - Exam date
An exam from a previous term
Why aren't the answers to the Sample Exam published?
Lecture 15
objectives
Lecture 16
objectives
Notes for lecture 16 (Exceptions)
|
Catch up/exam review
Exam 1 April 8
Bounded generic parameters
Exceptions
|
Lab 4, Wed 4/9
Homework 6 (105 points) (due: Tuesday, April 15 Thursday, April 17)
|
Apr 14 - 18 |
Lecture 17 objectives
Lecture 18
objectives
Lecture 19 objectives
Lecture 20 objectives
Fibonacci code from Lecture 17
How to Write
an Equality Method in Java
Notes for lecture 17 (Hashtables and Java HashMaps)
Notes for Lecture 18 (Method Abstraction)
Notes
for lectures 19-20 (Visitors)
More notes for lectures 19-20 (Visitors)
Code for Visitor
over a tree of MenuItems
A set of solutions to Quiz 4
|
Memoization
Hash Tables
equals() and hashCode()
Method Abstraction
Visitors
|
Lab 5 Wed, 4/16
Homework 7 (105 points) (due:
Thursday, April 24)
|
Apr 21 - 25
|
Lecture 21 objectives
Lecture 22 objectives
Notes for Lecture 21 (Intro to Graphs)
Notes for Lecture 22
(Terminating programs on graphs)
|
Introduction to Graphs
Terminating Programs on Graphs
|
Lab 6 Wed, 4/23
Homework 8 (120 points)
(due: Friday, May 2)
|
Apr 28 - May 2 |
Lecture 23 objectives
Lecture 24 objectives
Lecture
25 objectives
Lecture 26 objectives
findRoute() code (testing with multiple valid answers)
Notes for Lecture 23 (Finding routes)
Notes for Lecture 24 (Encapsulating routes)
Notes for Lecture 26 (Mutation)
More notes for Lecture 26 (Mutation)
Sample Exam 2 (pdf file)
How to study for the final exam
Selection sort using for-loop
Selection sort using while-loop
A set of solutions to Quiz 5
|
Graphs: Returning routes
Graphs: Encapsulating Routes
ArrayList, Stacks and Queues
Memory and Mutation
|
No lab this week
|
May 5 - 6
|
Lecture 27 - review/catch up
Lecture 28 - Exam date
Notes:
What have we learned?
|
Perspective and Wrap Up
Exam 2 May 6
|
|
Frequently Asked Questions (FAQs)
- Where can I find feedback on my homework assignments?
A grade sheet will be filled out for every graded homework assignment.
The grader will upload a copy of the grade sheet to the turnin accounts
of both homework partners. You can access the grade sheet for a
particular assignment by choosing the assignment in turnin, and
clicking on the "Comments" submitted by the grader for the assignment.
- My classmate has received her homework feedback on turnin, but my feedback isn't posted. Why?
There is a staff of 7 people grading CS 1101
homework assignments. The graders will be uploading your feedback as soon
as they can, but expect that the feedback will be available at different times from different graders.
We'll try to guarantee that the feedback for any given assignment will be posted within a week of the
due date.
- What should I do if I think my assignment has been graded incorrectly?
The feedback sheet for each homework assignment gives the name and
email address of the assistant who graded your assignment. Contact
that person first.
- When will I get my graded quizzes back?
Graded quizzes will be
returned on Wednesdays during lab sections.
- Where are TA/SA office hours held?
The TA office hour room is FL A22, in the sub-basement of Fuller Labs.
The sub-basement is the bottom-most level of Fuller. Follow the signs
to the "Zoo Lab", which is next door to the office hour room.
http://www.cs.wpi.edu/~cs2102/d14/index.html