Master’s of Professional Studies: Software Engineering

The Master of Professional Studies in Software Engineering is a ten-course program designed for professionals interested in developing software at all levels. 

In this interdisciplinary graduate program, you will have the opportunity to focus on the methodologies on creating a software product or program. Additionally, this program offers an enriched experience where you can apply engineering principles and thinking to solve tough problems while building connections across academic disciplines.

Required Core Courses (18 credits)

SENG 601: Ethics in Software Engineering

This course introduces students to the social impacts of computers and software in the context of real world software development and management. The course also covers aspects of privacy, bias, regulations, intellectual property as it applies to software engineering and to phases of the software development lifecycle.

SENG 701: Capstone in Software Engineering

This course will take students through a comprehensive software development process using current technologies and tools used in the industry. The team project will expect students to apply and integrate knowledge and skills learned in prior courses within the context of practical issues faced in the industry.

SENG/IS 740: Fundamentals of Software Testing

This course will examine the fundamentals of software testing by looking at the main phases in the software testing process, and the different types of software testing methods that are available. Problems that arise from testing different types of software, such as object-oriented, distributed, Graphical User Interfaces, cloud and web software will be discussed, and the relevant program analysis techniques will be studied. Topics include, but are not limited to, a general overview of the software testing process, approaches to automatic test case generation, test oracles, coverage analysis to decide when to stop testing, test prioritization, mutation testing, regression testing, and automated software testing tools.

SENG/CMSC 645: Advanced Software Engineering

Modern approaches to software development: requirements analysis, system design techniques, formal description techniques, implementation, testing, debugging, metrics, human factors, quality assurance, cost estimation, maintenance and tools.

Prerequisite: CMSC 445 or consent of instructor.

SENG/IS 636: Structured Systems Analysis and Design

Advanced study of structure systems development. Emphasis on strategies and techniques of structured analysis and structured design for producing logical methodologies for dealing with complexity in developing information systems.

Choose one of the following:

ENMG 652: Management Leadership and Communications

Students learn effective management and communication skills through case study-analysis, reading, class discussion and role-playing. The course covers topics such as effective listening, setting expectations, delegation, coaching, performance, evaluations, conflict management, and negotiation with senior management and managing with integrity.


IS 765: Project Management

This course covers the manner in which a system project is planned, scheduled and controlled during the project’s life. The use of project management techniques such as PERT (Project Evaluation and Review Technique) and Gantt charts are examined in-depth, as well as other techniques of planning, scheduling and controlling projects.

Prerequisite: IS 601.

We’re here to help! Stay connected with us.


Elective Courses (12 credits)

Choose four courses from the list below, or others with consent from the Software Engineering Graduate Program Director.

SENG 638: Software Process Management

This course covers the various software development processes that are followed in the industry and discusses the tradeoffs between the processes. An emphasis is placed on Agile development practices. The course uses case studies to instill an understanding of the decision making involved in choosing a software development process. The course also connects practical software development practices to theories to explain the reasons for why and where the processes work.

SENG 691: Special Topics in Software Engineering

This course explores advanced topics in software engineering that are not covered in other courses. Because the topics vary each semester, this course may be repeated for credit

CMSC 611: Advanced Computer Architecture

Memory-system design, pipeline structures, vector computers, scientific array processors, multi-processor architecture. Within each topic, the emphasis is on fundamental limitations: memory bandwidth, inter-processor communication, processing bandwidth and synchronization.

Prerequisite: CMSC 411 or consent of instructor.

CMSC 621: Advanced Operating Systems

A detailed study of advanced topics in operating systems, including synchronization mechanisms, virtual memory, deadlocks, distributed resource sharing, computer security and modeling of operating systems.

Prerequisite: CMSC 421 or consent of instructor.

CMSC 626: Principles of Computer Security

This course will provide an introduction to computer security with a specific focus on the computing aspects. Topics covered include: basics of computer security, including an overview of threat, attack and adversary models; social engineering; essentials of cryptography; traditional computing security models; malicious software; secure programming; operating system security in practice; trusted operating system design; public policy issues, including legal, privacy and ethical issues; network and database security overview.

CMSC 641: Design and Analysis of Algorithms

A study of advanced topics and techniques in discrete algorithms. Assumes student has a solid preparation in undergraduate algorithms (including asymptotic notations, recurrences, divide-and-conquer, greedy algorithms, dynamic programming, and fundamental graph algorithms). Core topics include probabilistic and amortized analysis, network flow, NP-completeness, and parallel algorithms. Selected topics might include: linear programming, computational geometry, randomized algorithms, cryptographic algorithms, and approximation algorithms. 

Prerequisite: CMSC-441 or equivalent or consent of instructor.

CMSC 681: Advanced Computer Networks

In-depth coverage of fundamental and advanced concepts in computer networking: protocol design, verification and testing; medium access protocols for next-generation networks; error detection and correction schemes; distributed routing algorithms concepts and mathematical analysis; switching architectures, quality-of-service architectures; admission control and scheduling algorithms; flow and congestion control; multi-cast architectures and protocols; network security; and data compression.

Prerequisite: CMSC 481 or approval of instructor.

DATA 603: Platforms for Big Data Processing

The goal of this course is to introduce methods, technologies, and computing platforms for performing data analysis at scale. Topics include the theory and techniques for data acquisition, cleansing, aggregation, management of large heterogeneous data collections, processing, information and knowledge extraction. Students are introduced to map-reduce, streaming, and external memory algorithms and their implementations using Hadoop and its eco-system (HBase, Hive, Pig and Spark). Students will gain practical experience in analyzing large existing databases.

Prerequisite: Enrollment in the Data Science program and DATA 601. Other students may be admitted with program director’s permission.

HCC 629: Fundamentals of Human-Centered Computing

This course is designed to introduce the student to the fundamentals of human-centered computing, including perceptual and cognitive psychology theories, human-centered computing models, theories, frameworks, and interaction paradigms.

IS 672: Computer and Network Security

This course surveys threats to computer and network security and methods for preventing incursions at a graduate level. We study how vulnerabilities to these threats arise in the development and use of computer systems and survey the controls that can reduce or block these threats. The course will consist of weekly readings, homework questions, and hands-on labs.

Prerequisite: Students must successfully complete IS 632 prior to enrolling for this course.

IS 680: Readings in Systems Design

This course is an advanced study of structured systems development. Emphasis is on strategies and techniques of structured analysis and structured design for producing logical methodologies for dealing with complexity in the development of information systems.

IS 789: Big Data Fundamentals and Techniques

This course covers the concepts, techniques and systems of big data. It will explain the basics of big data, including its 5V characteristics, generic life cycle and pipeline of big data analytics. It will cover big data related techniques: big data storage/access, data partitioning, data parallelization, key-value pairs, functional programming and MapReduce. The techniques will be practiced through big data analytical projects on top of big data systems.

IS 800: Special Topics Course in Software Maintenance

This course explores advanced topics in information systems that are not covered in other courses. Because the topics vary each semester, this course may be repeated for credit

Note: You may only take one of CMSC 621 or CMSC 681; you may not take both for credit.

Looking for more info?