Software Design Courses

Revised: 29 July 2006
Home  Courses  SWTrack  Code  Handouts  StudCult  CoreTech  Books  Articles  Math  Research  CASE Projects  Project Topics  SWDev  WebDev  News  OtherLinks  SiteDesign  Graduates  AllPages  Office Hours  Seminars  Notices  Contents

CSE681-SWMAA  CSE686-IP  CSE687-OOD  CSE691-CP  CSE775-DO  CSE776-DP  CSE778-AWP  CSE784-SWS



" It is good to have an end to journey towards;
but it is the journey that matters in the end. "
- Ursula Le Guin


Courses:

I teach a sequence of seven courses, all associated with some aspect of software design. They are taught on a regular schedule, once each year. The sequence provides a thorough preparation for students intending to work in industry as software developers and software architects. Most of these courses can be counted toward a Software Track.

Course Descriptions:

These courses focus on both the strategy level of software architecture and design as well as the tactical level. Strategy is concerned with top-level structure, class relationships, data relationships, often represented using Universal Modeling Language (UML) diagrams. Design tactics are concerned with specific design principles and packaging techniques to support reusability and robustness of an implementation.
  1. CSE681 - Software Modeling and Analysis (CSE Core Course)
    Software Architecture, strategy level design supported by UML modeling, threads, queues, distributed systems
    Midterm, three reports, two software projects.
  2. CSE687 - Object Oriented Design
    C++ language, standard library, tactical level design and design principles
    Midterm, four challenging software projects.
  3. CSE686 - Internet Programming
    Client and Server side programming models, HTML, XSL, CSS, ASP, ADO
    In-class labs, one large final project to build a web site and web service.
  4. CSE775 - Distributed Objects Processing
    Component Object Technology, COM, ActiveX, .Net Controls
    Midterm, four software projects.
  5. CSE776 - Design Patterns
    Sophisticated, reflective view of Object Oriented Design at both the strategy and tactical levels,
    In-class presentations, small amount of software development.
  6. CSE778 - Advanced Windows Programming
    Graphical User Interface Design using MFC and .Net WinForms
    Select 4 out of 10 projects to complete and present at the end of the course.
  7. CSE784 - Software Engineering Studio
    Learn to make critical evaluation of software products, e.g., specification, design, implementation, and test.
    Takehome Midterm - deep evaluation of one of your products.
    Case Study - class is partitioned into teams that specify, develop, and test a large distributed system.
All of the courses, with the exception of CSE776 - Design Patterns, are project-based courses. Projects are modeled after industrial and commercial work, requiring careful design, robust implementation, and documentation of the source code you generate.

The CSE784 - Software Engineering Studio course is unique in that the class is divided into several teams that specify, design, implement, and test a large distributed project that potentially has commercial value. Students are given the roles of Program Manager, Software Architect, Test Manager, Team Leader, and Team Member.
You will find a brief view of our recent class project in Software Studio by clicking on any of these links:
Repository Testbed - 2005, ProjectCenter - 2004, Cloner - 2003, Software Foundry - 2002

Course Sequence:

I recommend that students enrolled in an 18 month Master of Science program take these courses in the following order:
  1. Fall: CSE681
  2. Spring: CSE687, CSE775
  3. Summer: CSE686, CSE776, CSE778
  4. Fall: CSE784, M.S. Project

Seminars:

  1. Testing
    The testing seminar covered the John Robbins book "Debugging Applications in .Net and Windows". It has now finished - you can find PowerPoint slides for all the chapters by following the link above.
  2. Brown Bag Seminar
    This seminar will start at the beginning of the Fall Semester. In it, participants will make presentations on a variety of topics. The idea is the we will talk about things we are currently working on or are interested in enough to devote considerable effort to make a good presentation.

Course Handouts:

I've set up a collection of directories on the college server to provide access for current and former students to selected notes, references, and code. Be warned that the code is discussed in class and much of it will have meaning, only to that class. However, feel free to browse, and download anything you wish: Handouts

You should also note that much of the code consists of brief prototypes, intended to get a class started on one of our assigned projects. The prototypes are just that, not finished pieces of work. There are, however, quite a few finished modules, and if you find them useful, then feel free to use them as you wish - for education, or for commercial gain. You will notice that I occasionally put copyright notices on my code, but immediately grant you all rights except the right to publish.