Master the essential principles and patterns that form the foundation of modern software development. This comprehensive course guides you through the evolution of software design, from understanding the Software Engineering Body of Knowledge to implementing advanced architectural styles. You'll explore object-oriented design principles, refactoring techniques, and design patterns across disciplines, while learning to differentiate between high-level architectural design and low-level detailed design. Through practical examples and real-world applications, you'll gain expertise in aspect-oriented and service-oriented architectures, event-driven systems, and MVC patterns. By examining the historical progression of programming languages and development environments, you'll understand how to build systems ranging from simple to complex. This course equips you with the critical thinking skills to select appropriate architectural styles, apply design principles systematically, and create maintainable, scalable software solutions that meet evolving business requirements and technical challenges.

Saving 40% on access to 10,000+ programs is a holiday treat. Save now.


Recommended experience
What you'll learn
Apply layered, distributed, interactive, and adaptable styles to build scalable solutions.
Use abstraction, inheritance, polymorphism, and proven design patterns for flexible, reusable code.
Apply aspect-oriented, service-oriented, event-driven, and MVC architectures for modern applications.
Distinguish high-level vs. detailed design, applying refactoring for maintainability and quality.
Skills you'll gain
- Software Development Life Cycle
- Object Oriented Design
- Software Engineering
- Technical Design
- Enterprise Architecture
- Software Design Documents
- Web Services
- Software Development
- Software Design Patterns
- Programming Principles
- Event-Driven Programming
- Software Architecture
- Maintainability
- Service Oriented Architecture
- Distributed Computing
- Software Design
- Systems Design
- Model View Controller
Details to know

Add to your LinkedIn profile
November 2025
See how employees at top companies are mastering in-demand skills

There are 10 modules in this course
Software Engineering Body of Knowledge has steadily and rapidly evolved over the past decades. With software being a crucial part of nearly everything that one encounters on a day-to-day basis, it is imperative that the details of the importance and the process of design be understood. In this module, a systemic exploration of the key knowledge area of Software Design is presented with a view to understand the state of the art. As the state of the art is explored, a historical view with perspective is reviewed with some of popular examples and well-known cases.
What's included
16 videos15 readings5 assignments1 plugin
In the realm of software development, a complete understanding of the Software Development Lifecycle (SDLC) is foundational. This involves navigating through key phases such as planning, design, implementation, testing, deployment, and maintenance. An integral aspect of this understanding lies in differentiating between high-level and low-level design. The former provides a conceptual blueprint, defining the overall structure, while the latter delves into specifics, guiding the actual implementation. These design levels play a pivotal role in contributing to the efficiency of each SDLC phase, with high-level design setting the foundation and low-level design adding intricate details. Moreover, the application of design principles is crucial for a smooth transition between these phases, ensuring consistency, scalability, and maintainability throughout the software development journey.
What's included
11 videos11 readings6 assignments
In this module, the Objection-Oriented Design is discussed to enable the learning of foundational methods using such a design, along with its significance. Key concepts like abstraction, inheritance, and polymorphism are discussed, and their benefits are explored with examples.
What's included
11 videos11 readings6 assignments
Refactoring is very beneficial when it comes to evolving code to a different level of maintainability and scalability. While developers desire to develop new code at all times; they do encounter situations, most of the time, to modify the current code to either build a feature or fix a defect; while doing so, an eye-for-refactoring can do wonders. In this module, let’s explore and apply some of the principles to refactor code.
What's included
13 videos6 readings5 assignments
This module explores the design patterns – especially in comparison to other domains like building architecture. The historical evolution of design patterns across disciplines provides insights into their origin and transformation. A comparative analysis between design patterns in building architecture and software design reveals shared principles and distinct methodologies. Modern software design methodologies have been influenced by such architectures and lessons so applied can bring the best for the software design.
What's included
11 videos11 readings6 assignments1 plugin
Software design methods, at times, are driven by a variety of factors. In this module the aspect-oriented design is explored which addresses the cross-cutting concerns that are identified during the requirements process. Information exchange over the web is another commonly used method and service-oriented architecture is a way to build distributed software using web services. In this module both are discussed and detailed using examples.
What's included
13 videos12 readings6 assignments
Any design process, typically, follows two steps: a High-Level Design (HLD) and a Low-Level Design (LLD). A High-Level Design (Architectural Design) or Top-Level Design describes how software is organised into components. A Low-Level Design or Detailed Design describes the desired behaviour of these components. At this stage of the course, in this module, the HLD and LLD are discussed for learners to understand and apply the two-step process.
What's included
14 videos14 readings6 assignments1 plugin
Over decades, software architecture has evolved to a level where the elements and styles now can be applied to solve specific problem statements. In this module, all architectural styles are discussed – General Structures, Distributed Systems, Interactive Systems, Adaptable Systems and Others, which enable building the knowledge and skill to apply such elements and style to design and construct great software.
What's included
12 videos12 readings6 assignments
As a designer, one would encounter these patterns nearly at all times when developing interactive applications. In this module the two main styles Event-Driven Architectures and Interactive systems (Model View Controller) in UI are discussed and detailed with examples.
What's included
9 videos9 readings5 assignments
In this concluding module, a detailed discussion is made on the historical progression of software development systems in terms of programming languages, software engineering and IDEs. With the discussion and detailing of the mechanisms to build simple to complex systems the learner will be able to navigate the existing software systems and will also be able to develop new ones.
What's included
13 videos5 readings5 assignments1 plugin
Instructor

Explore more from Education
Status: Free TrialNortheastern University
Status: Free TrialUniversity of California San Diego
Status: Free TrialUniversity of Alberta
Why people choose Coursera for their career





Open new doors with Coursera Plus
Unlimited access to 10,000+ world-class courses, hands-on projects, and job-ready certificate programs - all included in your subscription
Advance your career with an online degree
Earn a degree from world-class universities - 100% online
Join over 3,400 global companies that choose Coursera for Business
Upskill your employees to excel in the digital economy
Frequently asked questions
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.
More questions
Financial aid available,
¹ Some assignments in this course are AI-graded. For these assignments, your data will be used in accordance with Coursera's Privacy Notice.



