EdX

Software Engineering Essentials (edX)

Software Engineering Essentials (edX)

Learn agile methods, object-oriented programing and best practices for analysis, design, testing and management in software engineering. The world of software engineering requires high flexibility, an influx of new ideas, and the courage to challenge traditional approaches. As a software engineer, you need to know the methods, workflows and tools to handle continuously growing complexity and shortened development cycles. You must be able to work in teams to build high-quality software.

Class Deals by MOOC List - Click here and see EdX's Active Discounts, Deals, and Promo Codes.

In this course, we will introduce the basic concepts of object-oriented software engineering. You will learn and apply UML modeling, patterns and project management techniques that are used when developing complex software systems.

This course is interactive. You will watch videos in which we explain critical theory. You will participate in online exercises to practice your knowledge including quizzes, UML modeling with peer reviews, and programming exercises with immediate feedback

What you'll learn

  • Object-Oriented Programming
  • Agile Methods and Prototyping
  • Software Configuration Management
  • Unified Modeling Language (UML)
  • Project Management and Organization
  • Patterns for different phases of a software project

Suggested Readings:
Object-Oriented Software Engineering Using UML, Patterns, and Java (3rd Edition)

Course Syllabus

Introduction
The goal of the introduction is to make yourself familiar with the ideas we’ll explore in this course. Furthermore, we’ll conduct a small survey to get a sense for your existing knowledge.

Week 1: Project Organization and Management
In this week, you will learn the fundamentals of project organization and management, including agile methods.

Week 2: Software Configuration Management
We introduce the six main activates in software configuration management, namely: configuration item identification, promotion management, build-and release management, change management, branch management, and variant management.

Week 3: Object Oriented Programming
Instruction of the four fundamental concepts of object oriented programming: encapsulation, inheritance, polymorphism and abstraction

Week 4: Requirements Analysis
Starting from a specific problem, we show you tools, techniques and modeling diagrams to transform the problem of your client into requirements towards the solution.

Week 5: System Design
Introduction of different activities during system design. We have a closer look at the topics design goals, subsystem decomposition and hardware/software mapping. We will also have a discussion on patterns and antipatterns (e.g. client-dispatcher-server, layer architecture, golden hammer, corncob).

Week 6: Object Design
During the phase of object design you will prepare everything for your implementation. We will make use of inheritance and design patterns to achieve reusability (e.g. strategy and bridge pattern).

Week 7: Testing
Testing is fundamental knowledge of every software engineering. We will show you different types of testing (unit, system, integration & acceptance testing), give you hands-on examples and have a look at testing patterns, such as the mock object patterns ant the concept of dependency injection.

Week 8: Build and Release Management
In this week, you will learn how developers package their code into builds and release the software to users and customers. We will explain the basic idea of continuous integration and continuous delivery.

Exercises:
Each week includes several problems that you should solve, including multiple choice quizzes, drag-and-drop exercises, as well as peer review problems you should assign to your fellow learners.
Additionally, you will have to write source code in Java to given problems, for which you will receive immediate feedback to iteratively improve your solution.

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 Java Programming: Fundamental Data Structures and Algorithms (edX) EdX
Universidad Carlos III de Madrid - UC3M,UC3Mx

Introduction to Java Programming: Fundamental Data Structures and Algorithms (edX)

Learn to enhance your code by using fundamental data structures and powerful algorithms in Java. In this introductory course, you will learn programming with Java in an easy and interactive way. You will learn about fundamental data structures, such as lists, stacks, queues and trees, and presents algorithms for inserting, deleting, searching and sorting information on these data structures in an efficient way.

Self Paced
Self-Paced
CS50's Introduction to Computer Science (edX) EdX
HarvardX,Harvard University

CS50's Introduction to Computer Science (edX)

An introduction to the intellectual enterprises of computer science and the art of programming. This is CS50, Harvard University's introduction to the intellectual enterprises of computer science and the art of programming for majors and non-majors alike, with or without prior programming experience. An entry-level course taught by David J. Malan, CS50 teaches students how to think algorithmically and solve problems efficiently.

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
Introduction to Linux (edX) EdX
Linux Foundation,LinuxFoundationX

Introduction to Linux (edX)

Never learned Linux? Want a refresh? Develop a good working knowledge of Linux using both the graphical interface and command line across the major Linux distribution families. Develop a good working knowledge of Linux using both the graphical interface and command line, covering the major Linux distribution families.

Self Paced
Self-Paced
Introduction to Java Programming: Writing Good Code (edX) EdX
Universidad Carlos III de Madrid - UC3M,UC3Mx

Introduction to Java Programming: Writing Good Code (edX)

Learn to program in an easy and interactive way and enter the fascinating world of computer science. This is an introductory course to learn programming with Java designed to teach how to code good programs in Java, understanding “good” as both correct and efficient. Basic principles of software engineering will be introduced to make it easier for our future self and others to reuse code. Ethical issues and the intellectual property of our programs will also be addressed in the last part of this course. Examples and case studies will be provided, so that learners can implement simple but increasingly complex programs in Java.

Self Paced
Self-Paced
Data Science: Capstone (edX) EdX
HarvardX,Harvard University

Data Science: Capstone (edX)

Show what you’ve learned from the Professional Certificate Program in Data Science. To become an expert data scientist you need practice and experience. By completing this capstone project you will get an opportunity to apply the knowledge and skills in R data analysis that you have gained throughout the series. This final project will test your skills in data visualization, probability, inference and modeling, data wrangling, data organization, regression, and machine learning.

Self Paced
Self-Paced
Gestion de projets de développement (edX) EdX
Inter-American Development Bank - IDB,IDBx

Gestion de projets de développement (edX)

Apprenez les meilleures pratiques de gestion de projet pour promouvoir le développement socioéconomique en Amérique latine et dans les Caraïbes. Jour après jour les institutions publiques, les organisations non gouvernementales, les agences de développement ainsi que d'autres acteurs travaillant en faveur du développement économique et social en Amérique latine et dans les Caraïbes, font face à un défi majeur. Il s'agit de savoir comment transformer les propositions en réalités concrètes qui puissent améliorer le bien-être de la société et d'atteindre les résultats avec le temps et les ressources disponibles.

Self Paced
Self-Paced
Design Thinking: Ideation, Iteration and Communication (edX) EdX
Rochester Institute of Technology,RITx

Design Thinking: Ideation, Iteration and Communication (edX)

Learn how ideas transform into solutions through iteration and validation along with best practices for communicating your solution to stakeholders. Designing a successful and innovative solution requires creative ideas and their iteration. As critical phases of the design thinking process, ideation and iteration are often what distinguish design thinking from traditional or linear problem-solving approaches.

Self Paced
Self-Paced
Aplicaciones de la Teoría de Grafos a la vida real II (edX) EdX
Universitat Politècnica de València,UPValenciaX

Aplicaciones de la Teoría de Grafos a la vida real II (edX)

Aprenderemos a modelizar problemas del mundo real mediante su representación con grafos y a resolverlos mediante sus algoritmos asociados. Este curso trata la Teoría de Grafos desde el punto de vista de la modelización, lo que nos permitirá con posterioridad resolver muchos problemas de diversa índole. Presentaremos ejemplos de los distintos problemas en un contexto real, analizaremos la representación de éstos mediante grafos y veremos los algoritmos necesarios para resolverlos.

Self Paced
Self-Paced
A System View of Communications: From Signals to Packets (Part 1) (edX) EdX
The Hong Kong University of Science and Technology - HKUST,HKUSTx

A System View of Communications: From Signals to Packets (Part 1) (edX)

Explore the tradeoffs in designing communication systems like mobile phones, and the engineering tools to handle them. Have you ever wondered how information is transmitted using your mobile phone or a WiFi hotspot? This introductory course seeks to enable you to understand the basic engineering tools used and tradeoffs encountered in the design of these systems.

Self Paced
Self-Paced