Skip to main content

CSC 517 Object-Oriented Design and Development

3 Credit Hours

(also offered as ECE 517)

The design of object-oriented systems, using principles such as the GRASP principles, and methodologies such as CRC cards and the Unified Modeling Language [UL. Requirements analysis. Design patterns Agile Methods. Static vs. dynamic typing. Metaprogramming. Open-source development practices and tools. Test-first development. Project required, involving contributions to an open-source software project.

Prerequisite

Undergraduate degree in computer science and knowledge of high-level language programming; familiarity with a wide variety of programming languages such as Java, C, Python, Lisp, Prolog and Ada or consent of the instructor.

Course Objectives

The goals for this course are to:

  • learn to design programs with classes that work together with maximum cohesion and minimum coupling,
  • learn how design methodologies, such as CRC cards, and the Uniform Modeling Language, can be used to express the interaction between program components.
  • understand the differences between statically and dynamically typed object-oriented languages, and be able to program in both,
  • learn how an understanding of software design patterns can be used to structure programs so that they are robust and extensible, and
  • appreciate how programs can be restructured (“refactored”) to improve their adherence to the principles of good design.

Textbook

Required: Engineering Software as a Service: An Agile Approach Using Cloud Computingby Armando Fox and David Patterson, Publisher: Strawberry Canyon LLC Paperback, Kindle, iBooks, or Nook edition. See http://saasbook.info

UPDATED 10/30/2022