The site serves, for current and former students, as a portal into a sequence of
software design courses I've taught for the last twenty five years. This page links to
descriptions of each of the courses and to folders containing presentations and code
used as an integral part of these courses.
I am retiring at the end of the 2019 Spring Semester. It's been a great ride. I've been
extraordinarily lucky to have met and worked with so many great people. All my students (usually about)
200 each year, are surrogate sons and daughters. I enjoy almost every minute working with them.
I expect this site will stay up for a while after I leave, partly because on-line courses, taught by
other faculty, use this site for their lecture and project materials. I hope you find the site useful.
Infrastructure for this site - the collection of its pages and linking structure - has been evolving for years, and that process continues.
The goal of the site is to organize notes, presentations, demonstration
code and reusable code modules. The content is intended to supplement course lectures and you will need to make frequent references as you
take courses from the sequence described here.
Beginning with the end of the Fall 2015 semester we started recording videos of the lectures and help sessions for both
CSE681 - Software Modeling and Analysis and for CSE687 - Object Oriented Design. Most lecture pages have links
to their videos. There is also a Video Page that orders all the video links and gives
a few words about the contents of each.
I'm now (summer 2016) adding course descriptions and lecture material for on-line versions of CSE681 and CSE687. The residential
courses operate on a Semester system. But, the on-line courses operate on a Quarter system, and so the number of lectures will
change. Also, the model for on-line courses is that, for each week, the first lecture will be recorded and will be
based on the new material I'm adding. The second lecture will focus on student questions and review. For that I am
not adding any material.
The consequence of this model of the Quarter system course is that there are about half the number of lecture pages
as for the residential course. Residential students may find it useful to use the on-line materials to study for
course examinations as that material is more focused on the ideas whereas a lot of the residential lecture materials
also focus on professional practice.
Using code and notes from this website:
Most of the code linked on pages of this site has been developed with Visual Studio. I am now using Visual Studio 2017
so you will need this latest version to build a lot of the code here.
You can download the free Visual Studio Community Edition here.
There is a brief summary of Visual Studio features on that page.
May I? - Yes, you may use any code and notes you find here for the classes covered by this site. It is my intent
that you use whatever you find useful to help with your project assignments. For other courses you
must check with the instructor of that course.
There is a standard courtesy protocol you should follow (and should follow regardless of the source of the code).
If you change anything, even a single character, put your name as the author and list the original author as the
source. You thereby take responsibility for any breakage that you have caused to the code, and irate users will
descend on you, not on the innocent original author. If you don't change anything then leave the original author
For all current and former students, I am slowly putting zip archives in the various code folders, so that you can get the
entire contents simply by using the "send to" or equivalent selection on the right-click context menu in Edge, Chrome, Internet Explorer, FireFox, ...
If you don't find a zip file and are a current or former student, send me an email and I will put the archive you want in its code folder.
I teach software design courses on a regular schedule, each offered once each year:
You will find 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 will find links and
descriptions of much of the code here.
These folders have more content than a simple directory organization can properly
support. This site is trying to provide a grand scheme for improved
accessibility. The site is now in its twentyth year and its contents and structure are reasonably current.
Internships and Master's Theses
The Department of Electrical Engineering and Computer Science has three programs: Computer Engineering,
Computer Science, and Electrical Engineering. Master's Projects are no longer required, but in all of these
programs you have the
option of augmenting your Program of Study with internships and/or a Master's Thesis.
An internship is usually a full-time working experience that becomes part of your program of study. Many
students seek internships over the summer break. When you complete an internship you document that with a
report with your narrative about the assignments you've completed, the relationships you've had with people there,
and a brief discussion of the academic merit of this experience. Here is more information.
If you are interested in carrying out some original Master's-level research follow this
Yellow Brick Road.
Research and Development
Several students and I have recently started a small research group that focuses on
software complexity, accessibility and reuse. For details refer to this
This group consists of several Doctoral students, one or two students preparing Master's
Theses under my direction, and occasionally a student doing an Independent Study. Some of this research
extends into the classroom. For example, the
CSE784 - Software Studio class has, over several years, developed
projects that implement some of the software accessibility ideas we are exploring.
From 1978 through 1990 I taught, as an Adjunct, all Electrical Engineering courses, e.g., a variety of control system
courses, digital signal processing, complex variables, linear vector spaces, etc. None of those notes
are in electronic form, and so do not appear in this site.