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 BoulderFor 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.

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 http://caete.colorado.edu.
Call the CAETE office for further details regarding cost, registration dates,
or see http://caete.colorado.edu .