Software Engineering: G22-2440-001

Recent Changes

The list of lectures has been updated.

November 4, 2002: From this point forward, each project group should be prepared to present a milestone report at each class meeting. This consists of a written report to be handed in to the instructor and a verbal report made to the class. You will be graded on these reports.

The course mailing list home page is here.


Software engineering is the practice of building quality software in a predictable and reliable manner. This course moves beyond programming as an individual art into the real of collaborative science. The brilliant individual programmer can accomplish much, but ten capable programmers working together can do much more.

While there are many rigorous methodologies that claim to offer the best solution for software engineering, in fact most approaches and tools have a mixture of strengths and weaknesses. By analogy with physical engineering, reinforced concrete may be an excellent all-around building material, but it is poorly suited to creating attractive window frames. So it is with software engineering: the most appropriate tool must be used for each task.

This course will thus present a variety of tools, in the context of team production of publicly releasable software. The goal will be for each student to have had a hand in building a complete and useful application, one that can be released into the wilderness of real-world use.


Class Meetings

Monday evenings, 5pm to 7pm. Warren Weaver Hall, room 102.

Contacting the Professor

Office Hours

Room 401, Warren Weaver Hall, from 4pm to 5pm.

Also by appointment.


My personal account or my NYU account.


My full contact info is on my personal home page. Yes, you can try stalking me if you want, but I won't make it completely easy for you by putting all that personal stuff here. :-)





As lectures are written, they will be linked in from this page.


Monday, September 9, 2002

The first lecture. Covering an introduction to the topics and course logistics.

Monday, September 16, 2002

Specifications. Components, encapsulation, and affordances. Polymorphism.

Monday, September 23, 2002

Design patterns. What they are, and how to apply them. Eight basic patterns were covered:

Monday, September 30, 2002

The instructor will be out of town. The assignment due today should be emailed to the instructor. The assignment that would normally be handed out today is already available in lecture 3.

Guest lecture: Frank Tip, of IBM. He will be introducing UML diagram notation. Lecture notes will be derived from a lecture introducing UML (starting at page 20) and a lecture describing UML class diagrams. The lecture as presented in class is here in PDF.


Monday October 7, 2002

Today's lecture.

Monday, October 14, 2002

In this class, we went through an application of design patterns, showing how a graphical version of /bin/ls might make use of particular patterns.

Monday, October 21, 2002

This class meeting was devoted entirely to student presentations.

Monday, October 28th, 2002

The first part of the class was devoted to remaining student presentations. The second half showed how to start from a specification and begin to produce a design from it.


Monday, November 4, 2002

Today's class will present initial package diagrams for each project. Today's lecture reviews top-down design and discusses user interface design in that context.


Project: Final presentation