ECEN 5543 / CSCI 5548
Software Engineering of Stand-Alone Programs
NOTE: If you are looking at this web site to learn a little about the course in consideration for registering for it in the future, be aware that there will be changes in future courses, such as textbooks. Do not purchase textbooks for course offerings in Fall 2007 or later on the basis of these pages. Contact Prof. Dameron at email@example.com for up-to-date information on upcoming course offerings.
The Software Engineering Certificate is a graduate-level certificate program consisting of three courses: Software Engineering of Standalone Programs, Software Engineering of Multi-Program Systems (aka Concurrent Software), 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. To receive the certificate, you must pass all three courses with a letter grade of B- or better.
Historically, "software engineering" has been an oxymoron. Software engineering has come of age as a body of fundamental engineering knowledge applied to software -- product requirements definition and analysis, design for performance and testability, design for field diagnosis and maintenance, test coverage, etc. For example, see the IEEE and ACM agreed upon Software Engineering Body of Knowledge. Professionals who understand this body of knowledge are able to development products more predictably and reliably for stand-alone programs as well as for programs that will be part of a more complex environment.
The course is built around assignments in which students apply analysis, design and test methods discussed in class and the associated readings. Lectures present key concepts further elaborated in readings. Classroom time also includes discussion based on the readings.
Programming experience, is required before attempting ECEN 5543. Examples may be given in Java or C++. Familiarity with these languages will help but is not required prior to taking the course. However, you may want to locate an outside source of help for your questions about the occasional code sample. A few assignments may require programming enhancements or at least inspection of Java source code. The criteria are that you understand the concepts of programming, are familiar with one common programming language, and are able to cast solutions to problems in terms of algorithms. A background in related object-oriented concepts is not required. In fact, the material will be taught in the course.