Hackpack Blog

What to study

How to use the Algorithm Design Manual

A quick actionable guide to one of the best resources for programming interviews, The Algorithm Design Manual by Steven Skienna

Why is the Algorithm Design Manual awesome

The Algorithm Design Manual (ADM) is widely considered one of the best resources for big tech interview prep. It’s a book that doesn’t cut any corners and teaches you the math behind all of the data structures and algorithms you can expect to see during an interview. I dive deeper into why it’s better than other books here.

How to use ADM

Read and do the odd problems for the first half of the book

Do not rush this part of the process. The book is pretty dry, but it’s thorough and will teach you what you need to know. The problems at the end of the chapters increase in difficulty and will help you learn how to start getting creative with the different data structures and algorithms.

You can find the solutions to odd problems here.

Note: Hackpack members have flagged that some solutions there are inaccurate. If you find any problems with a solution, please let us know in the discord so we can fix them in the wiki for everyone.

Skip the second half of the book

When the chapters switch to real world examples, you can move on to other resources. This section is titled The Hitchhiker's Guide to Algorithms. This part of the book is incredibly interesting, but not the best use of time when preparing for programming interviews.

Watch video lectures if stuck

Having trouble on a particular section? Watch the youtube lectures to get a fresh take from the author himself. If it’s still not clicking, feel free to ask for help in the discord #help-plz channel. A lot of community members have worked through the book already so you can expect some solid advice.

Take your time with chapter 2

This is arguably the most important chapter of the book. Chapter 2 is all about algorithm analysis which is a critical skill to develop for your interviews. Learning how to problem solve your way to optimal solutions is something every interviewer is looking for. This chapter sets the foundation for the rest of the book. If nothing else, read this chapter and do the problems.

Don't spend too much time on NP/NP-Complete/NP-Hard topics

You should read the chapter on Intractable Problems and Approximation Algorithms, but don’t do the problems**.** Understand why this class of problem is interesting, and how approximation algorithms attempt to create “good enough“ solutions, but you shouldn’t go down the rabbit hole here. (I did and I wasted 2 full months when I was studying).

Don't spend too much time on writing proofs in Chapter 1

You should read the chapter and do the problems here, but if you find yourself getting stuck it’s ok to skip through to Chapter 2. The goal is to extract the lessons about how to find counter examples, prove correctness and leverage induction.

This is a chapter you should read, and do a few problems for, but you don’t want to let this chapter kill your pacing.

Skip older style problems

Sometimes you’ll encounter old-world estimation problems. If it feels silly, skip it: example: 1.36. How much does the ice in a hockey rink weigh?

These are older school programming interview questions and have been largely phased out. It’s better to spend time elsewhere.

This shouldn’t be your only resource

ADM is an excellent resource that gives you strong fundamentals that will help you during big tech interviews, but it isn’t sufficient to only use this book. You should also be conducting mock interviews, solving LC/Hackerrank problems and discussing topics with others to find any gaps in your knowledge.

Are you ready for your FAANG interview?

Find out if you are ready for your Big Tech interview after taking our free quiz!

Take the free quiz

Latest

Join the Community

Looking for a study partner? Hackpack is the most active community of engineers studying for programming interviews. We hold each other accountable, provide support, and fight burnout to study more efficiently and get the job faster.