Course Description and Objective


Catalog Description
This course discusses fundamental conceptual models for programming languages and illustrates these with specific programming languages and application problems. Specific topics include class and object models and inheritance among classes and objects and static and dynamic systems and implementations.

Course Overview
This course discusses fundamental conceptual models for object-oriented programming and illustrates these with Java language and application problems. We will be covering object oriented terminology extensively while emphasising the practical importance of the concepts. Students will be responsible for reading the required textbook, creating presentations for the challenges, and working on a significant and non-trivial team programming project to gain familiarity with object-oriented analysis, design, and implementation.

An Important Note
This course is geared for motivated, highly capable students who enjoy software development and abstract thinking. Those merely seeking an easy tech elective will be deeply unhappy (see grading criteria below); those willing to put forth the time and effort will likely find this to be very useful in the long run.

Course Objectives

Prerequisites

COP 3530 and a working knowledge of Java

Required textbook

Optional textbook

Approximate Lecture Schedule and Important Dates


Week # First Date of the Week Topic Referential Reading
Monday Wednesday Friday








1 01/09/12 Introduction to Computing and Programming Paradigms



Quiz 1
2 01/16/12 Introduction to Object Oriented Programming Chapter 1
Holiday
Quiz 2
3 01/23/12 History of Object Oriented Programming, UML: Basics Chapter 2 & 3


Quiz 3
4 01/30/12 UML: Class Diagrams Chapter 4


Quiz 4
5 02/06/12 UML: Object Interaction Diagrams Chapter 5

Project: 1st iteration Exam 1
6 02/13/12 UML:State Diagrams Chapter 6


Quiz 5
7 02/20/12 UML: Architecture and Interface Diagrams, Competition I Chapter 7

Presentation
8 02/27/12 Competition I

Presentation

Presentation

9 03/05/12





10 03/12/12 Principles: Encapsulation and Connascence Chapter 8

Quiz 6
11 03/19/12 Principles: Domains, Encumbrance, and Cohesion Chapter 9

Project: 2nd iteration
Quiz 7
12 03/26/12 Principles: Class Behavior Chapter 10 & 11


Exam 2
13 04/02/12 Principles: Inheritance and Polymorphism Chapter 12


14 04/09/12 Principles: Techniques For Organizing Operations, Cohesion and Support of States and Behavior Chapter 13 & 14

Project: Self Critique
15 04/16/12 Principles: Designing a Software Component, Design Patterns Chapter 15, GoF Book




Quiz 8
16 04/23/12 Design Patterns GoF Book


Project: 3rd iteration

Final Grades

Your final grade will be based on the number of grade points you have accumulated at the end of the semester. The grading scale will be:
       100-92 = A,
       91-89 = A-,
       88-86 = B+,
       85-82 = B,
       81-79 = B-,
       78-76 = C+,
       76-72 = C,
       71-69 = C-,
       68-66 = D+,
       65-62 = D,
       61-59 = D-,
       58-0 = E.
During the semester you will accumulate points in categories weighted as follows: