I’ve talked before about how to build adaptive-sets of problems to practice, and why you should use this as your primary vehicle for studying.  This article is a detailed description of how you should be solving individual problems when practicing, or working through your adaptive-sets and problem-sets so that you optimize your studying, and learn as much as possible from every problem you solve.

How to Solve Technical Problems:

Start the problem:

Write out the problem statement on the top of your piece of paper.  Then begin working on the problem.  Write down how you think you should solve the problem (an equation, method,“just like problem 9 in ch 2”, …).  It is important to recognize what strategy you used, and to record it, so you can recognize patterns, both in what methods work for which problems, and which problem types you commonly misidentify.

Starting the problem

Setting up the problem

Attempt to solve the problem:

Try to solve the problem using the method you previously described.  First attempt the problem blind, without looking at any resources other than the problem itself.  If you found yourself stuck or uncertain during your blind attempt, take a look at your running crib sheet for relevant equations you may not have memorized.  Then, if that wasn’t enough, use easily available and relevant resources like: your fully-written out solutions to previous problems, similar problems your professor solved in class, or example problems in the textbook.  After exhausting all these resources try to find similar (but not identical) problems online.  Work your way though the problem, and when you think your solution is complete, check it mentally, box the final answer, and make it clear which pieces of work are part of your final solution, and which steps are wrong or irrelevant (which parts of your solution would you want to be graded if this problem were on an exam).  Don’t erase the extra information, just draw a simple, light, single line through it.

An example solution, notice my initial assumption was wrong, but after looking at an example problem I figured out the correct steps

An example solution, notice my initial assumption was wrong, but after looking at an example problem I figured out the correct steps

Immediately Check Your Work:

The most important part of dedicated practice is immediate and objective feedback.  To get feedback from your attempt you’ll need to compare it to the correct solution (found via a solutions manual, professor, online, etc…).  If your final answer isn’t the same as the final answer in the solution you are comparing it to, circle the problem on your adaptive set, you’ll need to redo this problem later.  If your answer is right, you still aren’t in the clear.  Go through your solution step by step and compare it to the correct solution.  Ensure that each individual step is correct.  It isn’t necessary that each step is identical, just that it communicates the same information as the correct solution.  Note, there are multiple ways to solve a problem, so don’t be overly concrete in the way you interpret this, just make sure you’re doing the right steps in the right order, and recognize that there are multiple ways to present the same correct solution.  If your solution is different than the solution you know to be correct, but you still think you’re right, you should probably cross of the problem on your adaptive set, write a question mark by it, and show your solution to your professor during office hours, asking them “would this get full credit if turned in on a problem set/test?  Am I correct?  I know this is different, but is it still right, and what are the advantages of their approach vs. my approach?”.

When you notice the spot where your solution diverges from the correct solution, mark it clearly with a line. Circle the problem on your adaptive set, you’ll have to come back to it.  Spend some time figuring out why you went wrong at that point (what incorrect assumptions were you making?).  Write an explanation of what you did incorrectly, why its wrong, and what would be the appropriate correction, near your line.  On the same piece of paper cross off the remaining wrong steps (with a single strikethrough so you can still read it later), and write the next correct step and an explanation of why its the correct step to take.  See if you can get to the correct solution with the new step.  While you’re working, guess what you think the next step will be, cover up the correct solution with a piece of paper, and reveal the next line after you’ve made an attempt at that step.  Repeat this process to go through the solution line by line, making sure that at the end you have the correct solution written out, with all the wrong steps crossed out.

Adaptively learn from your attempt:

At this point you should have a completed correct solution, even if that correct solution is full of crossed out misguided steps.  Now it’s time to use this solution to help you solve similar problems in the future.  At the bottom of your paper you will develop an algorithm for how to solve similar problems.  Start by identifying what type of problem you just solved.  Be general enough in your identification process that your solution algorithm will teach you how to solve any problem of this sort, but specific enough that your solution algorithm will completely guide you though every problem in this category.  Some examples of problem types I commonly identified in college were: finding eigenvalues, projectile motion, Gauss’s law, or double-slit interference.  Now make a list of the steps required to solve the problem based on looking through your (now) correct solution.  These steps should be idiot-proof, with no interpretation required, but they still shouldn’t do all the work for you.  Use the example I’ve included on how to find eigenvectors as a general guideline.  Examples of good steps for your algorithm are: recognize symmetry, fill out the Gauss’s law equation with the known variables, row-reduce the matrix to echelon form (assuming you are already comfortable with that, or have another algorithm for doing so), or set the derivative equal to zero then solve for x.  Examples of bad steps for your algorithm are: solve, find the appropriate equation (too general), or something that is so hyperspecific it only works for the particular problem you just solved.  The goal is to have an algorithm that you will be able to look at (and eventually intuitively understand and remember) that will take you directly from the problem to the solution as soon as you identify the problem type.  Finally, go through your solution and write down every equation that you used, but had to look up, on your running crib sheet.

My simple algorithm. Note that I already have another algorithm for how to find eigenvalues, calculate a determinant, etc...

My simple algorithm. Note that I already have another algorithm for how to find eigenvalues, calculate a determinant, etc…

Save your work:

Save your solution attempt in your solutions binder, whether it was right or wrong.  If it wasn’t your first attempt, replace your old (incorrect) solution with this more recent attempt.  You may want to revisit this solution when you are struggling with a future attempt of the problem or it may come in handy when you are asking a professor a question in office hours.

As you continue to solve more problems this way a few extremely beneficial things will happen.  First you’ll notice the types of problems you’ll see in the course, and that there aren’t as many as you may have originally thought.  My technical courses would typically assign 50-300 problems a semester, and after using my problem solving technique I would realize that there were often as few as 3-20 different problem types the whole year.  Learning how to solve 10 types problems is much more manageable than having to be able to solve one of 200 problems at a moments notice.  This practice will also help you identify what types of problems are on each test, allowing you to quickly complete the types you are comfortable with, and save the more difficult problem types until after you have racked up as many easy points as possible.  Next, you’ll become much faster at solving problems.  Every time you solve a particular problem type you’ll write out a new algorithm, which will lead to you developing better and more intuitive algorithms that you’ll begin to naturally memorize.  Reducing hundreds of hours of time spent listening to abstract lectures, reading confusing textbooks, and solving difficult problems to a relatively short list of extremely straightforward problem solving algorithms is the ultimate study hack for a college class.  With a single piece of paper (you may need to write small) you can explain to yourself how to solve any problem within the scope of the course, and if you’re allowed a crib sheet on your exams, you can use this paper to ensure success (although when you reach this point, you probably won’t need to use it because of the intuitive problem solving skills you’ve built developing your algorithms).  Finally, this will help you identify what you should study, so you don’t waste your time studying the wrong things.  If you recognize that you are consistently getting a certain problem type correct, take a break from solving that type of problem, and when you recognize the few types of problems that are the most difficult for you, make sure you’re next adaptive set is focused on practicing those problem types.

If you’re in a technical course you’re going to be solving problems anyway.  I can’t promise that my method will ensure that you learn as much as possible from each problem, become a faster test-taker, or consolidate a semester college course into a single piece of paper, but it worked for me!

If you give it a shot let me know.  I integrate this method into my tutoring practice and my personal problem solving practice, but I’m always looking for more feedback!