Software

Masters Degree Courses

The Software Engineering option is now available for the Professional Master of Engineering Program.  Students will take six courses from the core curriculum. Students will take four electives from identified technical areas such as Cybersecurity, Computer Engineering, Systems Engineering, or create an individual plan that meets their specific career goals.

Core

Software Engineering

ENPM611 Software Engineering (3)
Prerequisite: Competency in one programming language and must have completed an undergraduate software engineering course or permission of course instructor.
Software engineering concepts, methods, and practices important to both the theorist and the practitioner will be covered. The entire range of responsibilities expected of a software engineer are presented. The fundamental areas of requirements development, software design, programming languages, and testing are covered extensively. Sessions on supporting areas such as systems engineering, project management, and software estimation are also included.
ENPM612 System and Software Requirements (3)
Prerequisite: ENPM611.
Focus will be placed on the theoretical and practical aspects of requirements development. Students will recognize the place of requirements, how to work with users, requirements methods and techniques, the various requirements types, how to set requirements development schedules, requirements evolution, how to model and prototype requirements, how to evaluate and manage risk in requirements, techniques to test requirements, how to manage the requirements process, and how to write an effective requirements document.
ENPM613 Software Design & Implementation (3)
Prerequisite: ENPM611.
Software design concepts and practices within the field important to both the practitioner and the theorist will be covered. Architectural and detailed designs are included for batch, client/server, and real-time systems. Design considerations for structured, object-oriented, and Web-based systems are covered. Design of databases, user interfaces, forms, and reports are also included. Implementation issues that affect the design, including error handling, performance, and inter-process communication, are presented.
ENPM614 Software Testing & Maintenence (3)
Prerequisite: ENPM611.
Aspects of software development after coding is completed will be covered. Students will understand the various levels of testing, techniques for creating test data, how to manage test cases and scenarios, testing strategies and methods, testing batch, client/server, real-time, and Internet systems, and the development of an effective test plan. Software maintenance will include the creation of easily maintained software; preventive maintenance, corrective maintenance, and enhancements; configuration management practices; and assuring quality in software manintenance.
ENPM696 Reverse Software Engineering (3)
Prerequisite: ENPM691 and CMSC106
This course provides in-depth understanding of reverse software engineering concepts and hands-on training with reverse engineering tools, including disassembler, decompiler, and code analyzer. Students will become familiar with both low-level software and the x86 instruction set through binary reversing sessions. This course also provides insights into many subjects such as system security, source code analysis,software design, and program understanding that will be beneficial in a variety of fields.
ENPM808E Managing Software Engineering Projects (3)
This course addresses the breadth of managing software engineering projects. It will help in transforming inspiring software engineers to software project leaders. The course will impart advanced principles, methods and tools for management of software projects in a realistic software engineering context. An Integrated Lean Project Management (ILPM) framework which is an implementation-oriented hybrid of traditional Project Management Institute (PMI) and Agile project management paradigms will be coached. After completing this course, students will be able to: select & justify software engineering projects by establishing relevant business cases, manage customer requirements, develop key components of software engineering project plan and the planning process, identify software project risks and develop risk mitigation strategies, develop a project team to build and deliver the product, understand and apply methods for solving and avoiding common difficulties associated with managing software engineering project, perform post implementation review, and improve the effectiveness and efficiency of software development projects.

Office of Advanced Engineering Education

2105 J.M. Patterson Building
University of Maryland
College Park, MD 20742

Copyright © 2017 University of Maryland. All rights reserved.

English French German Italian Portuguese Russian Spanish