About this Course
In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem. This course aims to arm students with the software design skills required to produce real-world, extensible, performant and scalable software systems.
Starting with an introduction to code design patterns such as Factory, Singleton and Adapter, this course exposes students to 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.
What You'll Learn
- Ways to apply software design principles and design patterns to build components of a software application
- How to define system architecture and concepts
- Techniques for answering and solving common system design interview problems
- Experience with the latest specialized design paradigms
- How and when to choose between relational and non-relational databases
Get Hands-On Experience
You'll design an individual software component and then build the architecture of a larger system that includes the interactions between multiple components.