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

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

Public Speaking (edX)

Build confidence as a speaker by learning how to use simple tools and skills to prepare and deliver memorable presentations. When asked, many people cite public speaking as one of their biggest fears. In fact, many renowned public speakers admit that they were once extremely anxious about speaking in front of groups.

Self Paced
Self-Paced
Introduction to Java Programming: Starting to code in Java (edX) EdX
Universidad Carlos III de Madrid - UC3M,UC3Mx

Introduction to Java Programming: Starting to code in Java (edX)

Learn to program with Java in an easy and interactive way! In this introductory Java programming course, you will be introduced to powerful concepts such as functional abstraction, the object oriented programming (OOP) paradigm and Application Programming Interfaces (APIs). Examples and case studies will be provided so that you can implement simple programs on your own or collaborate with peers.

Self Paced
Self-Paced
Global Software Development (edX) EdX
Delft University of Technology,DelftX

Global Software Development (edX)

Develop the technical and organizational skills you need to practice software engineering in a globally distributed environment. Software engineering operates ever more frequently in globally distributed settings, in a practice that is known as Globally Distributed Software Engineering (GDSE). In this course, you will obtain a practical overview of the organization and operation of software engineering of this practice. As such, it is aimed at professionals in distributed software development teams, and executives setting up and leading such teams who would like to develop the required technical and organizational skills.

Self Paced
Self-Paced
Data Science: Inference and Modeling (edX) EdX
HarvardX,Harvard University

Data Science: Inference and Modeling (edX)

Learn inference and modeling, two of the most widely used statistical tools in data analysis. Statistical inference and modeling are indispensable for analyzing data affected by chance, and thus essential for data scientists. In this course, you will learn these key concepts through a motivating case study on election forecasting.

Self Paced
Self-Paced