CSIS 370 - Object-Oriented Analysis & Design

Course Description

This course covers the fundamental concepts of object-oriented programming languages, including data abstraction and typing, class inheritance and generic types, prototypes and delegation, concurrency control and distribution, object-oriented databases, and implementation. Object-oriented solutions will be developed in one or more high-level object-oriented programming languages.

Instructor

Dr. David M. Hansen
Current Weekly Schedule

Texts

Required
  • Martin Fowler. UML Distilled. Reading, Massachesetts: Addison-Wesley, Inc.
Recommended
  • Lippman, Lajoie, Moo. C++ Primer (5th Edition)
  • Gamma, Helm, Johnson, Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software

Objectives

This course explores the object-oriented programming paradigm in detail. Object-oriented programming is a shift in the way programs are design as well as implemented. Thus:
  • Students will understand the difference between traditional "structured programming" design and implementation and object-oriented design and implementation. Specifically, students will understand and be capable of appropriately using:
    • Classes
    • Objects
    • Messages (aka methods)
    • Inheritance
    • Polymorphism
    • Genericty
  • Students will be familiar with an object-oriented design methodology (e.g, the Unified Modeling Language - UML).
  • Students will utilize one or more "object-oriented" programming languages to develop object-oriented solutions to programming problems.

Course Organization

Object-oriented programming is both a way of thinking and conceptually designing software, as well as a programming methodology. Thus this course will devote an equal amount of time to understanding the object-oriented design paradigm and object-oriented programming. A well-designed object-oriented model is easily translated into any number of programming languages that support object-oriented concepts while a poorly-designed model can result in endless difficulties regardless of the power of the implementation language or the skill of the programmer.

The course will include regular homework and programming assignments (please see my comments on collaboration and programming). Assignments are due before 11:59pm on the due date; there will be NO CREDIT given for late assignments (without an official excused absence) - turn in as much as you can.

Reading assignments should be completed before the lecture covering the material. Not all reading material will be covered in the lectures, but you will be responsible for the material on homework and exams. Quizes over the assigned reading may be given at any time.

The Vision Statement of the Computer Science and Information Systems majors states that our students are distinctive by: "Bringing a Christ-centered worldview to our increasingly technological world." As one step towards the fulfillment of this objective, each semester, we will identify an influential Christian writing to be read and reflected upon by students in our classes throughout the term. This will be treated as an official component of every course and will be uniquely integrated and assessed at our discretion, generally as a component of the quiz grade. See the semester's reading schedule. In addition, regular meetings will be scheduled throughout the semester that can be attended for Chapel credit.

It is my hope that students will not view this as one more task to complete, but as a catalyst for continued discussion ultimately leading to a deeper walk with Christ.

The chief end of man is to glorify God, and enjoy Him forever.
(Westminster Confession)

If you have specific physical, psychiatric, or learning disabilities and require accommodations, please contact the Disability Services Office as early as possible so that your learning needs may be appropriately met. You will need to provide current documentation of your disability to the Disability Services Office. For more information, go to ds.georgefox.edu or contact Rick Muthiah, Dean of the Center for Teaching and Learning (ext. 2314)

Grading

Grading Scale

The final grade will be based on:

Tentative Schedule

Week DateTopic Reading
UML C++
1 1/13 Introduction    
1/15 What to Expect Programming Guideleines
1/17 Abstraction & Encapsulation OOAD & Open-Closed Principle
2 1/20 MLK Holiday
1/22 Basics of C/C++   1
1/24 Pointers and References   2
3 1/27 Arrays & Vectors   3
1/29 Pointers and References Demonstrated    
1/31 Expressions & Statements   4-5
4 2/3 Functions & Classes   6-7.1
2/5 Implementing Classes   7.2-7.6
2/7 Containers and Iterators   8-9
5 2/10 Generic Algorithms & Associative Maps   10-11
2/12 Memory Management   12-13
2/14 Mid-Semester Holiday
6 2/17 History and Foundations of OOAD 1  
2/19 UML & OOAD Process 2  
2/21 UML Class Diagrams 3  
7 2/24 Class Design 3 (again)  
2/26 Class Relationships - Inheritance Liskov Substitutability
2/28 Instance Relationships - Association 5  
8 3/2 Types and Classes Cardelli & Wegner
Section 1...
the rest as you are able
3/4 Polymorphism
3/6 Polymorphic Design
9 3/9 Class Project
MidTerm Exam?
 
3/11 Class Project UML  
3/13 Class Project Design  
10 3/16 OOP in C++ - Class Definition & Implementation   15.1 - 15.2
3/18 OOP in C++ - Inheritance & Polymorphism   15.3 - 15.9
3/20 Polymorphism in Programming Project    
11 Spring Break
12 3/26 Programming Project UML Semantics    
3/28 Miscelaneous C++   skim 13, 14
3/30 C++ I/O   8
13 4/2 OOP in C++ - Exceptions & Template Classes   5.6, 16.1
4/4 OOP in C++ - Collections   3.3-3.5, 11
4/6 Object Interaction via Sequence Diagrams 4  
14 4/9 Introduction to Design Patterns Overview
4/11
4/13
15 4/18 MVC Pattern and GUIs MVC
4/20 Use Cases 9  
4/22 Review    
This page was last updated .
For questions or comments about this page, please email the webmaster.