Core and elective courses in a master's in software engineering degree program support an advanced curriculum focused on developing leadership, project management, and new technology skills such as those in artificial intelligence. The knowledge you gain through these classes will help to prepare you for your capstone project before you graduate.
While software engineering course titles may vary from school to school, learning outcomes are similar across programs, enabling you to cultivate a more competitive skill set.
Agile Methods for Software Development
This course examines agile methodologies — a collaborative, cross-team approach to delivering value to customers — including Scrum, Lean, Crystal, Dynamic Systems Development, Extreme Programming (XP), and Feature-Driven Development. Coursework, case studies, and software development projects help graduate students develop an understanding of agile development principles and techniques of the entire software development process.
Cost Estimation and Metrics
Instruction is designed to address software project management through the use of objective metrics used to help software engineers understand the scope of work of a software project, including necessary tasks, availability of resources, potential risks, and scheduling. Lessons also introduce students to industry-standard software cost estimation tools such as COCOMO II.
Software Acquisition, Legal, and Economic Issues
Learning outcomes include an understanding of the software procurement process, including contract law, specification, and control of product processes. Topics may include cost estimation techniques and models, cost-benefit and risk analysis, and related legal implications.
Software Reliability and Safety
Discussions include the in-depth study of techniques for ensuring software reliability and safety and may include software reliability engineering, safety engineering, applying reliability concepts to the software domain, and applying safety concepts to computer-intensive systems. Discussion may also address reliability models and analysis models, operational profiles, fault and event trees, and formal verification for safety-critical software systems.
Software Generation and Maintenance
Lessons enable students to examine techniques for generating software and maintaining revisions to existing software and may include coding alternatives, program generators, high-level programming languages, CASE tools, and component reuse. Students may also study software evolution maintenance, software re-engineering, and release cycle planning.