Course Logistics


We will meet 1:30-245PM Mondays and Wednesdays in Hodson 210.

We will spend around half the class slots on lectures and the other half devoted to project labs, etc. The dateline describes the topics covered, what we will do each class period, and when assignments are passed out and are due.


The coursework consists of

  • Six written homework assignments;
  • One in-class "midterm exam";
  • A semester-long team programming project with six iteration submissions, and an in-class presentation; the sixth iteration is the final project demo which can be viewed as the "final exam" for the class.

Read more about the course project »

The project will account for the substantial majority of the final grade. Half of the project grade will be the final iteration, and another half will be for the previous iterations. The homeworks will be around a fourth of the grade and the midterm in the 10-15% range.

Frequently asked questions about the course »


To get going in the course you will need to

  • Make sure you have the latest Java installed on your computer, see the Java section of the Tools page. Also you will need Postman for assignment 1, and we recommend installing the IntelliJ IDE
  • Get the textbooks.
  • Register for The OOSE Piazza Page (look under the logistics menu at the top) so you can receive course announcements and discuss the material with other students.
  • Sign up for Gradescope (again look under logistics above). The course code you need to sign up will be posted on Piazza.
  • Start on the first assignment
  • Familiarize yourself with the dateline to see what is coming up.
  • In particular, notice you need to have your project group formed soon.


The official prerequisite is Data Structures, but the real prerequisite is to have several courses or equivalent on-the-job programming experience developing real software in a high-level language.


The first assigment is a RESTful web server programming assignment; there will also be several small written homeworks to reinforce the lecture material. These homeworks are designed to be relatively short, the primary focus of the class is the projects.

The collaboration policy for assignments is you are encouraged to form teams to work together on solving the assignments, but everyone must submit their own writeup of the answers (no emailing solutions to each other). Those of you who understand the material are encouraged to engage in peer teaching to help other students on your term or other teams. Note that your homework team is not necessarily related to your project team, and you can also do the homeworks on your own if you want.

Please make sure to consult the course Academic Integrity Policy on what is legitimate interaction for homeworks, it is spelled out in detail there.

Assignment submission and grade checking will be done through Gradescope.

The in-class midterm

We will have one in-class midterm on the Wednesday of the week after Thanksgiving. The purpose of this midterm is to test your knowledge of Java RESTful Web, OOD, UML class diagrams, design patterns, etc based on what you learned from the homeworks. The homeworks are group work to learn the concepts and this midterm will test that you individually learned the concepts.

The Collab Lab and Office Hours

The Collab lab is a cross between homework assignment office hours and group project lab time. A TA/CA will be around in collab lab hours to help with either homework assignment problems or with your group project.

Information about office hours, the Collab Lab hours, and other contact information can be found on the course Contact us page.

Course Announcements and Discussions

We will be using the OOSE Piazza page for course announcements and discussions (link under logistics at the top; signup link is here).

Coding Style

Your code throughout this course will be graded in accordance with industry development standards and practices. The particular style requirements for Java code are enumerated at the bottom of the first assignment.