Introduction to the Course

Get an overview of the structure and strengths of this object-oriented design course.

Structure of the course

This course consists of 28 chapters. These chapters can be segmented into the four sections listed below:

  • Foundational: The foundational section is composed of three chapters. The first chapter introduces the course and its key features. The second chapter talks about object-oriented programming and its four paradigms. The third chapter introduces UML notations, and in this chapter, we focus on four widely used UML diagrams in object-oriented design.

  • Design patterns: There are two chapters in the design patterns section. The first chapter introduces the five design principles widely used in object-oriented software development called SOLID. The second chapter discusses the three design patterns: creational, structural, and behavioral.

  • Real-world design problems: There are twenty-one chapters in this section. The first chapter explains a typical object-oriented design interview process. In particular, this chapter discusses the steps involved in solving a design problem. Chapters 6–27 describe and solve the 21 real-world design problems in detail. We have dedicated a chapter for each problem in which we walk the learner through all the phases of designing an object-oriented problem. These chapters include requirement gathering, use case diagrams, class designs, sequence and activity diagrams, as well as the skeleton code implementation in five popular languages.

  • Wrapping up: This section provides interview tips for the reader and wraps up this course.

Note: Although we did our best to keep the chapters independent, our readers will find it useful to read them in the sequence provided below.

The structure of this course

Course strengths

While filling some important gaps in other available courses, we believe this course has some key strengths to offer. We summarize the strengths and the advantages this course has over others in the table given below.




This course provides a one-stop solution to all the concepts required to solve real-world object-oriented design interview problems.

Incremental improvement to design

This course provides a layer-by-layer design solution by designing simple and incremental solutions to complex problems using the bottom-up approach.

Solving the traditional problems

This course is up-to-date with the latest real-world problems that top-ranked companies use in their interviews to evaluate a candidate's object-oriented design skills.

New design problems

This course provides an upskill by presenting new design problems being asked in FAANG interviews recently.

Careful collection of design problems

Each problem has its unique aspects in terms of problem-solving and designing.

Multi language supports

We provided the skeleton code of the classes in five languages (Java, C#, Python, C++, and JavaScript).

Modular approach

We designed the problems using a bottom-up approach.

Interview structure

We tried to cover all aspects of the interview process related to OOD and have provided useful hints to solve the problems.

Let's start our object-oriented design journey!