Course Syllabus

Basics

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


Course Description

This course aims to help you develop an understanding of current design methodologies for developing computer programs in an object oriented language/model. That is, working with programs written using collections of independent objects that collaborate to achieve some goal. This course does so by giving you the opportunity to design, critique, and implement OO solutions in Java.

Your skill as a programmer depends largely on how many ways you can think about problems and solutions. At the most abstract level, flexibility allows you to be creative. At a more concrete level, flexibility allows you to learn new kinds of programming languages more effectively. And, at the most concrete level, such flexibility allows you to use individual programming languages more effectively.

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.
  • Be able to consider multiple designs for solving the same problem and understand the tradeoffs between these alternate designs.
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.

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

Course Evaluation

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

Weight
Homework Assignments/ In Class Activities 25%
Unit Exam 1 15%
Unit Exam 2 15%
Unit Exam 3 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

Accessibility

Please address any special needs or special accommodations with me at the beginning of the semester or as soon as you become aware of your needs. Those seeking accommodations based on disabilities should obtain a Student Academic Accommodation Request (SAAR) form from Student Disability Services (SDS).

The Learning Center

Students are encouraged to use The Learning Center @ Rod Library (formerly The Academic Learning Center) for assistance with writing, math, science, reading and learning strategies. Meet with trained and certified tutors during walk-in hours or by appointment. For more information, visit the main floor of Rod Library, on the web at tlc.uni.edu or by calling 319-273-6023.

Expectations

  • If you need to miss a class session, exam or assignment 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.