CSE 432:
Object-Oriented Software Engineering
Spring 2005
Professor: Glenn David Blank Phone:
758-4867 Office:
328 Packard Lab
Hours: MTWTh
Course Description: Design and construction of modular, reusable,
extensible and portable software using statically typed object-oriented
programming languages (Eiffel, C++, Java). Abstract data types; genericity; multiple inheritance; use and design of
software libraries; persistence and object-oriented databases; impact of OOP on
software life cycle.
Prerequisites: Familiarity with a high-level programming language
and data structures
Texts
(first two strongly recommended; others available on reserve
Fairchild-Martindale library or via the web):
Martin Fowler, UML Distilled, 3rd edition,
Addison-Wesley, 2004.
Deitel and Deitel. How to Program: Java, 6th edition.
Prentice-Hall, 2004. (Also How to Program: C++)
Bruce Eckel, Thinking in Java, 2nd
edition, Prentice Hall, 2002. (Available online at http://www.mindview.net/Books/TIJ/)
Bruce Eckel, Thinking in C++, 2nd edition, Prentice Hall,
2002. (http://mindview.net/Books/TICPP/ThinkingInCPP2e.html)
Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, Design Patterns,
Addison-Wesley, 1995.
Pete Thomas & Ray Weedon, Object-Oriented
Programming in Eiffel, Addison Wesley, 1995.
Scott Meyers, Effective
C++, 2nd Edition, Addison-Wesley, 1997.
Requirements:
Undo analysis, and analysis, design, and implementation of
"fruit" problem: 8% each
Project presentations:
6%
Project: substantial software development in Java or C++: 70%,
apportioned by points as follows:
Extra
credit:
seminar presentation on a topic related to the course, i.e., tools (Eclipse,
Rose, Junit), research issues
Syllabus:
1/18-20 Team roles; Quality & modularity; Classes
Thomas ch 1 Mm:
Why software engineering? Teams, Inheritance
1/25-27 Customer proposals; Life cycle models Pfleeger,
ch 2-3, Fowler ch 2 (proposals) Mm: Life cycles
2/1-3 Requirements and use cases Fowler ch 9 (form customer/analysts teams), Mm: Use cases
2/8-10 Extreme programming, O-o analysis Fowler ch
1-3 (project requirements, use cases), Mm:
CRC
2/15-17 Object-oriented design Fowler ch 4-17 (undo, fruit
analysis) Mm:
UML
2/22-24
Abstract data types; present analyses Thomas ch. 3&8 (project
analysis) Mm: Abstract
data types
3/1-3 Introduction to Java Deitel ch. 2-3, 6, 8-11 (Fruit problem design) Mm: Objects & classes
3/15-17 Java AWT, Swing, exceptions, threads Deitel ch.
13-16 (project design #1; team role assessments)
3/22-24 Patterns, components
and J2EE Gamma et al.
(fruit
program) Mm:
Design patterns
3/29-31 Project designs; Project management (present project designs)
4/5-7 Testing, Junit Pfleeger, ch 8-9 Mm: Regression testing,
Extreme programming
4/12-14 Delivery & maintenance; C++ idioms Pfleeger,
ch 10-11, S. Meyers
4/19-21 Distributed objects: Java Beans, CORBA… Eckel Java, ch
14-15, appendix A
4/26-28 Project presentations (demo prototypes)
5/12 Final projects and team role
assessments due by