ECE373

Object-Oriented Software Design
Fall
Designation: 
Required for CE; Technical Elective for EE
Catalog Data: 

ECE 373 -- Object-Oriented Software Design  (3 units)
Description:  Object oriented computing concepts, abstract data types, classes, methods, message passing, inheritance, object oriented design and architectures, class hierarchies, use case development, sequence diagrams, introduction to unified modeling language, object oriented programming languages and environments, polymorphism, dynamic binding, OO software implementation projects.
Grading:  Regular grades are awarded for this course: A B C D E.
Usually offered:  Fall, Spring.

Prerequisite(s): 
ECE 275
Textbook(s): 

I. Object-Oriented Modeling and Design with UML, Second Edition, M. Blaha, J. Rumbaugh, Prentice Hall, 2004.

II. C++ or Java is used; one of the following references is used:
C++: Effective Object-Oriented Software Construction: Concepts, Practices, Industrial Strategies and Practices, Second Edition, K. Dattatri, Prentice Hall, 2000, or Starting out with Java: Early Objects, 4th edition, Tony Gaddis, Addison Wesley, 2011.


Additional optional language references will be provided

Course Learning Outcomes: 

By the end of this course, the student will be able to:

  1. Understand the fundamentals of OO programming vs. procedural programming.
  2. Understand the connections between various UML diagrams for a consistent design.
  3. Perform a design criticism.
  4. Engineer and develop software systems through object-oriented methods.
 
Course Topics: 
  • Object-Oriented computing concepts, including abstract data types, classes, methods, message passing, inheritance, polymorphism, dynamic binding [6 lectures].
    Object-Oriented design and architectures, including class hierarchies, state modeling, and object models. [8 lectures].
    Introduction to the Unified Modeling Language, including use case development, sequence models, activity models [8 lectures].
    Design tradeoffs for interfaces and implementation [4 lectures]
    Advanced software architectures, including generic programming, interface definition languages, multiple inheritance [4 lectures]
  • Advanced OO projects and languages, including modeling languages [3 lectures]
 
Class/Laboratory Schedule: 

Two 75-minute lecture sessions per week.
Several homework assignments plus in-class and out-of-class activities.
In-depth project, including:

  • requirements capture;
  • design document; 
  • delivered software tests that validate requirements; and
  • live demonstration for instructor.


One mid-term in-class examination plus a final examination.

Relationship to Student Outcomes: 

(a) an ability to apply knowledge of mathematics, science, and engineering (Medium)
(c)  an ability to design a system, component, or process to meet desired needs (High)
(d) an ability to function on multi-disciplinary teams (Low)
(e) an ability to identify, formulate, and solve engineering problems (Medium)
(g) an ability to communicate effectively (Medium)
(k) an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice (High)

Prepared Date: 
Dr. Michael Marefat and Dr. Jonathan Sprinkle
Modifications By: 
1/18/13

University of Arizona College of Engineering