About This Course
In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem. Knowing how to apply design patterns can help you build software that’s fast, extensible and scalable.
In this course, we’ll start with an introduction to code design patterns — such as Factory, Singleton and Adapter — and the SOLID design principles used to build extensible designs efficiently. We’ll explore common system design components such as databases, caching and different kinds of architectural patterns, and then dive deeper into the techniques used to scale software systems like database sharding, distributed transactions, load balancing and asynchronous communication. By the end of the course, you’ll be familiar with the critical aspects of software architecture.
Because this course is for experienced programmers, it doesn’t teach any programming. It is language-agnostic, but coursework is in Python or C#.
▸ Related Article: How to Become a Software Developer
Designed For
Those with experience coding in a common programming language — like Python, C#, C++, Java — and who are looking to move into computer science or software development.
▸ Explore More: Looking to build your software skills? Take a look at our new Software Algorithms & Data Structures course.
What You’ll Learn
Ways to apply software design principles and design patterns to build components of a software application
Define the high-level structure of a software system and the principles of its design
Experience with the latest specialized design paradigms
How and when to choose between relational and non-relational databases
Techniques for answering and solving common system design interview problems
Get Hands-On Experience
Design an individual software component
Build the architecture of a larger software system that includes the interactions between multiple components
Career Stats
12%
Projected growth in U.S. demand for software design patterns skills (2025–27)
19%
Projected growth in U.S. demand for systems design skills (2025-27)
Complete a Certificate
Combine this course with the Foundations of Python Programming and Software Algorithms & Data Structures courses to earn the Certificate in Software Development Essentials.
Earn a Digital Badge
After successfully completing this course, you can claim a digital achievement badge that can be shared on LinkedIn and other social media sites. Learn more about digital badges.
Our Enrollment Coaches Are Here to Help
Connect with an enrollment coach to learn more about this offering. Or if you need help finding the right certificate, specialization or course for you, reach out to explore your options.
This program is intended for professional development and is not designed to meet educational requirements for professional licensure or certification.