CSIS 370 Object-Oriented Analysis & Design

Course Description

A study of the fundamental concepts of object-oriented programming, including data abstraction and typing, encapsulation, single and multiple inheritance, substitutability, static and dynamic polymorphism, generics, interfaces, and design patterns. Object-oriented solutions will be designed using UML class and sequence diagrams and implemented in one or more high-level languages.


Brian R. Snider
Office hours: Wood-Mar 223 (see schedule)





This course explores the object-oriented programming paradigm in detail. Object-oriented programming is a shift in the way programs are designed as well as implemented.

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:

Students will be familiar with an object-oriented design methodology (for example, using 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 as well as 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/or programming assignments. There will be no credit given for late assignments (without an excused absence)—turn in as much as you can. Unless otherwise specified, no handwritten work will be accepted.

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

Collaboration and Academic Integrity

See the GFU CS/IS/Cyber policies for collaboration and discussion of collaboration and academic integrity. Most students would be surprised at how easy it is to detect collaboration or other academic integrity violations such as plagiarism in programming—please do not test us! Remember: you always have willing and legal collaborators in the faculty. We encourage you to ask questions in class, ask for help in the CS lab, use the class mailing list, and visit office hours for assistance.

Unless otherwise specified (e.g., for a group assignment or project), you are expected to do your own work. This also applies to the use of online resources (e.g., StackOverflow, ChatGPT). Put simply: if you are representing someone else's work as your own, you are being dishonest. Any suspected incidents of academic integrity violations will be investigated and reported to the Academic Affairs Office as they arise.

Almost all of life is filled with collaboration (i.e., people working together). Yet in our academic system, we artificially limit collaboration. These limits are designed to force you to learn fundamental principles and build specific skills. It is very artificial, and you'll find that collaboration is a valuable skill in the working world. While some of you may be tempted to collaborate too much, others will collaborate too little. When appropriate, it's a good idea to make use of others—the purpose here is to learn. Be sure to make the most of this opportunity but do it earnestly and with integrity.

University Resources

Accessibility and Disability

If you have specific physical, psychiatric, or learning disabilities and require accommodations, please contact Disability & Accessibility Services (DAS) as early as possible so that your learning needs can be appropriately met. For more information, go to georgefox.edu/das or contact das@georgefox.edu).

My desire as a professor is for this course to be welcoming to, accessible to, and usable by everyone, including students who are English-language learners, have a variety of learning styles, have disabilities, or are new to online learning systems. Be sure to let me know immediately if you encounter a required element or resource in the course that is not accessible to you. Also, let me know of changes I can make to the course so that it is more welcoming to, accessible to, or usable by students who take this course in the future.

Academic Resource Center

The Academic Resource Center (ARC) on the Newberg campus provides all undergraduate students with free writing consultation, academic coaching, and learning strategy review (e.g., techniques to improve reading, note-taking, study, time management). The ARC offers in-person appointments; if necessary, Zoom appointments can be arranged by request. The ARC, located on the first floor of the Murdock Library, is open from 1:00–10:00 p.m., Monday through Thursday, and 12:00–4:00 p.m. on Friday. To schedule an appointment, go to the online schedule at traccloud.georgefox.edu, call 503-554-2327, email the_arc@georgefox.edu, or stop by the ARC. Visit arc.georgefox.edu for information about ARC Consultants' areas of study, instructions for scheduling an appointment, learning tips, and a list of other tutoring options on campus.

Student Support Network

George Fox University uses a robust referral and support system, Fox360, to learn about students who are experiencing various student success concerns. Students who are referred by a professor, other employee, or fellow student will be contacted by a member of our Student Support Network to explore the student's situation, develop a plan, and connect with relevant campus resources. GFU community members who have a concern about a student's well-being can submit an aleart by going to fox360.georgefox.edu. Our goal is to provide 360° care for students as they navigate their college experience. For more information see ssn.georgefox.edu or contact Rick Muthiah, Director of Learning Support Services.

Health and Safety Considerations

Please review the entirety of the university's official COVID-19 web page for the most up-to-date community guidance.


Grading Scale

The final course grade will be based on:

Graded course activities will be posted to Canvas. Take care to read the specifications carefully and proceed as directed. Failure to pay attention to detail will often result in few to zero points being awarded on a given activity.

Grades will be updated as often as possible; you are encouraged to use the "What-If" functionality to calculate your total grade by entering hypothetical scores for various items.

Note that some graded activities in this course will be submitted via GitLab.

Tentative Schedule

Week 1 · Mon


C++: Ch. 1.1–1.4

Week 1 · Wed

C++ Primitive Types

C++: Ch. 2.1–2.2

Week 1 · Fri

C++ Compound Types

C++: Ch. 2.3

Week 2 · Mon

Martin Luther King, Jr. Day—no classes

Week 2 · Wed

C++ Constants

C++: Ch. 2.4–2.5

Week 2 · Fri

C++ Library Types

C++: Ch. 3.1–3.4

Week 3 · Mon

C++ Arrays and Dynamic Memory

C++: Ch. 3.5–3.6, 12.1.2, 12.2.1

Week 3 · Wed

C++ Expressions and Statements

C++: Ch. 4–5

Week 3 · Fri

C++ Functions and Exception Handling

C++: Ch. 6, 18.1

Week 4 · Mon

Introduction to OOP and UML

UML: Ch. 1–2

Week 4 · Wed

UML Class Diagrams

UML: Ch. 3

Week 4 · Fri

UML Sequence, Use Case, and State Diagrams

UML: Ch. 4, 9, 10

Week 5 · Mon

Additional UML Diagram Notation

UML: Ch. 5

Week 5 · Wed

Additional UML Diagram Types

Week 5 · Fri

C++ Classes and Namespaces

C++: Ch. 1.5, 2.6, 7.1, 18.2

Week 6 · Mon

C++ Access Control and Encapsulation

C++: Ch. 7.2, 7.3.4, 7.4

Week 6 · Wed

C++ Unit Testing

Week 6 · Fri

Mid-semester break—no classes

Week 7 · Mon

C++ Constructors

C++: Ch. 7.5

Week 7 · Wed

C++ Static Members

C++: Ch. 7.6

Week 7 · Fri

Midterm exam

C++: Ch. 1–7
UML: Ch. 1–5, 9–10

Week 8 · Mon

Midterm exam postmortem

Week 8 · Wed

C++ Copy Constructors, Copy-Assignment, and Destructors

C++: Ch. 13.1

Week 8 · Fri

C++ Overloaded Operators

C++: Ch. 14.1

Week 9 · Mon

C++ I/O, Arithmetic, and Relational Operators

C++: Ch. 14.2–14.3

Week 9 · Wed

C++ Assignment, Subscript, and Increment/Decrement Operators

C++: Ch. 14.4–14.6

Week 9 · Fri

C++ Function-Call and Conversion Operators

C++: Ch. 14.8–14.9

Week 10 · Mon

C++ Object-Oriented Programming

C++: Ch. 15.1

Week 10 · Wed

C++ Base and Derived Classes

C++: Ch. 15.2

Week 10 · Fri

C++ Virtual Functions and Abstract Base Classes

C++: Ch. 15.3–15.4

Week 11 · Mon

C++ Access Control and Inheritance

C++: Ch. 15.5

Week 11 · Wed

C++ Class Scope and Inheritance

C++: Ch. 15.6

Week 11 · Fri

C++ Copy Control and Inheritance

C++: Ch. 15.7

Week 12 · *

Spring break—no classes

Week 13 · Mon

C++ Library: I/O

C++: Ch. 8

Week 13 · Wed

C++ Library: Containers and Algorithms

C++: Ch. 9–11

Week 13 · Fri

C++ Library: Dynamic Memory

C++: Ch. 12

Week 14 · Mon

C++ Templates

C++: Ch. 16.1

Week 14 · Wed

C++ Template Arguments and Overloading

C++: Ch. 16.2–16.3

Week 14 · Fri

C++ Variadic Templates and Specializations

C++: Ch. 16.4–16.5

Week 15 · Mon

Introduction to Design Patterns

Week 15 · Wed

Creational Patterns

Week 15 · Fri

Structural and Behavioral Patterns

Week 16 · TBD

Final exam

C++: *
UML: *

This page was last modified on 2024-01-06 at 16:33:44.

Copyright © 2015–2024 George Fox University. All rights reserved.