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

Business Communications (edX) EdX
The University of British Columbia,UBCx

Business Communications (edX)

Learn how to communicate effectively in a business setting: understand diverse audiences and build sound arguments. This course will sharpen your writing, presentation, and interpersonal communication skills to help you succeed in the business world. You will learn a range of successful practices and guidelines that have been derived from both research and experience.

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
A System View of Communications: From Signals to Packets (Part 2) (edX) EdX
The Hong Kong University of Science and Technology - HKUST,HKUSTx

A System View of Communications: From Signals to Packets (Part 2) (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 communication systems.

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
Visual Presentation (edX) EdX
Rochester Institute of Technology,RITx

Visual Presentation (edX)

Learn how impactful images can enhance your presentation, communication and messaging to impress your audience. Visual elements are critical components in effective communication and presentation. The importance of imagery and how it relates to branding, memory recall, and awareness cannot be underestimated. Whether it’s a document, presentation, or video, using one relevant image can replace an entire section of text and be more impactful.

Self Paced
Self-Paced
Software Construction: Data Abstraction (edX) EdX
The University of British Columbia,UBCx

Software Construction: Data Abstraction (edX)

Learn powerful data abstraction and decomposition techniques to build large, complex programs. The course begins with the topic of data abstraction - from specification to implementation. Particular attention is given to how to write robust tests using JUnit. Then the course expands on these ideas to explore how type hierarchies and polymorphism can be used to decrease redundancy in your code. The course wraps up with a discussion of how to design robust classes.

Self Paced
Self-Paced
Social Media: How Media Got Social (edX) EdX
Curtin University,CurtinX

Social Media: How Media Got Social (edX)

Discover where social media came from, how it became integral to our everyday lives, and how that has changed the way we communicate. Social media and online communication dominate our daily lives in an unprecedented manner. Wireless connectivity, mobile devices and wearable technologies mean that social media is always on, always part of everyday life for billions of people across the world.

Self Paced
Self-Paced
English for Doing Business in Asia - Writing (edX) EdX
The Hong Kong University of Science and Technology - HKUST,HKUSTx

English for Doing Business in Asia - Writing (edX)

Introducing strategies for developing your written English communication skills in the context of doing business in Asia. The use of English for doing business in multinational settings is a fact of life for many business people. And, as Asian economies expand and become more involved in the global economy, having the ability to write clear and concise English is important when exchanging information.

Self Paced
Self-Paced
English for Doing Business in Asia - Speaking (edX) EdX
The Hong Kong University of Science and Technology - HKUST,HKUSTx

English for Doing Business in Asia - Speaking (edX)

Introducing strategies for developing your spoken English communication skills in the context of doing business in Asia. The use of English for doing business in multinational settings is a fact of life for many business people. As Asian economies expand and become more involved in the global economy, a lingua franca – a language used to communicate among groups of people who do not share a mother tongue – is needed to exchange information.

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