CSE 432: Object-Oriented Software Engineering
Catalog course description: Design and construction of modular, reusable,
extensible and portable software using statically types object-oriented programming
lanugaes (Eiffel, C++, Objective C). 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.
Recently, the course has put more emphasis on Unified Model Language (UML),
Extreme programming, and Java.
Syllabus for CSE432, for Spring 2006, (in Word format, formatted for printing one page)
Textbooks online (also see links from syllabus):
Term Project Grading Criteria includes
criteria for evaluating analysis/design, program/testing, and other roles.
Team Project Role Assessments (HTML file) (or
as Word file, with each role on a separate page).
Each person should evaluate each other person with whom he interacts in each
role, and submit assessments to project manager/librarian before he or she submits
the team's analysis, design and implementation.
Student projects, Spring 2005:
Documentation for student projects from previous years:
Lecture notes and assignments:
- Lecture 1a: Course objectives (Powerpoint).
- Lecture 1b: Classes in C++ (Powerpoint).
- Handout for lecture 1b/c: a few C++ code fragments,
illustrating data abstraction, inheritance and dynamic binding(Word document)
- Lecture 2: Why software engineering? (Powerpoint).
- Lecture 3: Requirements and Use Cases (Powerpoint)
- Lecture 4: Software process life cycles (Powerpoint).
- Lecture 5: Use cases to Classes (OOA) (Powerpoint).
- Lecture 6: UML and OO analysis (Powerpoint).
- Kent Beck's 1989 OOPSLA
paper on CRC cards
- Class diagram,
Fowler & Scott, Figure 4-1.
- Composition and
aggregation arrows, Fowler & Scott, Figure 6-6.
- Composition and
aggregation in boxes, Fowler & Scott, Figure 6-7.
- Sequence diagram,
Fowler & Scott, Figure 5-1.
- Sequence diagram
for concurrency, Fowler & Scott, Figure 5-3.
- Collaboration
diagram, Fowler & Scott, Figure 5-4.
- "Still Life with Fruit" assignment (as Word document), for printing
- Lecture 7: Object-oriented design (Powerpoint)
- Lecture 8: Lecture on Abstract Data Types (Powerpoint)
- Lecture notes on Java (HTML)
- Lecture notes on Java AWT (HTML). Lecture
on AWT and Swing (Powerpoint).
- Java Arrays and Collections (Powerpoint)
- Lecture on Exceptions in Java
(Powerpoint) Lecture on Assertions
in Java (Powerpoint) Lecture on JDK 1.5
(Powerpoint)
- Java threads and networking with URLS and sockets in Java (Powerpoint)
- Lecture on OOtesting (Powerpoint). Lecture
on Junit (Powerpoint).
- Lecture on JDBC (Powerpoint).
- Lecture on components, COM, ActiveX, JavaBeans, CORBA and SOAP (Powerpoint)
- Catie Welsh on J2EE and Enterprise JavaBeans (Powerpoint)
- Cost estimation (Powerpoint)
- Project management (Powerpoint)
- Lecture on Design Patterns (Powerpoint)
- .NET and C# (Powerpoint)
- LehighUML Eclipse plug-in (Powerpoint, John Pequeno et al.)
The following lecture notes are from 2005 or earlier.
- Object-oriented analysis (Word document)
- Eiffel and design by contract, assertions
(Word document)
- Lecture on C++ templates and STL (Word document).
Concordance program, STL example (C++ source code)
- Lecture on issues with inheritance (Word document)
- Lecture on C++ idioms (Word document)
- Lecture on exception handling and Run-Time Type Information
(RTTI) in C++ (Word document)
- Lecture on networking with URLs and sockets in Java
(Word document)
- Client-server quiz example, illustrating sockets
in Java (zip file)
Software tools and tutorials:
- Java Development Kit, from Sun's JavaSoft.
- Java 1.4 documentation:
You find information about all the classes and methods of JDK here.
It's also on the campus LAN at Y:\lib\JDK14\docs\api\index.html.
If you want your a copy on your own PC, you can download the JDK documentation, courtesy of Sun's JavaSoft.
- Rational Rose evaluation.
Rational Rose is probably the most widely used tool for visual modeling of object-oriented systems, using UML.
The complete Rational Rose suite is available on campus. (A good topic for presentations!)
You can download a trial version that lasts 15 days from this site.
- Plastic 1.2, An object-oriented
visual modeling tool based on UML (one of many), trial version. (Plastic 1.1 lite is available on campus via Wininstall.)
- Rhapsody Modeler, Another free object-oriented visual modeling tool for UML.
This one features code generation for Java or C++. Try it and let me (or the whole class) know what you think!
- An older OO CASE Tool, downloadable free to students and educators, based on Coad/Yourdon/Nicola methodology.
- Softera SoftModeler evaluation.
More competition for Rational Rose, supports UML modeling for Java.
- DrJava, a free Java Development Environment, designed primarily for students.
Features an interactive interpreter for Java expressions, a modern editor, a good debugger,
and built-in support for JavaDoc and Junit. Runs stand-alone or as a plug-in for Eclipse.
Recommended!
- JavaEdit, a simple Java Development Environment.
Unzip this file (with WinZip), then see the README file.
- ATM example in Java (a zip file containing .java files)
- Blackjack example in Java with Swing GUI (a zip file containing .java files)
- Console.java, a class that encapsulates standard I/O
- Input, Assertion and GUInput class files.
After unzipping this file, you can either 1) copy the three .class files in <jdk13>\jre\classes\ucomp (where <jdk13> is the
folder where you have the JDK installed, such as C:\jdk1.3). In this case, you need to the statement "import ucomp.Input"
at the top of your programs. Or 2) copy the .class files you need into the same folder as the
source code for your programs (for example, if your program is in folder H:\ucomp\Interactive, then copy Input.class and Assertion.class
into folder H:\ucomp\Interactive). In this case, you must not have this
statement in your program. Note: Assertion.class won't work with JDK 1.4 and Input.class and GUInput.class both require Assertion.class,
so use JDK 1.3.
- Java Web Start
installs full-featured Java applications via the Web
- HelpBreeze JavaHelp
Edition, a dedicated authoring tool specifically designed for creating
JavaHelp systems.
- Directory of example Java files
- LOOKOUT,
an integrated programming environment for C++, developed by yours truly,
based on the DJGPP port of the GNU gcc compiler for DOS and MicroEmacs
for Windows. In addition to a full gcc compiler, debugger, the info
documentation system, the standard template library, and other tools,
LOOKOUT comes with a small Emacs-like editor with multiple buffers,
and for beginners, a simple class library and on-line error message
help. (About 8 megabytes download, 20 megabytes installed.)
Object-Oriented Software Engineering:
Java FAQs, Tutorials and Sample Code:
C++ FAQs and Tutorials:
- Marshall Cline. C++ FAQ LITE -- Frequently Asked Questions.
http://www.cerfnet.com/~mpcline/c++-faq-lite/
- Yahoo. A list of C++ resources (FAQs, pointers, tutorials, libraries,
etc.) http://www.yahoo.com/Computers_and_Internet/Programming_Languages/C_and_C__/C__/
- Brain, Marshall & Campbell, Kelly. Understanding C++:
Introduction (assumes modest knowledge of C) www.iftech.com/oltc/cpp/cpp1.stm
- Dodrill, Gordon (Coronado Enterprises).C++ Language Tutorial
(also assumes modest knowledge of C) www.swcp.com/~dodrill/cppdoc/cpplist.htm
- Holzapfel, Roland. Object-Oriented Programming (emphasis
on distributed objects) www.igd.fhg.de/~holzapfe/old/papers_se/oop/index.html
- Olsson, Niklas. Master C++. A tutorial
which does not assume C background. Starts with "Hello, World" and you
can download examples. Features Windows programming. http:/www.geocities.com/SiliconValley/Bay/1055/c.htm%22%3ewww.geocities.com/SiliconValley/Bay/1055/c.htm
- Weidel, Johannes. The Standard Template Library Tutorial (recommended)
http://www.cse.lehigh.edu/resources/STL-tut/prwmain.htm
- Kirman, Jak. A modest STL Tutorial www.cs.brown.edu/people/jak/proglang/cpp/stltut/tut.htm
C++ class libraries:
Revised: January 17, 2005