COMP 210: Object-Oriented Programming, Spring 2018

This syllabus is subject to change based on specific class needs, especially the schedule. Significant deviations will be discussed in class.



In this course, students will extend the Design Recipe ideas to explore the paradigm of Object-Oriented programming (OOP) using the Java programming language. As with all programming paradigms, OOP constitutes not just a set of tools for writing programs but a way of thinking and reasoning about the structure of programs and computations in general. The Object-Oriented paradigm draws on all the computing and programming concepts students studied in the introductory sequence.

Topics and Objectives

In this course students will explore the Object-Oriented paradigm for programming. Just as the shift from Functional programming in Racket to Imperative programming in C++ required a change in perspective, so to will the shift to OOP in Java. Students will explore the conceptual foundations of OOP as well as modern OOP in Java.


There is no course textbook. The standard Oracle-provided Java reference and tutorial material will be heavily utilized, including:

We will also pull material from “How to Design Classes” by Felleisen et. al., available at In addition, I will assign readings from a multitude of other internet sources. Links to these sources will be posted on this webpage as needed.

Programming Environment

All programs written in this course are required to compile and run on a Linux computer with Java 8 and the Eclipse IDE. You will probably be okay with the recently-released Java 9, but the department server has Java JRE/JDK 8 installed (along with Eclipse). This software can be accessed via a VNC desktop session. While development is not required in this environment, failure to properly port a program to the required environment could result in a program not compiling correctly when it is being graded. All software for this course is available free of charge from Oracle and the Eclipse Foundation.




The course workload is as follows:

Category Number Of Assignments
Labs 8–10
Homework 8–10
Projects 2
Exams 5–7

Homework assignments will always either precede a lab to prepare for it or follow a lab to complete it. There will be no dedicated midterm exam, but 7 exams spaced throughout the semester. Each exam will focus primarily, but not necessarily exclusively, on the material covered since the previous exam. The final exam will include a small number of cumulative questions, and I reserve the right to include at most one cumulative question on each of the other exams.


The weekly workload for this course will vary by student but on average should be about 13 hours per week. The follow tables provides a rough estimate of the distribution of this time over different course components for a 16 week semester.

Category Total Time Time/Week (Hours)
Lectures+Labs   4
Homework 48 3
Exam Study 16 1
Projects 48 3
Reading+Unstructured Study   2


Lab and homework assignments are graded on a simple 3 point scale. Grades are marked with, in decreasing order, a check-plus, check, or check-minus. Your final grade for these two assignment categories is then based off the respective averages and determined by the following chart. Notice this chart lists the minimum average needed to achieve a particular letter grade.

Assignment Avg. (Min) Letter Grade
2.8 A
2.75 A-
2.5 B+
2.25 B
2 B-
1.75 C+
1.5 C
1 C-
0.75 D
0.5 F

Your final grade is based on a weighted average of particular assignment categories. You can estimate your current grade based on your scores and these weights. You may always visit the instructor outside of class to discuss your current standing.

Category Weight
Exams 45%
Projects 25%
Homework 12.5%
Labs 12.5%
Participation 5%

This courses uses a standard grading scale. Assignments and final grades will not be curved except in rare cases when its deemed necessary by the instructor. Percentage grades translate to letter grades as follows:

Score Grade
94–100 A
90–93 A-
88–89 B+
82–87 B
80–81 B-
78–79 C+
72–77 C
70–71 C-
68–69 D+
62–67 D
60–61 D-
0–59 F

You are always welcome to challenge a grade that you feel is unfair or calculated incorrectly. Mistakes made in your favor will never be corrected to lower your grade. Mistakes made not in your favor will be corrected. Basically, after the initial grading your score can only go up as the result of a challenge*.


The following tentative calendar should give you a feel for how work is distributed throughout the semester. Assignments and events are listed in the week they are due or when they occur. This calendar is subject to change based on the circumstances of the course.

Date Topic Assignment
Mon 01/15 Programming Environment Read this
Wed 01/17 Procedural Java Lab 1
Fri 01/19 Basic Object-Oriented Programming Read Java OO Tutorial
Mon 01/22 Implementing Hierarchies, UML  
Wed 01/24 Comparing Objects Lab 2, Read this and this
Fri 01/26 Containment Relationships, Class Extension Read this
Mon 01/29 Access Modifiers, Overriding  
Wed 01/31 Containment vs. Extension Lab 3
Fri 02/02 Lists, ADTs, and PDAs Exam 1 out out
Mon 02/05 Binary Trees  
Wed 02/07 Static Factories Lab 4, Read this
Fri 02/09 Huffman Codes  
Mon 02/12 Binary Search Trees  
Wed 02/14 BST Delete Lab 5
Fri 02/16 Priority Queues Exam 1 due
Mon 02/19 Binary Heaps  
Wed 02/21 Implicit Trees; Generics Lab 6, Read Java Generics Tutorial
Fri 02/23 Conc Lists Watch this (slides)
Mon 02/26 Conc List Discussion and Review  
Wed 02/28 (Exam 2) Project 1 and lab out
Fri 03/02    
(03/05–03/09) (Spring Break) (Spring Break)
Mon 03/12 JavaFX Basics, Property Binding Read this
Wed 03/14 Event-Driven Programming Project 1 Free Lab
Fri 03/16 Lambda Functions  
Mon 03/19 (Project 1 questions)  
Wed 03/21 Tic Tac Toe Design Project 1 due, Lab 7
Fri 03/23 Tic Tac Toe with MVC  
Mon 03/26 (Exam 3) Exam 3
Wed 03/28   Lab 8
(03/30–04/02) (Easter Break) (Easter Break)
Wed 04/04 Testing Controllers with Mock Objects Lab 9
Fri 04/06 Test Harnesses; OO Design Principles  
Mon 04/09 Software Patterns  
Wed 04/11 Builder Lab 10
Fri 04/13 Factory Method, Abstract Factory  
Mon 04/16 Prototype, Singleton  
Wed 04/18 Game of Life Project 2
Fri 04/20 Structural Patterns, Adapter Exam 4
Mon 04/23 Exam Review, Bridge  
Wed 04/25 Composite, Decorator  
Fri 04/27 Facade, Proxy, Comparison of Structural Patterns Exam 5 due (part of project 2)
Mon 04/30 Behavioral Patterns: Observer, Strategy, Visitor, Iterator  
Wed 05/02 Criticism of OO, Review Project 2 due, Practice Final, Solutions
Mon 05/07 8:00 AM Final Exam  

Monmouth College Services