Course Syllabus


Instructor: Mike Holmes
Textbook: The Object-Oriented Thought Process, 4th edition,
by Matt Weisfeld. Addison Wesley ISBN: 978-0-321-86127-6

Course Description

Intermediate software development in an object-oriented environment. Further experience with object-oriented analysis and design, including modeling languages. Focus on software reuse through frameworks and patterns and on software development methodology and tools.

Course Goals

This course aims to help you develop an in-depth understanding of a new way to think about computer programs: as collections of independent objects that collaborate to achieve some goal. It does so by giving you the opportunity to read, design, critique, and implement object-oriented programs in Java. By the end of the semester, you should have a solid grasp of the object-oriented approach to software development. You should:

  • know the basic features of OO techniques,
  • know the vocabulary of object-oriented modeling,
  • be able to analyze a real-world situation in an object-oriented way,
  • be able to design an object-oriented model containing multiple classes and collaborations, and
  • be able to implement such a model in Java using OO programming techniques.
While this course is not a Java course per se, we will be using Java to demonstrate the Object Oriented appraoch. As a result of the course, however, you will learn to program in Java.

Course Requirements

Class sessions
Our class meetings will consist of a mixture of lecture, discussion, and in-class exercises. You are expected to read assigned chapters prior to the class session and to participate actively in class discussions.

Homework Assignments / In Class Activities
Some homwork assignements will be completed during in class activities and others will be individual assignments outside of class time. These assignments will involve applying analysis, design, and implementation techniques learned in class. Some assignments will involve writing and some will consist of paper exercises, and many will involve programming. Some of the assignments will be sequenced and build on each other, so it is imperative that you don't fall behind.

There will be four unit exams, plus a comprehensive final exam.

Course Evaluation

Your grade will be based on your performance on homework assignments, quizes and tests.

Homework Assignments/ In Class Activities 10%
Unit Exam 1 15%
Unit Exam 2 15%
Unit Exam 3 15%
Unit Exam 4 15%
Final Exam 30%

Percentage Grading Scale
94-100 = A 90-93 = A-
87-89 = B+ 83-86 = B 80-82 = B-
77-79 = C+ 73-76 = C 70-72 = C-
67-69 = D+ 63-66 = D 60-62 = D-
60 = F

Course Policies

  • If you need to miss a class session, exam or assignement please contact me in advance so we can discuss accommodations.
  • If you need to meet for assistance outside of our scheduled class time, please contact me to schedule an appointment. I will do my best to accommodate your schedule.
  • All assignments are due at their assigned date and time. In order to receive partial credit, always submit your best effort at that time. Late work will not be accepted.
  • It is allowable to work together on homework assignments. This is often a good way to aid in your learning of the material. However, unless the assignment explicitly states otherwise, any work you submit must be your own. Discuss ideas, but write your own answers, including all code. You should acknowledge any collaboration explicitly in the work you submit. Undocumented or unacceptable collaboration is considered a form of academic dishonesty.
  • UNI has an established policy of academic integrity. I will not tolerate plagiarism or any other form of academic dishonesty in this course. See the UNI catalog for details on the university's policy.
  • You will write all programs for the course in the Java programming language. Numerous Java resources are available on the web, and Java implementations are available for nearly every platform, including Unix, MacOS X, and Windows.
  • You may use any development environment (text files, Eclipse, Dr. Java, etc.) that you wish to develop you code. In class I will mostly be using Eclipse as my IDE of choice.