At this point, you've mastered the theoretical underpinnings of the Algorithm Design Canvas. This is a great achievement and you're already ahead of the majority of applicants.
The next fundamental question is how to most efficiently take what you just learned, and start applying it in practice. Where do you find practice problems, and how do you go about solving them as you're getting ready for your interview?
In the next sections you will find practice tasks ordered by topic with some learning materials for each topic. You can submit your code solutions and get instant feedback from our grader. Each task also has a solution that you can look at in case you feel stuck or need a hint.
Online judges such as TopCoder are an indispensable tool in your preparation arsenal. You can read as many books as you want or skim through the solutions to dozens of problems, but there's nothing like practicing getting a problem 100% correct.
Online judges automatically grade your solution (and support a large set of programming languages) with some pretty tough tests. They also act as problem banks, additional learning resources, a supportive community, etc.
Here are a few more sites where you can practice solving algorithmic tasks:
Many people feel tempted to skip certain areas of the Canvas during practice. Sometimes they do this because they think they're saving time, sometimes because they are overconfident and think the problem is too easy.
This is not a good idea. The Canvas is designed to build up all aspects of your interviewing chops, as you never know what your interviewer will want to focus on. By systematically thinking about all areas during practice, when the rubber hits the road you'll be a lot more confident and, ultimately, more successful.
As we discussed in the Code section, writing code in your IDE is fundamentally different from coding outside of it. The only way to truly appreciate the difference and to overcome the related issues is to forget about your IDE.
That's why the "Code" section of the Canvas exists - just write your code there. Alternatively, if you're practicing using TopCoder (highly recommended), just use the "Code" box of the UI.
We all know people whose natural style is to write some code and then immediately try to run it and see if it works on some set of test cases. They spend about 20% writing the code, and then maybe 80% debugging it. While this may work well for them in real life, it simply does not work at interviews. You don't have the luxury of a debugger, nor the luxury of something automatically executing your code.
Instead, what you should do is to carefully think about the code you write, and then once you've written it, to spend some time reviewing it. If you're using TopCoder, make sure you are 100% confident that your code is going to compile AND run correctly on the tests before actually hitting "Compile" and "Run Tests". This practice of carefully inspecting your code is going to be priceless at interviews.
In this section, you learned several important tricks for increasing the efficiency and effectiveness of your practice. Remember to:
With these tips in mind let's turn to some algorithmic theory and practice. In the next sections of this course we cover the most important topics and suggest practice tasks that you can solve. Let's start practicing!
Also, in this section there is one last lesson suggesting one more way to practice, which we call the "blitz rounds". You can take a look at these once you feel confident in your task solving skills.