Fundamentals of Software Engineering

Participants should be proficient in at least one programming language (Python is a plus) and should have experience writing code in a real-world environment.

Get Your Brochure

Course Dates

STARTS ON

June 1, 2022

Course Duration

DURATION

10 weeks, online
5-10 hours/week

Course Fee

Key Outcomes

In this program, you will:

  • Elicit, describe, and evaluate the requirements of a software system.
  • Inspect, evaluate, and improve existing code for quality attributes and functional correctness.
  • Design and implement a feature that relates to an existing software system.
  • Develop time and team plans for a software engineering project.
  • Apply software metrics and analytics for decision-making and quality assurance (QA).

Carnegie Mellon University's undergraduate software engineering program is ranked No. 1 in the United States.

Source: U.S. News & World Report.

Program Modules

This program consists of 10 modules, each designed to explore a specific aspect of software engineering fundamentals. Cumulatively, the modules create an understanding of software engineering, which participants will demonstrate by contributing to a real-world software project.

Module 1:

Introduction to Software Engineering

Learn the definition, purpose, and challenges of software engineering. You will:

  • Discuss the challenges, needs, and objectives of software engineering as a human activity and business concern
  • Explain the purpose of software engineering activities and the relationships among them
  • Estimate the effort required to complete a software engineering task
  • Set milestones and deliverables to measure progress
  • Set up a software engineering toolchain/coding environment
  • Evaluate and modify an open-source software project by using quality metrics

Module 2:

Code Management and Software Archaeology

Apply code archaeology techniques and tools to inspect and understand an existing code base. You will:

  • Develop and test a working model or working hypothesis about how a software system works
  • Enumerate both static and dynamic strategies for understanding and modifying a codebase
  • Choose an effectively integrated development environment (IDE)
  • Scope tasks involved in contributing to existing software

Module 3:

Open-Source Software (OSS)

Acquire the essential knowledge and techniques to contribute to an open-source software (OSS) project. You will:

  • Discuss the importance, influence, and challenges of OSSs
  • Analyze the business and legal considerations when using and creating an OSS
  • Compare OSS licenses and analyze trade-offs
  • Implement features in an existing real-world open-source application from a user story
  • Identify an OSS project to contribute to

Module 4:

Requirements

Evaluate the technical and nontechnical contexts for deriving and verifying requirements. You will:

  • Explain the role and purpose of requirements in a broader software engineering context
  • Identify requirements from multiple sources
  • Identify system boundaries using goals in software engineering processes
  • Document requirements using user stories, use cases, goal models, and activity diagrams
  • Describe and trace the life of a requirement in both forwards and backwards directions

Module 5:

Software Architecture

Plan and document a software system by identifying its major components and their relationships. Explore factors that impact software architectures, including business drivers and quality attributes. You will:

  • Explain the key concepts of software architecture and the role of software architects
  • Identify low- to high-level design abstraction
  • Identify requirements and quality attributes in software architecture
  • Analyze architectural patterns
  • Choose appropriate architectural tactics
  • Make decisions on software architecture

Module 6:

Quality Assurance (QA) and Testing

Apply strategies and techniques to ensure that software projects meet requirements. Inspect and debug codes to assure quality. You will:

  • Explain the definition, importance, challenges, and goals of QA and testing
  • Distinguish between verification and validation questions
  • Select appropriate techniques and tools to validate requirements and cover a system's key quality attributes
  • Apply techniques and tools to inspect and debug software

Module 7:

Software Engineering for Machine Learning-Enabled Systems

Recognize the role of software engineering in a machine learning (ML) project. Acquire the essential knowledge to collaborate with ML teams as a software engineer. You will:

  • Explain the key concepts of machine learning (ML) and ML models within the context of software engineering
  • Discuss the goals, considerations, and challenges at each stage of an ML model life cycle
  • Evaluate ML model performance

Module 8:

Software Measurement/Chaos Engineering

Evaluate and apply software metrics and analytics for decision-making and design and execute effective chaos engineering campaigns. You will:

  • Evaluate quality measurements and metrics for decision-making
  • Discuss the usefulness and common pitfalls of data analytics in a software engineering process
  • Evaluate the risks vs. benefits of chaos engineering
  • Analyze a chaos engineering implementation of real-world practices
  • Conduct resilience testing on an application

Module 9:

Software Process

You will:

  • Evaluate factors that motivate a software engineering process
  • Classify process models in software engineering
  • Compare common principles and practices within software engineering processes
  • Apply process methods and Scrum techniques to software development

Module 10:

DevOps and QA Process

Learn about the cultural philosophies, practices, and tools for increasing your organization's ability to quickly deliver applications and services. You will:

  • Describe the DevOps process
  • Differentiate DevOps tools and techniques
  • Analyze and apply verification and QA tools within a DevOps pipeline
  • Design and evaluate a continuous deployment strategy
  • Develop criteria for managing experiments and using diagnostic tools effectively

Module 1:

Introduction to Software Engineering

Learn the definition, purpose, and challenges of software engineering. You will:

  • Discuss the challenges, needs, and objectives of software engineering as a human activity and business concern
  • Explain the purpose of software engineering activities and the relationships among them
  • Estimate the effort required to complete a software engineering task
  • Set milestones and deliverables to measure progress
  • Set up a software engineering toolchain/coding environment
  • Evaluate and modify an open-source software project by using quality metrics

Module 6:

Quality Assurance (QA) and Testing

Apply strategies and techniques to ensure that software projects meet requirements. Inspect and debug codes to assure quality. You will:

  • Explain the definition, importance, challenges, and goals of QA and testing
  • Distinguish between verification and validation questions
  • Select appropriate techniques and tools to validate requirements and cover a system's key quality attributes
  • Apply techniques and tools to inspect and debug software

Module 2:

Code Management and Software Archaeology

Apply code archaeology techniques and tools to inspect and understand an existing code base. You will:

  • Develop and test a working model or working hypothesis about how a software system works
  • Enumerate both static and dynamic strategies for understanding and modifying a codebase
  • Choose an effectively integrated development environment (IDE)
  • Scope tasks involved in contributing to existing software

Module 7:

Software Engineering for Machine Learning-Enabled Systems

Recognize the role of software engineering in a machine learning (ML) project. Acquire the essential knowledge to collaborate with ML teams as a software engineer. You will:

  • Explain the key concepts of machine learning (ML) and ML models within the context of software engineering
  • Discuss the goals, considerations, and challenges at each stage of an ML model life cycle
  • Evaluate ML model performance

Module 3:

Open-Source Software (OSS)

Acquire the essential knowledge and techniques to contribute to an open-source software (OSS) project. You will:

  • Discuss the importance, influence, and challenges of OSSs
  • Analyze the business and legal considerations when using and creating an OSS
  • Compare OSS licenses and analyze trade-offs
  • Implement features in an existing real-world open-source application from a user story
  • Identify an OSS project to contribute to

Module 8:

Software Measurement/Chaos Engineering

Evaluate and apply software metrics and analytics for decision-making and design and execute effective chaos engineering campaigns. You will:

  • Evaluate quality measurements and metrics for decision-making
  • Discuss the usefulness and common pitfalls of data analytics in a software engineering process
  • Evaluate the risks vs. benefits of chaos engineering
  • Analyze a chaos engineering implementation of real-world practices
  • Conduct resilience testing on an application

Module 4:

Requirements

Evaluate the technical and nontechnical contexts for deriving and verifying requirements. You will:

  • Explain the role and purpose of requirements in a broader software engineering context
  • Identify requirements from multiple sources
  • Identify system boundaries using goals in software engineering processes
  • Document requirements using user stories, use cases, goal models, and activity diagrams
  • Describe and trace the life of a requirement in both forwards and backwards directions

Module 9:

Software Process

You will:

  • Evaluate factors that motivate a software engineering process
  • Classify process models in software engineering
  • Compare common principles and practices within software engineering processes
  • Apply process methods and Scrum techniques to software development

Module 5:

Software Architecture

Plan and document a software system by identifying its major components and their relationships. Explore factors that impact software architectures, including business drivers and quality attributes. You will:

  • Explain the key concepts of software architecture and the role of software architects
  • Identify low- to high-level design abstraction
  • Identify requirements and quality attributes in software architecture
  • Analyze architectural patterns
  • Choose appropriate architectural tactics
  • Make decisions on software architecture

Module 10:

DevOps and QA Process

Learn about the cultural philosophies, practices, and tools for increasing your organization's ability to quickly deliver applications and services. You will:

  • Describe the DevOps process
  • Differentiate DevOps tools and techniques
  • Analyze and apply verification and QA tools within a DevOps pipeline
  • Design and evaluate a continuous deployment strategy
  • Develop criteria for managing experiments and using diagnostic tools effectively
Download Brochure

Gain an In-Depth Understanding of Software Engineering

Success in software engineering requires more than coding experience. The best software engineers can also communicate effectively with clients, collaborate in a team environment, and operate within tight deadlines and budgets. Fundamentals of Software Engineering, an online program from Carnegie Mellon University's School of Computer Science Executive Education, provides the foundational knowledge and in-depth understanding that participants need to execute software engineering projects from concept to completion.

Program Experience

Decorative image relating to a set of cog machinery

Try-It activities

Decorative Image of a paper and magnifying glass

Case studies

Decorative Image of a stack of papers

Programming assignments

Decorative Image of an Organogram

Discussion

Graphical representation of 3 humans close-knit together

Crowdsource activities

Decorative image of a laptop with a stick figure in it

Live office hours

Decorative image relating to a light bulb representing thinking in an instant

Knowledge checks

A Geaphical representation of a computer screen with the paper's popping out ot it

Scenario- and problem-based learning

Who Should Attend

This program is designed for anyone looking to gain a fundamental, in-depth understanding of software engineering to advance a high-tech career. It is particularly suitable for:

  • Recent graduates, postgraduates, or interns from a science, technology, engineering, or mathematics (STEM) or computer science background looking to start a career in a high-growth field and gain exposure to software engineering processes
  • Software engineers and technology professionals seeking to gain an in-depth understanding of software engineering processes and add a credential of repute to their CV

Program Faculty

Faculty Member Travis Breaux

Travis Breaux

Associate Professor of Computer Science, Institute for Software Research, Carnegie Mellon University

Travis Breaux is the director of the CMU Master of Software Engineering program, which has graduated more than 1,200 alumni in 30 years. MSE students are promoted to senior software engineering positions two to three times faster than graduates from peer CMU programs... More info

Claire Le Goues

Associate Professor of Computer Science, Institute for Software Research, Carnegie Mellon University

Claire Le Goues teaches software engineering and program analysis at the undergraduate, master’s, and Ph.D. levels and co-directs the Research Experiences for Undergraduates in Software Engineering (REUSE@CMU) summer program... More info

Certificate

Certificate

Upon successful completion of the program, participants will receive a verified digital certificate of completion from Carnegie Mellon University's School of Computer Science Executive Education. This is a training program and it is not eligible for academic credit.

Download Brochure

Your digital certificate will be issued in your legal name and emailed to you at no additional cost upon completion of the program as per the stipulated requirements. All certificate images are for illustrative purposes only and may be subject to change at the discretion of Carnegie Mellon University's School of Computer Science Executive Education.

The Carnegie Mellon University School of Computer Science Executive Education Learning Experience

At Carnegie Mellon’s Executive Education Program in the School of Computer Science, we provide organizations and people access to the skills and tools necessary to solve real-world technical problems by equipping the next generation of technology leaders with the experience, insights, and novel solutions developed by our community of computer science experts. From custom training programs to individualized online learning, our cutting-edge program — backed by faculty who pioneered the field—takes your skill set to the next level, giving you the tools to tackle your organization's next great technological challenges.
Apply Now

Early registrations are encouraged. Seats fill up quickly!

Flexible payment options available. Learn more.