CSE 432: Object-Oriented Software Engineering
Fall 2009

Professor : Glenn David Blank     Office: 328 Packard Lab    Phone: 758-4867
Hours: TTh 1:20-2:20pm or by appt   E-mail:    Website: www.cse.lehigh.edu/~glennb/

Catalog course description: Design and construction of modular, reusable, extensible and portable software using statically types object-oriented programming languages (Java, C++, Eiffel). Abstract data types; genericity; multiple inheritance; use and design of software libraries; persistence and object-oriented databases; impact of object-oriented programming on the software life cycle. (In recent years, the course has put more emphasis on the software development process, agile, unified and extreme programming, theUnified Model Language (UML), Java and C#.)
Prerequisites: Familiarity with a high-level programming language and data structures
Textbooks:
    Craig Larman, Applying UML and Patterns, 3rd Edition, Prentice-Hall, 2007. Required. The following online books are recommended:
    Bruce Eckel's Thinking in Java,4th edition, with JDK 2 code, is available for free, electronically.
    Bruce Eckel's Thinking in C++, 2nd edition, a recommended textbook, is available for free, electronically.
Goals and requirements:
    1) To learn object-oriented (OO) analysis and design using UML and other techniques.
         Students will practice OO A/D techniques with individually homework exercises:   20%
    2) To learn how to OO languages support abstraction and polymorphism.
         Students will practice class implementation with dynamic binding in a Java, C++ or C# program: 10%
    3) To learn an agile software process, with multiple iterations, design patterns, test-driven development & pair programming.
       Student teams will identify real world customers for project requiring OO analysis, design and programming: 60%
       Team Project Roles, Deliverables and Grading Criteria: please review!
       Team Project Role Assessments (HTML file) (or as Word file, with each role on a separate page).
        Each student should evaluate him/herself and each other person with whom he interacts in each role,
        and email these assessments to me at the mid-semester project handoff and with the final project submission.
    4) To improve communications skills in the contect of software development (crucial!)
        Students will present project ideas, analyses, designs, prototypes, etc., through the semester: 5%
    5) To explore specialized topics in OO software, such as Eclipse vs. Netbeans vs. Visual Studio, Servlets, JDBC,
        components and Javabeans, distributed objects and CORBA, J2EE, .NET, SOAP, JavaFX, etc.
        Students will present specialized topics (preferably with demos), after conferring with me in advance: 5%


Syllabus of topics, readings and project due dates:
Aug 25, Course objectives, Software life cycles, Larman chapter 1
Aug 27, Agile software development process, Larman chapters 2 and 3
Aug 30, submit project ideas (a paragraph describing a possible project with a real world customer)
Sept 1, Inception, discuss project ideas, Larman chapter 4
Sept 3, Requirements and use cases, Larman chapters 5 and 6
Sept 7, Submit ATM requirements & use cases
Sept 8, Other requirements, discuss ATM requirements & use cases, form project teams, Larman chapter 7
Sep 10, Domain modeling with UML and CRC cards, Larman chapters 8 and 9 and 14.6 (pp. 218-219)
Sep 15, Polymorphism, Larman chapter 25.1 (just pp. 414-421), submit & project inception requirements & use cases
Sep 17, System sequence diagrams, UML tools, Larman chapters 10 and 22, Eclipse UML2 modeling and/or Netbeans UML student presentations?
Sep 22, Contracts, ADTs and Assertions, Larman chapter 11, submit domain analysis exercises
Sep 24, Object design, Larman chapters 12, 13 and 14
Sep 28, Submit ADTs for fruit problem
Sep 29, Project management and cost estimation, Larman chapter 40
Oct 1, UML interaction and class diagrams, Larman chapters 15 and 16
Oct 6, Pacing break
Oct 8, GRASP patterns, Larman chapters 17 and 18
Oct 13, Mapping design to code, submit & discuss project domain models, CRC cards & contracts, Larman chapters 19&20
Oct 15, Test-driven programming with Junit, Refactoring, Larman chapters 21
Oct 16, Each student submits Team Project Role Assessments via email
Oct 20, More OO design, Larman chapters 23, 24 and 25
Oct 22, GoF design patterns, Larman chapter 26
Oct 27, GUI in Java with AWT and Swing; threads and network programming?
Oct 29, OO web development with servlets (Dr. Jim Femister)
Nov 3, UML activity diagrams and state machines, Larman chapters 28 and 29
Nov 5, Domain model refinment, Larman chapters 30 and 31, submit & discuss 2nd iteration of projects
Nov 10, Architectural analysis, Larman chapters 32 and 33
Nov 12, Logical architecture refinment, Larman chapters 34
Nov 17, Package design, Larman chapter 35, student presentation of JDBC?
Nov 19, Failover, Proxy, Abstract Factory design patterns, Larman chapter 36, student presentation of Javabeans?
Nov 24, Persistence, Larman chapter 37, submit & discuss 3rd iteration of projects
Dec 1, Distributed objects, CORBA, J2EE, SOAP, student presentations of special topics
Dec 3, Ditto
Dec 14 or 15 (TBD): Final projects submitted and presented, each student submits Team Project Role Assessments via email


Student projects from previous years:
Fall 2008:

Earlier:
Lecture notes and assignments:
The following lecture notes are from the Fall of 2006, which I reorganized completely in 2008:
Software tools and tutorials:
Object-Oriented Software Engineering:
Java FAQs, Tutorials and Sample Code:

C++ FAQs and Tutorials:

C++ class libraries:


Revised: August 19, 2009