In this chapter, we will take a step back and look into the broader topics in computer algorithm design. As your experience with programming grows, certain patterns begin to become apparent to you. And just like with any other skilled trade, you cannot do without some techniques and principles to achieve the means. In the world of algorithms, there are a plethora of these techniques and design principles. A working knowledge and mastery of these techniques is required to tackle harder problems in the field.
We will look at the ways in which algorithms are generally classified. Other design techniques will be treated alongside implementation of some of the algorithms.
The aim of this chapter is not to make you a pro at algorithm design and strategy but to unveil the large expanse of algorithms in a few pages.