Software Engineering
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)
The certificate can be completed entirely on campus, entirely online, or through a combination of on-campus and online courses.
Required Core Courses
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)
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):
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)
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)
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)
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.
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)
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)
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)
Graduate-level introduction to data structures, high-level engineering analysis languages, hardware description languages, algorithm complexity analysis, and engineering applications. (3 credits)
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)
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
- Students will be able to use mathematical and scientific techniques to solve software engineering problems.
- 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.
- Students will be able to use the techniques, skills, and modern software tools necessary for reliable and robust software engineering practice.
- 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.
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 |