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.
CS 2102 Staff Photos
Instructor: Joshua Cuneo
Lab Manager: Hao Loi
Teaching Assistants: Sylvia Inyang, Cory Neville
Senior Assistants: Benjamin Anderson, Samuel Coache, Quyen Hoang, Matthew McDonald, Cormac Lynch-Collier, Alissa Ostapenko, Joseph Petitti, Harutyun Sadoyan, Andrew Robbertz, Augusto Wong, Alexander Wurtz
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 |
|
Alissa |
Augusto |
Harry |
Harry |
Ben |
Cory |
Cory |
|
|
|
|
Tuesday |
|
|
Alissa |
Joseph |
Cormac |
Cormac |
Joshua |
Joshua |
Andrew |
|
|
|
Wednesday |
Augusto |
Sam |
Andrew |
|
Augusto |
Augusto |
Sylvia |
Alex |
Alex |
|
|
|
Thursday |
|
Sam |
Augusto |
Alex |
|
Ben |
Sylvia/Quyen** |
Alex/Quyen** |
Alissa |
|
|
|
Friday |
|
|
|
Matt |
Matt |
Joseph |
Joshua |
Joshua |
Andrew |
|
|
|
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 Leaders: Griffin Bishop and Caitlin Enright
CS 2102 MASH Times:
Mondays at 6:00 PM
Wednesdays at 8:00 PM
Thursdays at 10:00 AM
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:00 pm and 1:00 pm in AK 116.
Labs meet on Wednesdays (except where noted) according to the following schedule:
Section |
Time |
Location |
Lab Assistants |
BX01 |
8:00 am - 8:50 am |
FL A021 |
Prof. Loi, Augusto |
BX02 |
12:00 pm - 12:50 pm |
FL A021 |
Sam, Harry |
BX03 |
1:00 pm - 1:50 pm |
FL A021 |
Prof. Loi, Ben |
BX04 |
2:00 pm - 2:50 pm |
FL A021 |
Prof. Loi, Ben |
BX05 |
4:00 pm – 4:50 pm |
SL 123 |
Cory, Alissa |
BX07 |
3:00 pm - 3:50 pm (Tues) |
FL A021 |
Cormac, Joseph |
BX08 |
3:00 pm - 3:50 pm |
SL 123 |
Cory, Alissa |
BX09 |
3:00 pm - 3:50 pm |
FL A021 |
Prof. Loi, Alex |
BX10 |
5:00 pm - 5:50 pm |
FL A021 |
Prof. Loi, Sylvia |
BX11 |
10:00 am - 10:50 am |
SL 123 |
Prof. Loi, Andrew |
BX12 |
4:00 pm - 4:50 pm |
FL A021 |
Prof. Loi, Sylvia |
BX13 |
11:00 am - 11:50 am |
FL A021 |
Prof. Loi, Harry |
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 (15% each, total 30%)
Two exams will be given. Exams are tentatively scheduled for November 13 and December 13.
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 (D Term 2019).
Quizzes (20%)
Five quizzes will be given at the start of class on these (tentative) dates:
- Monday, October 29
- Friday, November 2
- Friday, November 9
- Friday, November 30
- Friday, December 7
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 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 (10%)
Labs will be given during conference sections on Tuesdays and 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
|
Oct 23 - 26 |
Lecture 1 objectives
Lecture 2 objectives
Lecture 3 objectives
Notes: Migrating to Java (sections 1-9)
Video: OOP: An Introduction
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:
Slides (T): Syllabus Slides
Code (T): Dillo in Java
Slides (TH): Racket and Memory Mapping Slides
Code (TH): Dillo and Boa in Java (with comments)
Slides (F): Racket and Memory Mapping Slides
Code (F): Interfaces in Java
|
Classes, Objects, Methods, Interfaces |
Homework 1 (due: Tuesday, October 30, at 5pm)
Lab 1 , Tues/Wed Oct 24/25 |
Oct 29 - Nov 2 |
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
Lecture Materials:
Slides (M): Abstract Class UML
Code (M): Abstract Classes in Java
Slides (T): Abstract Class UML and Diagrams
Code (T): More Abstract Classes and Cell Biology
Slides (TH): Mutators and Lists
Code (TH): More Inheritance, Mutators, and Lists
Code (F): Linked Lists
API (F): Linked Lists
|
Interfaces, Abstract classes, Lists, and Variables |
Homework 2 (due: Wednesday, November 7, at 5pm)
Lab 2, Tues/Wed Oct 30/31
|
Nov 5 - 9 |
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): Loops and Equality
Code (M): Loops and Equality
Slides (T): Design Tasks
Handout (T): Code Handout
Code (T): Modified Handout Code
|
Equality, Design Review, Planning |
Homework 3 (due Thursday, November 15 at 5pm)
Lab 3, Tues/Wed, Nov 6/7
|
Nov 12 - 16 |
Lecture 12 - review/catch up
Lecture 13 - Exam date
Lecture 14 objectives
Lecture 15 objectives
Notes (Th): Binary Search Trees
Notes (F): Heaps
Lecture Materials:
Slides and Notes(M): Planning
Code (M): Planning Code
Slides (TH): Sets
Slides (F): BSTs
Slides (F): Heaps and AVL Trees
|
Sets, Binary Search Trees, Heaps
Exam 1 Nov 13 |
Homework 4 (due: Tuesday, November 27 at 5pm)
Lab 4, Tues/Wed, Nov 13/14
|
Nov 19-20 |
Lecture 16 objectives
Lecture 17 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
Lecture Materials:
Notes (M): Merge Algorithm
Code (M): Encapsulation
Notes (T): Encapsulation Slides
Code (T): Encapsulation and Data Structures
|
AVL Trees, Encapsulation, Access Modifiers |
No lab this week.
Happy Thanksgiving!
Homework 5 (due: Tuesday, Dec 4 at 5pm) |
Nov 26 - 30 |
Lecture 18 objectives
Lecture 19 objectives
Lecture 20 objectives
Lecture 21 objectives
Notes (M): Encapsulation and Access Modifiers
Notes (T): Exceptions
Notes (Th): Generics (Abstract over Data)
Notes (F): Hashtables
Lecture Materials:
Notes (M): Exceptions
Code (M): Exceptions Code
Notes (T): Generics
Code (TH): Generics Code
Notes (TH): Hashing
Code (F): Hashing
|
Encapsulation (cont.), Exceptions, Generics, Hash Tables |
Homework 6 (due: Tuesday, Dec 11)
Lab 5 Tues/Wed, Nov 27/28
|
Dec 3 - 7 |
Lecture 22 objectives
Lecture 23 objectives
Lecture 24 objectives
Lecture 25 objectives
Notes (M): Arrays
(Code)(M): Fibonacci code
Notes (Th): Avoiding infinite loops
Notes (F): Returning routes
(Extra)(F): Encapsulating routes (not on exam)
Lecture Materials:
Notes (M): More Hashing and Fibonacci
Code (M): Fibonacci Code
Notes (T): Hashing Notes from PollEverywhere
Notes (T): Graphs and Infinite Loops
Notes (TH): More Graphs
Code (TH): Graph Code
Notes (F): ArrayLists, Stacks, and Queues
Final Exam Preparation Guide |
Arrays, Graphs, Encapsulating Routes |
Lab 6 Tues/Wed, Dec 4/5 |
Dec 10-14 |
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
Lecture Materials:
Code (M): Stacks and Queues
|
Exam 2 December 13 |
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 13 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/b18