Dr. Edward Gehringer
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.
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.
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 http://saasbook.info
Computer and Software Requirements
Please review minimum computer specifications recommended by NC State University and Engineering Online.