T B H P N

Planning Software Design Courses

"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 courses, all associated with some aspect of software design. They are taught on a regular schedule, most once each year. The sequence provides a thorough preparation for students intending to work in industry as software developers and software architects.

Software Design 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. CIS554 - Object Oriented Programming in C++
    Taught by other CSE faculty
    Fall Semester
    Survey of C++ Programming. Take if you have not had much programming experience.
  2. CSE681 - Software Modeling and Analysis
    Fall Semester
    Software Architecture, strategy level design supported by UML modeling, threads, queues, distributed systems
    Midterm, two reports, three software projects, prototypes.
  3. CSE686 - Internet Programming (this course is being taught by other faculty since Spring 2016)
    taught by other CSE faculty
    Spring Semester
    Client and Server side programming models, HTML, XSL, CSS, ASP.Net MVC, Entity Framework
    In-class labs, one large final project to build a web site and web service.
  4. CSE687 - Object Oriented Design (CSE Core Course)
    Fall and Spring Semesters
    C++ language, standard library, tactical level design and design principles
    Midterm, four challenging software projects.
  5. CSE775 - Distributed Objects Processing
    Spring Semester
    Win32 Systems programming, Component Object Technology, COM, ActiveX, .Net Controls, cloud computing, mobile apps, JavaScript frameworks.
    Midterm, one individual project, one larger project - small team effort that explores some interesting technology.
    CSE687 - OOD is a corequisite.
  6. CSE776 - Design Patterns
    Fall Semester
    Sophisticated, reflective view of Object Oriented Design at both the strategy and tactical levels,
    In-class presentations, small amount of software development.
    Prerequesites are either CSE681 - SMA or CSE687 - OOD. No exceptions.
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 source code you generate.

Course Sequence:

I recommend that full time students in Computer Engineering take these courses in the following order:
  1. Fall:
    CSE681 - Software Modeling and Analysis
    CSE674 - Advanced Data Structures and Algorithms (Core Course)
    CSE664 - Introduction to System on a chip Design (VLSI Design)
    Other Elective courses:
  2. Spring:
    CSE687 - Object Oriented Design (Core Course) - taught both Spring and Fall
    CSE661 - Advanced Computer Architecture (Core Course) - taught both Spring and Fall
    CSE686 - Internet Programming if there is room
    Other Elective courses:
  3. Fall:
    Any core course you haven't taken yet
    CSE776 - Design Patterns (Prerequisite: either CSE681 or CSE687)
    Other Elective courses:
  4. Spring:
    CSE686 - Internet Programming
    CSE775 - Distributed Objects
    It's a good idea to make your last semester fairly light so you can spend a lot of time interviewing for a full time job.

Program Requirements:

Each Computer Engineering student's Program of Study must satisfy the following:
  1. Consist of no less than 30 credits, almost always by taking ten 3 credit courses
  2. Include these four core courses:
  3. You must include 18 credits from your program of study, e.g., Computer Engineering, Computer Science, or Electrical Engineering. No more than 3 credits of independent study may be applied to your program without prior approval of the faculty via a petition form submitted to the Program Director. The remaining credits may come from either of our other two programs, e.g., Computer Science and/or Electrical Engineering. With Program Director's approval, you may take a course from outside the department if it is relevant to your program and an equivalent course is not offered by our department.
  4. You may not include more than two 500 level courses.
    The only one of those I recommend for SW Track students is CIS554 - Object Oriented C++ Programming.
  5. There is a Master's Thesis Option that may satisfy up to six credits. For this option you must conduct, document, and defend a significant piece of research under the guidance of a member of the EECS faculty.
  6. You may add Curricular Practical Training experiences, usually full-time lasting for one semester, usually in the Summer, and awarded one credit. These do not decrease the number of courses included in your program of study and do not count toward the required 30 credits.

Academic Calendar & Graduate Catalogs:

Academic Calendar pdf file
Graduate Catalog - Computer Engineering
Graduate Catalog - Computer Science
Graduate Catalog - Electrical Engineering

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. campus at night