Does anyone know any good course or resource for system design. Want to improve my knowledge in that domain.
1. Grokking the System Design Interview
This is one of my favorite courses when it comes to learning Software Design or System design. It’s actually created to prepare you for the System design interview, but you can also use it to learn how to approach System design in general.
The Grokking, the System Design Interview, is one of the first courses (or book) that describes the Large Scale Distributed System Design problems in detail. Even if you’ve worked on Distributed Systems before, there are a lot of things that you can learn from this course.
2. Software Design and Architecture Specialization
This is another, well-structured course to learn Software design and Architecture. It is offered by the University of Alberta and delivered by Kenny Wong. The specialization contains 5 online courses to teach you object-oriented design, design patterns, software architecture, and Service-Oriented Architecture (SOA).
The specialization also includes a project, and you will be awarded a certificate after completing the course. The best part of this specialization is that you will learn the science behind Software design and architecture.
3. Data Structures and Software Design by edX
This course, part of the CS Essentials for Software Development Professional Certificate program, will take your skills to the next level by teaching you how to write “good” software that appropriately represents and organizes data, is easy to maintain, and is of high quality.
You will not only learn how to convert a set of requirements into a high-quality software design but also how to write efficient code that is easy to read, understand, and modify.
This is a great free course to learn two significant skill data structures and software design. The course is 4-weeks long and requires 8-10 hours of effort weekly. The course also offers a certificate, but you need to pay for it.
4. Secure Software Design Specialization
Security is an essential concern of Modern software design, and this specialization is focused on teaching you how to design secure software. There are 4 Courses in this Specialization which will not only show you practices of safe software design but also introduce you with tools and security threads and how to mitigate them.
Like other Coursera specialization, all four courses are free-to-audit, but you need to pay a small fee if you need a certificate of completion, something which you can add to your CV or LinkedIn profile.
This certificate gives you the right to show the world that you know about secure software design. The course is offered by the University of Colorado.
5. Java Programming: Principles of Software Design
This is an excellent course for Java programer to learn the principles of Software design. In this course, you will learn how to solve real-world problems with Java using multiple classes.
You will also create programming solutions that scale using Java interfaces. Recognize that software engineering is more than writing code - it also involves logical thinking and design.
As part of the course, you will also enter a program analyzes and sorts of earthquake data and developed a predictive text generator. If you are a Java programmer, then I highly recommend this course for you.
It’s also part of the Java Programming and Software Engineering Fundamentals Specialization, which has helped many programmers to strat their Java career.
6. Master Object-Oriented Design in Java - Homework + Solutions
One of the problems with Java developers is that they know how to code, but mostly they are not aware of how to write useful industry-standard object-oriented software. This course tries to fill that gap.
In this course, you will not only learn about object-oriented programming and design using abstract classes and interface but also about OOP design principles like SOLID and outline patterns and design patterns like Builder, Observer, and Decorator, which are vital for writing modular and flexible code.
The course also has assignments where you can apply the knowledge to design software from scratch, which is really great to truly master this valuable skill. The course has been created by Imtiaz Ahmad, one of the Udemy best seller instructors, and more than 19,363 students have already enrolled in this course.
7. Preparing for the System Design Interviews
System design interviews are very common in big software firms. They are different from coding interviews or data structure and algorithm interviews but can be harder. They require a broad set of knowledge. Almost all the top software companies, be it google, amazon, uber have one or two rounds of system design interviews. After clearing the data structures and algorithm interviews if you do well in these system design interviews you can expect a very good offer from these firms.
This is a course to help students to prepare for system design interviews. It gives brief description on key topics and contains a case study. It is an actively developed course with more case studies and system design questions added frequently.
Coursera offer free enrolling, you can get the courses for free. furthermore, you cannot ask for courses content or download resources here, I’m mentioning this if you planned such thing, so hold that thought, do this part at Google not here.
Good luck!
Thank you Sam