Software Engineering (saylor.org)

Offered by Saylor.org,
Software Engineering (saylor.org)

Software engineering is a discipline that allows us to apply engineering and computer science concepts in the development and maintenance of reliable, usable, and dependable software.

The concept of software engineering was first discussed at the 1968 NATO Science Committee in Germany. Today, many practitioners still debate over the term software engineering, often arguing that this discipline does not meet the criteria of engineering; rather, it should be called software development. There are several areas to focus on within software engineering, such as design, development, testing, maintenance, and management. Software development outside of the classroom is a very complex process notably from the fact that real-world software is much larger and more complex.

Upon successful completion of this course, the student will be able to:

Demonstrate mastery of software engineering knowledge and skills, and professional issues necessary to practice software engineering.
Discuss principles of software engineering.
Describe software development life cycle models.
Learn principles of software modeling through UML as a modeling language.
Identify major activities and key deliverables in a software development life cycle during software requirements and analysis, software design, and software testing.
Apply the object-oriented methodology in software engineering to create UML artifacts for software analysis and requirements, software design, and software testing.
Apply project management concepts in a software engineering environment to manage project, people, and product.
Participate as an individual and as part of a team to deliver quality software systems.

Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

Introduction to Object-Oriented Programming with Java II: Object-Oriented Programming and Algorithms (edX) EdX
Georgia Institute of Technology,GTx

Introduction to Object-Oriented Programming with Java II: Object-Oriented Programming and Algorithms (edX)

Learn the basics of object-oriented programming and algorithms. Students will build on the skills learned from “Introduction to Object-Oriented Programming with Java I: Foundations and Syntax Basics” and learn the basics of writing classes that serve as blueprints of concepts or objects that are represented in a programming problem. Students will leverage the concepts of inheritance, interfaces, and polymorphism to program reusability and flexibility in classes. Finally, students will gain experience walking through and analyzing algorithms that are applied on data (including objects) in many object-oriented programs.

Self Paced
Self-Paced
Software Engineering: Introduction (edX) EdX
The University of British Columbia,UBCx

Software Engineering: Introduction (edX)

Learn how to apply engineering principles, such as Agile, to build a full-stack software system. You will learn software engineering principles that are applicable to the breadth of large-scale software systems. The course explores topics such as agile development, REST and Async programming, software specification, design, refactoring, information security, and more.

Self Paced
Self-Paced
Object Oriented Programming in Java (Coursera) Coursera
University of California, San Diego

Object Oriented Programming in Java (Coursera)

Welcome to our course on Object Oriented Programming in Java using data visualization. People come to this course with many different goals -- and we are really excited to work with all of you! Some of you want to be professional software developers, others want to improve your programming skills to implement that cool personal project that you’ve been thinking about, while others of you might not yet know why you’re here and are trying to figure out what this course is all about.

Sep 21st 2026
5-12 Weeks
面向对象技术高级课程 (The Advanced Object-Oriented Technology) (Coursera) Coursera
Peking University

面向对象技术高级课程 (The Advanced Object-Oriented Technology) (Coursera)

如果将软件开发人员看作行走江湖的武侠,那么各种软件开发技术就是武侠赖以傍身的武术秘籍。有的秘籍以易学灵巧见长,练习者很快掌握,并有立竿见影的功效,但失之厚重持久;有的秘籍初学乍练顿显困难,虽冥思苦解仍不得要领,需坚持不断的内功修炼方成正果,却是成为武林大侠必备的至宝。本课程有些类似于后者。

Sep 14th 2026
13-24 Weeks
C++ Programming (saylor.org) Saylor Academy
Saylor.org

C++ Programming (saylor.org)

In the first unit, we will learn the mechanics of editing and compiling a simple program written in C++. We will begin with a discussion of the essential elements of C++ programming: variables, loops, expressions, functions, and string class. Next, we will cover the basics of object-oriented programming: classes, inheritance, templates, exceptions, and file manipulation. We will then review function and class templates and the classes that perform output and input of characters to/from files. This course will also cover the topics of namespaces, exception handling, and preprocessor directives. In the last part of the course, we will learn some slightly more sophisticated programming techniques that deal with data structures such as linked lists and binary trees.

Self Paced
Self-Paced
Introduction to Computer Science II (saylor.org) Saylor Academy
Saylor.org

Introduction to Computer Science II (saylor.org)

This course is a continuation of the first-semester course titled CS101: Introduction to Computer Science I. It will introduce you to a number of more advanced Computer Science topics, laying a strong foundation for future academic study in the discipline. We will begin with a comparison between Java—the programming language utilized last semester—and C++, another popular, industry-standard programming language.

Self Paced
Self-Paced
Introducción a la Ingeniería del Software (edX) EdX
Universidad Autonoma de Madrid,UAMx

Introducción a la Ingeniería del Software (edX)

Conoce las distintas fases de desarrollo por las que pasa un proyecto informático, así como las actividades de gestión necesarias para lograr finalizar el proyecto con éxito. ¿Alguna vez te has preguntado qué es y para qué sirve la Ingeniería de Software? ¿Quieres saber por qué es tan necesaria esta disciplina y por qué se utiliza tanto en entornos tecnológicos? ¿O cuál es el motivo de que muchos proyectos informáticos no finalizan en tiempo y coste o con la calidad deseada?

Self Paced
Self-Paced
Mastering the Software Engineering Interview (Coursera) Coursera
University of California, San Diego

Mastering the Software Engineering Interview (Coursera)

You’ve hit a major milestone as a computer scientist and are becoming a capable programmer. You now know how to solve problems, write algorithms, and analyze solutions; and you have a wealth of tools (like data structures) at your disposal. You may now be ready for an internship or (possibly) an entry-level software engineering job. But can you land the internship/job? It depends in part on how well you can solve new technical problems and communicate during interviews. How can you get better at this? Practice!

Sep 14th 2026
4 Weeks
Introduction to C++ Programming and Unreal (Coursera) Coursera
University of Colorado System

Introduction to C++ Programming and Unreal (Coursera)

This course is all about starting to learn how to develop video games using the C++ programming language and the Unreal Engine on Windows or Mac. This course assumes you have previous programming experience in some other language. Although we'll start at the very beginning for C++, hardly anybody learns (or teaches) C++ as a first language. Similarly, Unreal Engine is a commercial, industrial strength game engine. With great power comes great ... complexity, so it's important that you have the will to work hard to learn how to use C++ in Unreal Engine.

Sep 21st 2026
4 Weeks
Data Structures and Performance (Coursera) Coursera
University of California, San Diego

Data Structures and Performance (Coursera)

How do Java programs deal with vast quantities of data? Many of the data structures and algorithms that work with introductory toy examples break when applications process real, large data sets. Efficiency is critical, but how do we achieve it, and how do we even measure it? This is an intermediate Java course. We recommend this course to learners who have previous experience in software development or a background in computer science, and in particular, we recommend that you have taken the first course in this specialization (which also requires some previous experience with Java).

Sep 14th 2026
5-12 Weeks
Orientação a Objetos com Java (Coursera) Coursera
Instituto Tecnológico de Aeronáutica

Orientação a Objetos com Java (Coursera)

Neste curso, assumimos que você já sabe desenvolver programas pequenos em Java, mas você talvez não se sinta ainda confortável em projetar programas mais complexos com método e organização. O objetivo deste curso é fazer você compreender os princípios de orientação a objetos por meio da linguagem Java e saber como eficientemente aplicar esses princípios na prática quando projetando e desenvolvendo software de maneira ágil. Os conceitos discutidos e experimentados por você neste curso serão a base para você poder compreender os novos conceitos apresentados nos cursos seguintes desta especialização.

Sep 28th 2026
5-12 Weeks
UML Class Diagrams for Software Engineering (edX) EdX
KU Leuven University,KULeuvenX

UML Class Diagrams for Software Engineering (edX)

Learn how unified modeling language (UML) class diagrams are created and used to visualize and conceptualize the design of a system. Have you ever wondered how software architects, requirements engineers and business analysts sketch and draw out their plans for a software system? In this computer science course, you will gain an in-depth understanding of Unified Modeling Language (UML) class diagrams, which are used to visually represent the conceptual design of a system.

Self Paced
Self-Paced