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.
Instructor: Joshua Cuneo
Teaching Assistants: Zeqian Li
Senior Assistants: Vanshaj Chowdhary, Nathan
Drewniak, Quyen Hoang, Huyen Nguyen, Tanuj Sane
Office Hour Schedule
Day/Time |
9:00 |
10:00 |
11:00 |
12:00 |
1:00 |
2:00 |
3:00 |
4:00 |
5:00 |
6:00 |
7:00 |
8:00 |
Sunday |
|
|
|
|
|
|
|
|
|
|
|
|
Monday |
|
|
|
|
|
Joshua |
Joshua |
Van |
Huyen |
|
|
|
Tuesday |
Zeqian |
Tanuj |
Tanuj |
|
|
|
Van |
Van |
Huyen |
|
|
|
Wednesday |
|
|
|
|
|
|
|
|
|
|
|
|
Thursday |
Zeqian |
Zeqian |
Quyen** |
|
|
Joshua/Quyen** |
Joshua |
|
Huyen |
|
|
|
Friday |
|
|
|
|
|
Nathan |
Nathan |
|
|
|
|
|
Saturday |
|
|
|
|
|
|
|
|
|
|
|
|
TA/SA office hours are in FL A22. Joshua Cuneo's
office hours are in FL B33.
** Quyen's office hours are specifically to help students who are having problems trying to resubmit homework assignments that initially failed the auto-grader.
MASH:
CS 2102 has a MASH leader who is available to help. For more information about the MASH program, please check out the MASH website.
CS 2102 MASH Leader: Griffin Bishop
CS 2102 MASH Times:
Tuesdays at 10:00 AM
Thursdays at 8:00 PM
Fridays at 10:00 AM
Class Discussion Forum
A discussion board forum for CS 2102 has been set up on InstructAssist. You
are responsible for all announcements and information posted
on the InstructAssist site. A separate
page explains how to configure notifications from
InstructAssist.
As a general rule, use the InstructAssist
forum to ask questions rather than sending email to
individual staff. The forum lets you mark each message as
public (visible to other students in the class) or private
(visible only to the course staff), so it is no less private
than staff-wide email. Unlike email, however, the forum lets
us track messages and our progress towards handling them. This
is especially important in this class, where there are three
faculty members with different responsibilities. Sending your
questions through the forum helps us efficiently assign each
question to the correct staff member.
If you send a message to an individual staff member that
should have gone to the forum, we will ask you to use the
forum instead. We aren't being rude. We are simply trying to
handle the large volume of email that we get in a large
course. The less time we spend managing email, the more time
we can spend actually helping you!
The forum has different categories for your messages. When
you create a message, tag it with the most appropriate
category (which will help direct it to the right person on our
end).
If you have a question that really should go only to the
instructor, you may email Joshua at jmcuneo@cs.wpi.edu. We
expect that most questions will be sent via the InstructAssist
forum.
Lectures meet MTRF at 12 noon in OH
107.
Labs meet on Wednesdays (except where noted) according to the following
schedule:
Section |
Time |
Location |
Lab Assistants |
BX01 |
1 - 1:50pm |
SL 123 |
Zeqian & Tanuj |
BX02 |
2 - 2:50pm |
SL 123 |
Van & Zeqian |
BX03 |
3 - 3:50pm |
SL 123 |
Van & Huyen |
BX04 |
4 - 4:50pm |
SL 123 |
Huyen &Tanuj |
BX05 |
2 - 2:50pm (Tues) |
SL 123 |
Van |
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.
You should not need a Java language manual for this class.
If you want more language details about a particular
construct/concept than we cover in lecture, you could consult
the Learning the Java Language portion of the Java
tutorial pages. If you need documentation on a
particular Java class, look in the official
Java documentation.
Software: You should plan to use Eclipse for this course.
Setting
up Eclipse and JUnit
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 2018).
Quizzes (15%)
Five quizzes will be given at the start of class on these (tentative) dates:
- Monday, March 19
- Friday, March 23
- Friday, March 30
- Friday, April 13
- Tuesday, April 24
Quizzes will consist of two - four questions focused on topics
from that week's lectures. Your lowest quiz grade will be
dropped. There are no makeups for quizzes.
Homework (40%)
Six homework assignments will be given. In this course, students
are
strongly encouraged to work with a homework partner.
Homework assignments will be due on Tuesday evenings
at 5pm. No extra credit or makeup assignments will be given.
Read Homework
Expectations for details on how to prepare your homeworks.
No extra credit or makeup assignments will be given.
Labs (5%)
Labs will be given during conference sections on
Tuesdays/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
InstructAssist 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.
Note that each student is allowed to miss a number of
labs/quizzes with no questions asked, and to submit one
homework assignment late with no penalty. Do not send email
to the instructors or to the TAs requesting makeup or
extra-credit work, or extra time for homework.
Please read
WPI's Academic Honesty Policy.
Labs
Collaboration is encouraged for labs.
Exams and Quizzes
Collaboration is prohibited on exams and quizzes.
Homework
You are
strongly encouraged to work with a homework partner. You
may discuss problems in a general manner across homework pairs,
but each pair is responsible for writing up their own
solution from scratch. If you work on an assignment as an
individual, you alone are responsible for writing up your
own solution from scratch.
In this class, students may not look at any previous versions
of a course assignment or project, regardless of how it is
posted. If a student accidentally discovers such a posting,
they must report it to the instructor immediately, avoid the
resource in the future, and delete any copies that are cached
on their computer.
Students are likewise forbidden from facilitating other
students, current or future, in plagiarism or cheating.
Students may not distribute their code publicly on the
Internet, or in other means, during the term or even after the
class has concluded. Students may share their code with
potential employers or other individuals privately, so long as
the code would not become available to other WPI students.
As examples, each of the following scenarios would constitute
cheating (this list is not exhaustive!):
- Two different homework pairs/individuals 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 the Internet 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 one of
the instructors. 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 14, Academic Honesty
Policy of the
WPI Code of Conduct.
Late Policy
Late homework will be accepted within 24 hours of the due date.
Each homework-partner-group/individual will be allowed one late
submission without penalty. Beyond that, late homework will
incur a 25% penalty (i.e. 25% of the total possible points for
the assignment will be deducted). Any homework turned in after
the 24-hour grace period will receive a grade of zero. No
exceptions will be made to the late homework policy. No
extra credit or makeup homework assignments will be given.
Do not send email to the instructors or to the TAs/SAs
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 on time will not be considered an
acceptable excuse for an extension.
Homework Submission Policy
Read Expectations
on Preparing Homework. Homework must be submitted using InstructAssist. 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.
Classroom Expectations
During lectures, students should not use materials or electronic
devices that would hinder their ability to follow the classroom
discussion or to participate in classroom exercises, or that
would distract other students. You will periodically be asked to
use your smartphone/labtop/tablet in class to answer questions
using PollEverywhere. At all other times, phones should be
turned off and put away. Laptops may be used only for
note-taking purposes. Students are expected to work on in-class
exercises when they are assigned. If you finish an exercise
while others are still working, you're encouraged to find a
classmate with whom you can compare solutions, or to offer your
help to a classmate or group who are still working on the
problem.
Students are expected to treat each other and the course
staff with respect. By the same token, you have the right to
expect to be treated respectfully by the course staff. If you
have any concerns with the course staff, please bring them to
one of the instructors. If your concern is with an instructor,
please bring it to the Computer Science department head, Prof.
Wills.
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
|
March 12 - 16 |
Lecture
1 objectives
Lecture
2 objectives
Lecture
3 objectives
Notes: Migrating
to Java (sections 1-9)
Overview: Overview
of CS 2102 topics
Practice: Practice
with Classes
Practice: Practice
with Methods
Practice: Code
review Methods
Practice : Tracing
Code Simple Methods
Lecture Materials:
Day 2 Slides
Day 3 Slides
Example Code
|
Classes, Objects, Methods, Interfaces |
Homework
1 (due: Tuesday, March 20 at 5pm)
Lab
1 , Wednesday, March 14 |
March 19 - 23 |
Lecture
4 objectives
Lecture
5 objectives
Lecture
6 objectives
Lecture
7 objectives
Notes (M): Types
and Nested Objects Extra: How
to get started on problems Handout (M): Starter
file for Monday Notes (M/T): Abstract
Classes Notes (T):
Adding functionality to an existing class hierarchy: Interfaces
vs. Abstract Classes Practice (M): Programming
Interfaces Practice (T): Programming
Abstract Classes Notes (T): Updating
Objects Handout (Th):
Handout for Thursday's Think-Pair-Share Notes (Th): Lists
in Java Code (Th):
Racket-style lists (incomplete - you should fill in the
countUses() method) Code (F): Racket-style
lists (complete) Code (F): WordList
class Code (F): Lists
examples from lecture Lecture Materials:
Slides (M): AbstractClasses
Code (M): Example
Code
Slides (T): AbstractClasses
Code (T): Example
Code Slides (TH): Loops
& Lists Code(TH/F): Example Code
|
Interfaces, Abstract classes, Lists, and Variables |
Lab
2, Wednesday, March 21
Homework
2 (due: Tuesday, March 27 at 5pm) |
March 26 - 30 |
Lecture
8 objectives
Lecture
9 objectives
Lecture
10 objectives
Lecture
11 objectives
Notes (M): Equality
on Objects Notes (M/T): Starter
file for Design Exercise Notes (M/T): Design
Exercise Practice (M/T): Designing
Class Hierarchies Notes (Th/F): Planning
programs Exam Preparation: Midterm
Exam Preparation
Java API Lecture Materials: Slides
(M): Equals Code
(M): Example
Code Slides (T): Design
Tasks Code (T): Handout Notes
(T): UML
Diagram Slides (TH): Planning Code
(TH): Example
Code Notes (TH): Planning
Steps Slides (F): Example Planning
Problem Notes (F): Planning Example Step
2 | Planning Example Step 3
|
Equality, Design Review, Planning |
Lab
3, Wednesday, March 28
Homework
3(due Thursday, April 5 at 5pm) |
April 2 - 6 |
Lecture 12 - review/catch up
Lecture 13 - Exam date
Lecture
14 objectives
Lecture
15 objectives
Notes (Th): Binary
Search Trees
Notes (F): Heaps
Extra (W): Implementing
remElt on BSTs
Lecture Materials: Slides (M): Example Planning Problem Notes
(M): Instantiation
Example Slides (Th): Sets Notes
(Th): Example Planning
Problem Notes (Th): Sets Slides
(F): Heaps Notes (F): Big-O
of Heaps
|
Sets, Binary Search Trees, Heaps
Exam 1 April 3 |
Lab
4, Wednesday, April 4
Homework
4 (due: Wednesday, April 11) |
April 9 - 13 |
Lecture
16 objectives
Lecture
17 objectives
Lecture
18 objectives
Lecture
19 objectives
Notes (M): AVL
Trees (balanced BSTs) Notes (M):
AVL rotations Practice (M): Add
an element to an AVL tree Starter Code (T): Banking
starter Notes (T): Encapsulation
and Access Modifiers
Notes (Th): Encapsulation
and Access Modifiers
Code (Th):
Encapsulated Banking code, with a user interface
Notes (Th): Model-View-Controller
Architecture
Notes (F): Exceptions
Code: Encapsulation Code 2
Code: Encapsulation Code 3
Lecture Materials: Slides
(M): Heaps
and AVLs Code (T): Access
Modifiers Slides (Th): Encapsulation Code
(TH): Encapsulation Slides
(F): Exceptions Code (F): Exceptions
|
AVL Trees, Encapsulation, Access Modifiers |
Lab
5, Wednesday, April 11
Homework
5(due: Tuesday, April 17)
|
April 16 - 20 |
Lecture
20 objectives Lecture
21 objectives
Notes (T): Generics
(Abstract over Data) Notes (Th): Hashtables
Code (Th):
Fibonacci code Starter Code
(T): example1,
bst-starter
Notes (Th): Arrays
Lecture Materials: Slides
(T): Generics Slides
(TH): HashMap Code
(TH): HashMaps
|
Encapsulation (cont.), Exceptions, Generics, Hash
Tables |
Lab
6 Wednesday, April 18
Homework
6 (due: Tuesday, April 24) |
April 23 - 27 |
Lecture
22 objectives
Lecture
23 objectives
Lecture
24
objectives
Lecture
25 objectives
Notes (M): Arrays
(Code)(M): Fibonacci
code Code (M):
Stack operations Notes (T):
Intro
to Graphs Code (Th): Thursday
starter file Notes (Th): Avoiding
infinite loops Code (Th/F): hasRoute
with visited lists Notes (F): Returning
routes (Extra)(F): Encapsulating
routes (not on exam) Lecture
Materials: Slides (M): HashMaps Code
(M): Fibonacci Slides
(T): Graphs Slides
(TH): Graphs Code
(TH): Graphs
Slides (F): ArrayLists and Stacks Code
(F): LinkedLists, ArrayLists, and Stacks
Final
Exam Preparation Guide
|
Arrays, Graphs, Encapsulating Routes |
Lab
7 Wed, April 25 |
April 30 - May 4 |
Lecture
26 objectives
Lecture 27 - Exam date
Lecture 28 - Exam return; Java Collections Framework
Handout (M):
Stack implemented as a Linked List
Extra: Java
Collections Framework overview
Notes (M): Returning
Routes
|
Exam 2 April 30 |
No lab this week |
- 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 InstructAssist accounts of both
homework partners. You can access the grade sheet for a
particular assignment by choosing the "Grades" tab in
InstructAssist, and "Display Grades". There's an
"Attachment" for each Homework assignment listed in the
Grade Report. Click on the attachment to see your
feedback.
- My classmate has received her homework feedback on
InstructAssist, but my feedback isn't posted. Why?
There is a staff of 6 people grading CS 2102 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?
Post a question on the Grading Error forum of
InstructAssist.
- When will I get my graded quizzes back?
Graded quizzes will be returned on Tuesdays/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.

https://web.cs.wpi.edu/~cs2102/d18