COMP 210: Object-Oriented Programming, Spring 2019

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

Logistics

Content

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.

Sources

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

We may also pull material from other sources, such as “How to Design Classes” by Felleisen et. al., available at http://www.ccs.neu.edu/home/matthias/HtDC/htdc.pdf. Links to any sources will be posted on this webpage as needed.

If you would like a textbook for learning Java, I recommend

though most students are fine without a textbook.

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 need at least Java 8; more recent versions are fine. Java 10 and Eclipse are installed on the department server, which can be accessed via a VNC desktop session. All software for this course is available free of charge from Oracle and the Eclipse Foundation.

Policies

Assessment

Assignments

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.

Workload

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
    13

Grading

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 40%
Projects 25%
Homework 12.5%
Labs 12.5%
Participation 10%

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.

Schedule

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/14 Intro and Programming Environment Read this and this
Wed 01/16 Procedural Java Read Google’s style guide (sections 3-7), these notes, and this Git tutorial
Wed 01/16-Lab Basic Java + Git Lab 1
Fri 01/18 Basic Object-Oriented Programming Read notes
Mon 01/21 Class Hierarchies and UML Read notes
Wed 01/23 Common Methods and Comparing Objects  
Wed 01/23-Lab Media Hierarchy Lab 2
Fri 01/25 Class Relationships Read this and notes
Mon 01/28 Containment vs. Extension Read notes
Wed 01/30 (Class Cancelled) Exam 1 out
Wed 01/30-Lab Media Hierarchy II Lab 3
Fri 02/01 Lists, ADTs and PDAs Read notes
Mon 02/04 Trees and Tree Traversals Read notes
Wed 02/06 Static Factories  
Wed 02/06-Lab Basic Binary Tree PDA Lab 4
Fri 02/08 Huffman Codes Read notes
Mon 02/11 Binary Search Trees  
Wed 02/13 BST Delete  
Wed 02/13-Lab BST PDA Implementation Lab 5
Fri 02/15 Conc Lists Exam 2 out, Watch this, (slides)
Mon 02/18 (Class Cancelled - Conference)  
Wed 02/20 (Class Cancelled - Conference)  
Wed 02/20-Lab (Lab Cancelled - Conference)  
Fri 02/22 Priority Queues Exam 2 due
Mon 02/25 Binary heaps  
Wed 02/27 Generics  
Wed 02/27-Lab   Lab 6
(Fri 03/01) (Exam day for half-semester courses – no class)  
(03/04–03/08) (Spring break)  
Mon 03/11 SOLID Design Principles  
Wed 03/13 Intro to Design Patterns  
Wed 03/13-Lab Huffman Encoder/Decoder Project 1 out
Fri 03/15 (Exam 3)  
Mon 03/18 MVC: Model - Tic-Tac-Toe  
Wed 03/20 MVC: Controllers (and mocks)  
Wed 03/20-Lab (Work on Project 1)  
Fri 03/22 Lambda Functions  
Mon 03/25 Project 1 Questions  
Wed 03/27 Intro to JavaFX  
Wed 03/27-Lab Toy JavaFX Application Lab 7, Setup help
Fri 03/29 More JavaFX Project 1 due
Mon 04/01 MVC: Views in JavaFX  
Wed 04/03 Observer pattern  
Wed 04/03-Lab MVC Temperature Converter Lab 8
Fri 04/05 (Exam 4)  
Mon 04/08 Types of Design Patterns, Builder Exam 5 out
Wed 04/10 Adapter  
Wed 04/10-Lab Squares Animation Lab 9
Fri 04/12 Adapter II: ViewModel  
Mon 04/15 Strategy  
Wed 04/17 Game of Life Read Critiques
Wed 04/17-Lab (Project 2 free lab) Project 2 out
(Fri 04/19) (Easter break)  
(Mon 04/22) (Easter break)  
Wed 04/24 Critique of OO  
Wed 04/24-Lab (Project 2 free lab)  
Fri 04/26 Design Pattern Presentations  
Mon 04/29 Design Pattern Presentations  
Wed 05/01 Review  
Wed 05/01-Lab (Project 2 free lab)  
Wed 05/08 8:00 AM Final Exam  

Monmouth College Services