Instructor

Dr. Edward Gehringer

Dr. Edward Gehringer

Computer Science

Phone: 919-515-2066
Fax: 919-513-7075
Email: efg@ncsu.edu
Instructor Website

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 Computing, by Armando Fox and David Patterson, Publisher: Strawberry Canyon LLC Paperback, Kindle, iBooks, or Nook edition. SeeĀ http://saasbook.info

 

Computer and Software Requirements

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

 

UPDATED 10/30/2022