- Program Details
Learn how to apply engineering concepts, techniques and methods to develop software systems in one of the first four ABET-accredited software engineering programs in the country.
Software engineering (SE) is concerned with developing and maintaining software systems that behave reliably and efficiently, are affordable to develop and maintain, and satisfy all the requirements that customers have defined for them. SEs must think creatively about the design of software systems, find clever solutions to problems, exploit the best engineering practices, and maintain a high-level vision of how all the parts fit together.
The SE program at MSOE offers an engaging environment where learning happens inside and outside the classroom. The program also offers the benefits of long-standing partnerships with business and industry leaders, as well as a comprehensive focus on student support.
Software engineering is important because of the impact of large, expensive software systems and the role of software in safety-critical applications. It integrates significant mathematics, computer science and practices whose origins are in engineering. In the rapidly changing world of technology, you’ll learn how to stay on the cutting edge.
The average placement rate for MSOE software engineering graduates was 97% in 2015-16 and graduates enjoyed an average starting salary of $64,250.
SE graduates started great careers with companies including:
- Acquity Group
- Direct Supply, Inc.
- Johnson Controls Inc.
- Rockwell Collins
Software engineering applies engineering concepts, techniques and methods to the development of software systems. A software engineering program develops engineering professionals with a mastery of software development theory, practice and process.
Software engineering is based on computer science in the same way other engineering disciplines are based on physical or life sciences. However, it adds an emphasis on issues of requirements, process, design, measurement, analysis and verification, providing a strong foundation in engineering principles and practice as applied to software development.
Software engineering students gain knowledge and skill in all aspects of the software development life cycle, including requirements elicitation and analysis, software architecture, design, construction and verification. They learn to work within and to continuously improve a defined software development process, with the aim of producing high-quality software predictably and efficiently. To provide a basis for this software engineering practice and process, students are grounded in the fundamentals of computer science, including discrete mathematics, data structures, algorithms, computer organization and operating systems.
Interested in learning more? Join us on the Community in the Software Engineering group page.
You may want to consider SE if you …
- Enjoy working with software and computer systems
- Are able to do mathematics and detailed work with accuracy
- Are prepared to be a life-long learner to maintain knowledge and skills in the rapidly changing computer industry
Curriculum Year by Year
Dive into your major with courses in software development, and data structures. Hone your knowledge of mathematics, chemistry, and physics as well as your written and oral communication skills.
Continue your SE immersion with courses in software requirements, architecture, databases, operating systems, algorithms, and real-time systems. You’ll also begin a year-long experience in the Software Development Laboratory.
You’ll develop a deeper understanding of SE with courses in software process, design, and verification as well as networking and web development. Build on your engineering foundation with additional courses in mathematics and science.
You’ll have the opportunity to take more elective courses senior year while also completing your senior design project as part of a multi-disciplinary team.
Dr. Christopher Taylor
Program Educational Objectives
The software engineering program is preparing graduates, within a few years of graduation, to:
Contribute as a software engineering professional
- Apply knowledge of software engineering practice and process.
- Work within a broader institutional and societal context.
Exercise technical and professional leadership
- Innovate and improve technologies and processes.
- Progress in responsibility.
- Integrate ethical and professional concerns.
- Continue to learn.
- Adapt to changing solution approaches, technologies, and processes.
- Demonstrate personal accountability.
- Communicate to a variety of audiences.
- Display interpersonal skills.
- Cooperate in and facilitate team work.
Upon successful completion of the software engineering program, graduates will have:
- an ability to apply knowledge of mathematics, science and engineering.
An ability to apply continuous and discrete mathematics, probability and statistics, computer science, software engineering practices and processes.
- an ability to design and conduct experiments, as well as to analyze and interpret data.
An ability to evaluate the performance of software systems, and to propose and evaluate process changes based on individual and team metrics.
- an ability to design a system, component, or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability.
An ability to perform detailed and architectural design of software components and systems while satisfying functional and non-functional requirements.
- an ability to function on multidisciplinary teams.
- an ability to identify, formulate, and solve engineering problems.
An ability to elicit and document software requirements, and to propose and evaluate designs and processes to meet them.
- an understanding of professional and ethical responsibility.
An understanding of the critical role played by software systems, the professional responsibilities of software engineers, and ethical issues that may be encountered in engineering practice.
- an ability to communicate effectively.
- the broad education necessary to understand the impact of engineering solutions in a global, economic, environmental, and societal context.
- a recognition of the need for, an an ability to engage in, lifelong learning.
- a knowledge of contemporary issues.
An awareness of trends in the software engineering discipline and of societal issues that affect software engineering practice.
- an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.
An ability to use modern software engineering tools, programming languages and environments, project planning and tracking systems, specification and verification techniques.