In this chapter, we discussed in detail algorithm design techniques, which are very important in the computer science field. Without too much mathematical rigor, we also discussed some of the main categories into which algorithms are classified.
Other design techniques in the field, such as the divide and conquer, dynamic programming, and greedy algorithms, were also covered, along with implementations of important sample algorithms. Lastly, we presented a brief discussion on complexity classes. We saw how proof for P = NP will definitely be a game-changer in a number of fields, if such a proof is ever discovered.
In the next chapter, we will be discussing some real-world applications, tools, and the basics of machine learning applications.