ECE 517 Object-Oriented Design and Development
3 Credit Hours
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.
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
UPDATED 12/4/2019