Dr. Edward Gehringer

Dr. Edward Gehringer

Computer Science

Phone: 919-515-2066
Fax: 919-513-7075
Instructor Website
Research Website

ECE 517 Object-Oriented Design and Development

3 Credit Hours

(also offered as CSC 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 [UML. 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.


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.


Required: Engineering Software as a Service: An Agile Approach Using Cloud Computing, by Armando Fox and David Patterson, Publisher: Strawberry Canyon LLC Paperback, Kindle, iBooks, or Nook edition. SeeĀ


UPDATED 12/4/2019

Computer and Software Requirements

Please review minimum computer specifications recommended by NC State University and Engineering Online.


UPDATED 10/30/2022