Due to the COVID-19 pandemic, UM-Dearborn classes are being held remotely through the end of the semester, Summer I and Summer II. Most campus operations are being conducted remotely and buildings are closed. Before coming to campus please call ahead to determine how services are being delivered. Events have been postponed or canceled, including Spring 2020 Commencement. For more updates please visit the Coronavirus information page

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

Fall

ECE 554

Summer

CIS 505

Fall

CIS 565

Fall

CIS 575

Winter

CIS 577

Winter

CIS 580

Winter

ECE 537

Fall

ECE 552

Summer

ECE 574

Fall

ECE 576

Fall

ECE 5831

Fall

CECS Graduate Education Office

1184/1186
Heinz Prechter Engineering Complex (HPEC)
Phone: 
313-593-0897
Fax: 
313-593-9967
Back to top of page