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

TBD

Course Duration

DURATION

10 weeks, online
5-10 hours/week

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.

FAQs

  • How do I know if this program is right for me?

    After reviewing the information on the program landing page, we recommend you submit the short form above to gain access to the program brochure, which includes more in-depth information. If you still have questions on whether this program is a good fit for you, please email learner.success@emeritus.org, and a dedicated program advisor will follow-up with you very shortly.


    Are there any prerequisites for this program?

    Some programs do have prerequisites, particularly the more technical ones. This information will be noted on the program landing page, as well as in the program brochure. If you are uncertain about program prerequisites and your capabilities, please email us at learner.success@emeritus.org for assistance.


    Note that, unless otherwise stated on the program web page, all programs are taught in English and proficiency in English is required.


    What is the typical class profile?

    More than 50 percent of our participants are from outside the United States. Class profiles vary from one cohort to the next, but, generally, our online certificates draw a highly diverse audience in terms of professional experience, industry, and geography — leading to a very rich peer learning and networking experience.


    What other dates will this program be offered in the future?

    Check back to this program web page or email us at learner.success@emeritus.org to inquire if future program dates or the timeline for future offerings have been confirmed yet.

  • How much time is required each week?

    Each program includes an estimated learner effort per week. This is referenced at the top of the program landing page under the Duration section, as well as in the program brochure, which you can obtain by submitting the short form at the top of this web page.



    How will my time be spent?

    We have designed this program to fit into your current working life as efficiently as possible. Time will be spent among a variety of activities including:



    • Engaging with recorded video lectures from faculty
    • Attending webinars and office hours, as per the specific program schedule
    • Reading or engaging with examples of core topics
    • Completing knowledge checks/quizzes and required activities
    • Engaging in moderated discussion groups with your peers
    • Completing your final project, if required

    The program is designed to be highly interactive while also allowing time for self-reflection and to demonstrate an understanding of the core topics through various active learning exercises. Please contact us at learner.success@emeritus.org if you need further clarification on program activities.



    What is it like to learn online with the learning collaborator, Emeritus?

    More than 250,000 professionals globally, across 80 countries, have chosen to advance their skills with Emeritus and its educational learning partners. In fact, 90 percent of the respondents of a recent survey across all our programs said that their learning outcomes were met or exceeded.

    A dedicated program support team is available 24/5 (Monday to Friday) to answer questions about the learning platform, technical issues, or anything else that may affect your learning experience.


    How do I interact with other program participants?

    Peer learning adds substantially to the overall learning experience and is an important part of the program. You can connect and communicate with other participants through our learning platform.

  • What are the requirements to earn the certificate?

    Each program includes an estimated learner effort per week, so you can gauge what will be required before you enroll. This is referenced at the top of the program landing page under the Duration section, as well as in the program brochure, which you can obtain by submitting the short form at the top of this web page. All programs are designed to fit into your working life.

    This program is scored as a pass or no-pass; participants must complete the required activities to pass and obtain the certificate of completion. Some programs include a final project submission or other assignments to obtain passing status. This information will be noted in the program brochure. Please contact us at learner.success@emeritus.org if you need further clarification on any specific program requirements.


    What type of certificate will I receive?

    Upon successful completion of the program, you will receive a smart digital certificate. The smart digital certificate can be shared with friends, family, schools, or potential employers. You can use it on your cover letter, resume, and/or display it on your LinkedIn profile.
    The digital certificate will be sent approximately two weeks after the program, once grading is complete.


    Can I get the hard copy of the certificate?

    No, only verified digital certificates will be issued upon successful completion. This allows you to share your credentials on social platforms such as LinkedIn, Facebook, and Twitter.


    Do I receive alumni status after completing this program?

    No, there is no alumni status granted for this program. In some cases, there are credits that count toward a higher level of certification. This information will be clearly noted in the program brochure.


    How long will I have access to the learning materials?

    You will have access to the online learning platform and all the videos and program materials for 12 months following the program start date. Access to the learning platform is restricted to registered participants per the terms of agreement.

  • What equipment or technical requirements are there for this program?

    Participants will need the latest version of their preferred browser to access the learning platform. In addition, Microsoft Office and a PDF viewer are required to access documents, spreadsheets, presentations, PDF files, and transcripts.


    Do I need to be online to access the program content?

    Yes, the learning platform is accessed via the internet, and video content is not available for download. However, you can download files of video transcripts, assignment templates, readings, etc. For maximum flexibility, you can access program content from a desktop, laptop, tablet, or mobile device.

    Video lectures must be streamed via the internet, and any livestream webinars and office hours will require an internet connection. However, these sessions are always recorded, so you may view them later.

  • Can I still register if the registration deadline has passed?

    Yes, you can register up until seven days past the published start date of the program without missing any of the core program material or learnings.


    What is the program fee, and what forms of payment do you accept?

    The program fee is noted at the top of this program web page and usually referenced in the program brochure as well.

    • Flexible payment options are available (see details below as well as at the top of this program web page next to FEE).
    • Tuition assistance is available for participants who qualify. Please email learner.success@emeritus.org.

    What if I don’t have a credit card? Is there another method of payment accepted?

    Yes, you can do the bank remittance in the program currency via wire transfer or debit card. Please contact your program advisor, or email us at learner.success@emeritus.org for details.


    I was not able to use the discount code provided. Can you help?

    Yes! Please email us at learner.success@emeritus.org with the details of the program you are interested in, and we will assist you.


    How can I obtain an invoice for payment?

    Please email learner.success@emeritus.org with your invoicing requirements and the specific program you’re interested in enroling in.


    Is there an option to make flexible payments for this program?

    Yes, the flexible payment option allows a participant to pay the program fee in installments. This option is made available on the payment page and should be selected before submitting the payment.


    How can I obtain a W9 form?

    Please email us at learner.success@emeritus.org for assistance.

  • What is the policy on refunds and withdrawals?

    You may request a full refund within seven days of your payment or 14 days after the published start date of the program, whichever comes later. If your enrolment had previously been deferred, you will not be entitled to a refund. Partial (or pro-rated) refunds are not offered. All withdrawal and refund requests should be sent to admissions@emeritus.org.



    What is the policy on deferrals?

    After the published start date of the program, you have until the midpoint of the program to request to defer to a future cohort of the same program. A deferral request must be submitted along with a specified reason and explanation. Cohort changes may be made only once per enrolment and are subject to availability of other cohorts scheduled at our discretion. This will not be applicable for deferrals within the refund period, and the limit of one deferral per enrolment remains. All deferral requests should be sent to admissions@emeritus.org.

Apply Now

Early registrations are encouraged. Seats fill up quickly!