CSE 432:
Object-Oriented Software Engineering
Spring 2004
Professor: Glenn David Blank Phone:
758-4867 Office:
328 Packard Lab
Hours: WTh
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, 5th edition.
Prentice-Hall, 2003. (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/22 Team roles; Quality & modularity;
Classes Thomas ch
1 Mm: Why software engineering? Teams, Inheritance
1/29 Customer proposals; Life cycle models Pfleeger,
ch 2-3, Fowler ch 2 (proposals) Mm: Life cycles
2/5 Requirements and use cases Fowler ch 9 (form customer/analysts teams) Mm: Use cases
2/12 Object-oriented analysis Fowler ch
1-3 (project requirements, use cases), Mm:
CRC
2/19 Object-oriented design Fowler ch
4-17 (undo, fruit analysis) Mm:
UML
2/26
Abstract data types; present
analyses Thomas ch. 3&8
(project analysis) Mm: Abstract
data types
3/1? Introduction to Java Deitel ch. 2-3, 6, 8-11 (Fruit problem design) Mm: Objects &
classes
3/18 Java AWT, Swing, exceptions, threads Deitel ch.
13-16 (project design #1; team role assessments)
3/25 Patterns, components
and J2EE Gamma et al.
(fruit program) Mm: Design patterns
4/1 Project designs; C++ templates &
STL Eckel
C++ ch 17-22 (present project designs)
4/8 Extreme programming, testing, Junit Pfleeger, ch 8-9 Mm: Regression testing, Extreme programming
4/15 Delivery & maintenance; C++ idioms Pfleeger,
ch 10-11, S. Meyers
4/22 Distributed objects: Java Beans, CORBA… Eckel Java, ch
14-15, appendix A
4/29 Project presentations (demo
prototypes)
5/13 Final projects and team role
assessments due by