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.
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?