The University of Colorado at Boulder presents

Software Engineering Certificate

A certificate consisting of graduate level courses in
software engineering for stand-alone, concurrent (multi-program), and distributed systems

Note: The lectures are offered from CAETE by downloading recorded lectures. The courses have password-protected web sites with a variety of course materials and support available. See below for more information.

Offered by the                                                                                                    
Department of Electrical and Computer Engineering                                                
and the Division of Continuing Education via the Center for Advanced Engineering and Technology Education (CAETE) of the
University of Colorado at Boulder

For additional information about technical content beyond what is described below, contact Prof. Ruth Dameron , 303-492-8369.

Table of Contents for this page:

Reasons to enroll in this graduate-level certificate program
The Ongoing Need for Increased Software Engineering Knowledge
Overview of the certificate
Course Descriptions
     Software Engineering of Stand-Alone Programs, ECEN5543
     Software Engineering of Concurrent Systems, ECEN5643 (formerly SW Eng of Multi-Program Systems, ECEN5043)
     Software Engineering of Distributed Systems, ECEN5743 (formerly ECEN5053)
Tentative Schedule of Courses
Certificate and course registration details

The Ongoing Need for Increased Software Engineering Knowledge

From the software professional's perspective:

If you are a software professional in development, test, or maintenance, you can benefit from this certificate program whether you have many years of experience or very little experience.  As an experienced software professional, you have spent years in a field that has maintained a relentlessly rapid rate of change for decades.  It would have been impossible to stay current in all aspects of your field.  If you have very little experience, you may be a new graduate in computer science or engineering or perhaps you were able to enter this field during the "internet gold rush" with little or no software-related education.   In either case, you may find that the challenges of your work assignments exceed your preparation.  In a typical computer-related undergraduate curriculum, it is not possible to devote enough credit hours specifically to software engineering to address all of the topics listed in the course descriptions below.

From discussions with software project managers, architects, test managers, and others, it is clear  that people with the education comprising this certificate would be considered a real hiring "find”.  Research shows that, as a software professional, you are most strongly motivated by the challenge of the work itself and the satisfaction that arises from meeting that challenge well.  These courses will increase your ability to understand and solve software problems well.

From a business perspective:

Software Engineering Certificate

The Software Engineering Certificate is a graduate-level certificate program consisting of three courses:  Software Engineering of Stand-Alone Programs, Software Engineering of Concurrent Systems (formerly named SW Eng of Multi-Program Systems), and Software Engineering of Distributed Systems.  Each course carries 3 semester hours of academic credit at the graduate level. All credits earned in the certificate can be transferred to an appropriate graduate engineering program at CU-Boulder.  Each course also has an undergraduate number to allow undergraduates to enroll.    

If you are not interested in earning academic credit, you may choose to take the course for "No Credit". This grading option creates a record of the course on an official University of Colorado transcript with the letters "NC" listed for the grade. Or if you are not interested in earning a grade, but still need proof of successful completion of the course, you may choose the "Pass/Fail" grading option.  Note:  Some corporate tuition reimbursement programs require a particular minimum grade and, therefore, the Pass/Fail grading option is not acceptable to those companies.

Please note, if you are interested in earning the Certificate, you must take all courses with the letter-grade option and pass them with a grade of B- or better. Certificate students cannot take any of the courses for Pass/Fail or NC (no credit).

For information on how this certificate fits into a graduate degree in Electrical and Computer Engineering, contact Adam Sadoff of the Department of Electrical and Computer Engineering. Computer Science graduate students should note that ECEN5543 is crosslisted as CSCI 5548. The other courses have recently been proposed for crosslisted CSCI numbers also. Meanwhile, Computer Science students may verify that ECEN 5043 and ECEN 5053 are approved for students in CS master's programs.  If you are an undergraduate student and are interested in taking these courses, you may register for them using the undergraduate course number.  Undergrads with further questions should contact Valerie Matthews  in the Department of Electrical and Computer Engineering.

Course Descriptions

Concentric circles showing relationship of courses.

Software Engineering of Stand-Alone Programs
This is the solid introductory course that covers fundamentals of modern software engineering.
Prerequisite:  Knowledge of and experience using a programming language is required.  The course and text may use Java or C++ for examples.  These languages are not taught in the course.  You will need a prior course or a way to obtain help outside the class if you need some assistance in reading these examples. The course does not require any programming. Emphasis is on requirements, design, and testing.  (Knowledge of object-oriented analysis and design are not  prerequisites; they are topics in the course.)

Topics include:

For more detailed information about this course, go to the course web site. This web site is from an earlier semester. Certain details may no longer be correct. For example, there may have been a change in textbook. The most recent offering of the course provided the web site through CULearn which is user-password protected to enable educational distribution of copyrighted materials.

Software Engineering of Multi-Program Systems (Concurrent systems)
The emphasis in this course is on related concurrent processes or programs interacting as a system on a single processor and accessing shared data.  An additional emphasis is placed on performance analysis at design time. The focus is on software engineering issues that increase the complexity of fundamental software engineering with the addition of concurrency and shared memory communication.  The topics you will learn in this course will also apply in the distributed environment.
Prerequisite:  ECEN5543 or CSCI5548 (ECEN4033 or ECEN 4583) or permission of the instructor based on an existing background in object orientation methodology.

Topics include:

For more detailed information about this course, go to the course web site. This version of the web site is from an offering in an earlier semester. The current web site for this course is under CULearn when it is active and is offline in off-semesters. The syllabus topics will be essentially the same. The textbook is Hassan Gomaa's Designing Concurrent, Distributed, and Real-Time Applications with UML.

Software Engineering of Distributed Software Systems
Distributed systems include web applications, other network environments, as well as self-contained embedded system products involving multiple processors.  In this course, you will learn about issues that exist because of the complexity of software running simultaneously and asynchronously on more than one processor.  Some topics such as reliability and response time are clearly important in simpler systems but they are addressed in this course because of the difficulty of specifying, designing, and testing such aspects in a distributed environment.  You will study design patterns that solve certain types of distributed application challanges.   An especially challenging area of distributed systems design is that of designing a system so that, after it is installed, it is possible to make changes to it.  It should be an embarrassment to the industry that systems have actually been installed that could not be modified except for the unacceptable approach of turning off all copies of all components everywhere simultaneously!
Prerequisite:  ECEN5543 or CSCI5548 (ECEN 4583) or permission of the instructor based on a background in object orientation. ECEN5643 and ECEN5743 may be taken in either order although some knowledge of concurrent programming such as from an operating systems course is helpful prior to taking ECEN5743. 

Topics include:

For more detailed information about this course, go to the course web site. This is not the most recent offering of the course. The most recent course web site is password-protected under CULearn when it is active and is therefore not accessible.

Tentative Schedule of Course Offerings

Software Engineering of Stand-Alone Programs - ECEN 5543/CSCI5548 -- Fall semester, on campus and via CAETE recordings with active course web site; Spring semester available on campus and thru the CAETE library with active course web site

Software Engineering of Concurrent Systems (formerly named SW Eng of Multiprogram Systems) - ECEN5643 - Spring semester, live webinar and via CAETE

Software Engineering of Distributed Systems -- ECEN 5743 -- Fall semester, live webinar and via CAETE

Registration  for campus-enrolled students -- follow the normal registration procedure using the 5000-level number if you are a graduate student and the 4000-level number if you are an undergraduate.

Registration for distance students must be handled through Continuing Education.

To register for the course through Continuing Education, contact them at: 303-492-5148 or Call the CAETE office for further details regarding cost, registration dates, or see .