About the Program

Software Engineering provides a systematic, disciplined, and quantifiable approach to the development, operation, and maintenance of software. The program includes core engineering courses plus electives chosen from a graduate introduction to software engineering, software reliability, management, interface design, and case studies. (12 credit hours)

Certificate offered on Campus and via Distance Learning

Required Core Courses

CIS 553: Software Engineering

Program design methodologies, control flow and data flow in programs, program measurement, software life cycle, large program design, development, testing, and maintenance, software reliability and fault tolerance, and evolutionary dynamics of software. (3 credits) 

ECE 554: Embedded Systems

A survey of real-time, sampled data systems and embedded applications; e.g., digital controllers, fuzzy logic, neural networks, and diagnostic systems are presented. Principles and characteristics of sensors and devices; embedded microprocessors; processor/device interfaces; time critical I/O handling; data communications in embedded environments will be discussed, in addition to an overview of embedded operating systems, cross-development techniques, and tools. Design of real-time systems with micro-controllers such as the 68HC11 and 68332; object-oriented software development using both assembly language and high-level languages are also discussed. This is a project-oriented course. (3 credits) 

Course Descriptions

Complete 2 courses from the following (6 credits): 

CIS 505: Algorithm Design and Analysis

This course investigates how to design efficient algorithms. Topics include asymptotic analysis, average-case and worse-case analysis, recurrence analysis, amortized analysis, classical algorithms, computational complexity analysis, NP-completeness, and approximation algorithms. In addition, the course investigates approaches to algorithm design including: greedy algorithms, divide and conquer, dynamic programming, randomization, and branch and bound. (3 credits)

CIS 565: Software Quality Assurance and Reliability

The processes, methods and techniques for developing quality software, for assessing software quality, and for maintaining the quality of software. Software testing at the unit, module, subsystem and system levels, automatic and manual techniques for generating and validating test data, the testing process, static vs. dynamic analysis, functional testing, inspections, and reliability assessment. Tradeoffs between software cost, schedule, time, and quality, integration of quality into the software development process as well as the principles of test planning and test execution. (3 credits)

CIS 575: Software Engineering Management

Quantitative models of the software lifecycle, cost-effectiveness, uncertainty and risk analysis, planning and modeling a software project, software cost estimation (COCOMO, Function points), software engineering metrics; software project documentation. Special emphasis on emerging software process standards such as the Capability Maturity Model of the Software Engineering Institute, and others. (3 credits) 

CIS 577: Software User Interface Design

Current theory and design techniques concerning how user interfaces for computer systems should be designed to be easy to learn and use. Focus on cognitive factors, such as the amount of learning required, and the information processing load imposed on the user. Emphasis will be on integrating multimedia in the user interface.

CIS 580: Software Evolution

This course focuses on state-of-the-art methods, tools, and techniques for evolving software. Topics such as reverse engineering, design recovery, program analysis, program transformation, refactoring, and traceability will be covered. There will be a project in which student teams participate. (3 credits) 

ECE 537: Data Mining

Introduction to the fundamental concepts of data mining. In-depth study of the principles, algorithms, techniques, implementations, and applications of data mining, including mining sequential and structured data, stream data, text data, spatio-temporal data, web data, and other forms of complex data. (3 credits) 

ECE 552: Fuzzy Systems

A study of the concept of fuzzy set theory, including operations on fuzzy sets, fuzzy relations, fuzzy measures, and fuzzy logic, with an emphasis on engineering applications. Topics include, fuzzy set theory, applications to image processing, pattern recognition, artificial intelligence, computer hardware design, and control systems. (3 credits) 

ECE 574: Advanced Software Techniques in Engineering Applications

Graduate-level introduction to data structures, high-level engineering analysis languages, hardware description languages, algorithm complexity analysis, and engineering applications. (3 credits)

ECE 576: Information Engineering

This course will cover the fundamental concepts of information engineering including computation, storage, communication, and application. Examples of topics are multimedia data such as video, audio, image and text, multimedia transmission through local and wide area networks, multimedia data representation, storage and compression. Information engineering applications will be discussed and students are expected to complete a project in a selected application. (3 credits)

ECE 583: Artificial Neural Networks

Students will gain an understanding of the language, formalism, and methods of artificial neural networks. The student will learn how to mathematically pose the machine learning problems of function approximation/supervised learning, associative memory, and self-organization, and analytically derive some well-known learning rules, including back prop. In addition, the student will learn how to perform computer simulations of various neural net models, and learn how to select appropriate model parameters, such as network architecture, hidden layer size, and learning rate. (3 credits)

Learning Goals and Outcomes

  1. Students will be able to use mathematical and scientific techniques to solve software engineering problems.
  2. Students will be able to formulate problems, design experiments, collect, verify, validate, analyze, and interpret data and use this knowledge to design a reliable system, component, or process to meet requirements.
  3. Students will be able to use the techniques, skills, and modern software tools necessary for reliable and robust software engineering practice.
  4. Students will be able to recognize a problem, evaluate different methods and use software engineering principles to derive a feasible solution.

Admission Requirements

Applicants must possess an undergraduate degree in Computer Science, Computer Engineering, or Electrical Engineering with an overall GPA of 3.0 or higher.

Tentative Course Schedules

CIS 553


ECE 554


CIS 505


CIS 565


CIS 575


CIS 577


CIS 580


ECE 537


ECE 552


ECE 574


ECE 576


ECE 5831


CECS Graduate Education Office

Heinz Prechter Engineering Complex (HPEC)
Back to top of page