The University
of Colorado at Boulder presents
Software Engineering Certificate
A certificate consisting of graduate level courses in
software engineering for stand-alone, multi-program (concurrent), and distributed
software systems
Note: The lectures are offered from CAETE via live webinar format from anywhere, and 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
Multi-Program Systems, ECEN5043
Software Engineering of
Distributed Software Systems, 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 Multi-Program Systems, and Software Engineering of Distributed Software 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:
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:
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 software 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 (ECEN4033 or ECEN 4583) or permission
of the instructor based on a background in object orientation. ECEN5043 and ECEN5053
may be taken in either order although some knowledge of
concurrent programming such as from an operating systems course is helpful prior to
taking ECEN5053.
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, live webinar and via CAETE; Spring semester available thru the CAETE library with active course web site
Software Engineering of Multiprogram Systems - ECEN5043 - Spring semester, live webinar
and via CAETE
Software Engineering of Distributed Systems -- ECEN 5053 -- 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 the CAETE office.
To register for the course through CAETE, contact them at: 303-492-6331 or http://caete.colorado.edu. Call the CAETE office for further details regarding cost, registration dates, or see http://caete.colorado.edu .