Home CPSC 330

CPSC 330: Object Oriented Design and Analysis

Meeting Times:Section 1: Monday and Wednesday, 11:00 - 12:50, Trinkle B7
Section 2: Monday and Wednesday, 1:00 - 2:50, Trinkle B52
Instructor:Ian Finlayson
Office:Trinkle B18
Office Phone:540-654-1714
Office Hours:Monday and Wednesday, 3:00 - 4:00; Tuesday and Thursday 10:00 - 12:00; or by appointment.
Required Textbook:Object-Oriented Design and Patterns by Cay Horstmann

Course Description

Theory and practice of the object-oriented software development paradigm. Focus is on major design principles such as abstraction, encapsulation, inheritance, polymorphism, aggregation, and visibility. Modeling notations for capturing and critiquing designs. Introduction to the concept of design patterns, and coverage of a catalog of common patterns. Students work in team projects to develop collaborative software solutions in an object-oriented language.

Course Goals & Objectives

Grading Policy

Your grade will be determined as follows: The grading scale used for this course is as follows:

No late work will be accepted for programming projects or essay questions. There is a 10% per day late penalty on lab exercises that are not turned in on time. Final grades will not be rounded up, and no extra credit opportunities will be given on an individual basis.

The University provides the opportunity to provide grading feedback midway through the semester. This will take into account your score on the mid-term exam and the programming projects submitted up to that point. Any student receiving less than a 65% on either of these will receive a "U" for their mid-semester grade. If this happens to you, please don't hesitate to talk with me about how we can improve your performance in this class.

Student Conduct

Honor Policy

Students are expected to conduct themselves in a manner consistent with the letter and spirit of the Honor Constitution. You may discuss the assignments with other students, but all of your work must be your own. You must yourself type and understand every line of code in each assignment you submit. For group projects, you may of course work with the members of your group. It is an honor code violation to copy code directly from another student either by copy and paste or by transcription. For more information, please refer to the computer science department policy or contact me.

Disability Statement

The Office of Disability Services has been designated by the University as the primary office to guide, counsel, and assist students with disabilities. If you already receive services through the Office of Disability Services and require accommodations for this class, make an appointment with me as soon as possible to discuss your approved accommodations needs. Please bring your accommodation letter with you to the appointment. I will hold any information you share with me in the strictest confidence unless you give me permission to do otherwise. If you have not contacted the Office of Disability Services and need accommodations, I will be happy to refer you. The office will require appropriate documentation of disability. Their phone number is 540-654-1266. The office is located in Lee Hall, Room 401.

Tentative Schedule

Date Class Topic Reading Lab Topic Assignment Due
August 26 Course Introduction   Compiling Java Code  
August 28 Programming in Java 1.1, 1.3 - 1.6 Java Programming Exercise 1  
September 2 Programming in Java Continued 1.8 - 1.14 Java Programming Exercise 2  
September 3 Object Oriented Basics 2.1 - 2.5 Using Git  
September 9 Inheritance 6.1 Inheritance Exercise 1  
September 11 Polymorphism 4.2 - 4.5 No Lab  
September 16ExceptionsAssertions and ErrorsExceptions Exercise 
September 18DocumentationThe Evils of DuplicationJavadoc 
September 23 UML 2.8 UML Exercise 1  
September 25 UML Continued 2.9 - 2.10 UML Exercise 2  
September 30 Class Design 3.4 - 3.5 No Lab Essay Exam 1
Octobery 2 Generics   Generics Exercise  
October 7 GUI Programming 4.1, 4.6 - 4.9 No Lab  
October 9 GUI Programming Continued   Swing Exercise Mastermind Project Due 
October 14 Fall Break
October 16 Design Patterns 1 5.1 - 5.5 Singleton Exercise  
October 21 Design Patterns 2 5.6 - 5.8 No Lab  
October 23 Design Patterns 3 10.1 - 10.7 No Lab  
October 28 Software Testing Ruthless Testing Junit Exercise 1  
October 30 Software Testing Continued   Junit Exercise 2  
November 4 Game Programming   No Lab Essay Exam 2 Due
November 6 Game Programming Continued   No Lab Text Editor Project Due
November 11 Refactoring 3.7 Refactoring Exercise 1  
November 13 No Class Refactoring Refactoring Exercise 2  
November 18 Multi-threading 9.1 Multi-threading Exercise 1  
November 20 Multi-threading Continued 9.2 Multi-threading Exercise 2  
November 25 No Class   No Lab  
November 27 Thanksgiving Break
December 2 Large Code Bases   Working with Large Code Bases  
December 4 Wrap Up   No Lab Essay Exam 3 Due
December 11, 12:00 - 2:30 Section 1, Project 3 Presentations, Post-Mortems Due
December 11, 3:30 - 6:00 Section 2, Project 3 Presentations, Post-Mortems Due

Copyright © 2018 Ian Finlayson | Licensed under a Creative Commons Attribution 4.0 International License.