This course is designed to take a Java programmer with any level of experience beginner, intermediate, or advanced and provide them with a deep understanding of design patterns and algorithms.
In this course you will master the 23 Design Patterns in computer programming written about in the classic book Design Patterns: Elements of Object-Oriented Software. In this book, four incredible software developers - Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides - compile reusable solutions to commonly occurring problems when writing computer programs. These patterns are grouped into 3 categories: creational, structural, and behavioral. Creational design patterns are used to create objects. Structural design patterns are used to assemble objects from reusable components. Behavioral design patterns architect how objects in the program interact with each other.
This course is split into four main parts:
Creational Design Patterns
We'll learn how to create objects using clean code and reusable practices that make our code modular, scalable, and efficient. In this part of the course we will be learning how to implement the Abstract Factory, Builder, Factory Method, Prototype, and Singleton design patterns.
Structural Design Patterns
We'll learn how to assemble complex objects from simple ones with tried and true techniques. We'll be learning how to implement the Adapter, Bridge, Composite, Decorator, Facade, Flyweight, and Proxy design patterns.
Behavioral Design Patterns
We'll gain an understanding of the various strategies used to architect how objects in the program will interact as we learn about the Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, and Visitor design patterns.
Searching and Sorting Algorithms
This additional section to the course will cover the most popular searching and sorting algorithms in all of computer science. We will be learning about Linear Search, Binary Search, Selection Sort, Bubble Sort, Quick Sort, Merge Sort, Insertion Sort, and Radix Sort.
By the end of this course you will be proficient in the most popular and useful design patterns, searching algorithms, and sorting algorithms in the industry.