Algorithm Tracing Technique

An algorithm trace is a method for hand simulating the execution of your code in order to manually verify that it works correctly before you compile it.   It is also known as a "desk check."

Step 1: Number each executable statement in your pseudocode or source code.
     1	public Hand getPair(List cards)
2 {
3 // SET result to a new Hand
4 // SET previous to first card in cards
5 // SET current to second card in cards
6 // WHILE current not last card AND result is empty LOOP
7 // IF current card rank EQUALS previous card rank THEN
8 // ADD current card to result
9 // ADD previous card to result
10 // END IF
11 // increment current
12 // END LOOP
13 // RETURN result
14 }

Step 2: Draw a table with each variable in the program shown at the top of a column. Draw a column for Statement number on the left and a column for Output (if appropriate) on the right. It's also helpful to draw a separate column for each boolean expression.
stmt previous current result condition1 condition2
Step 3: Starting with statement 1, simulate the action the computer will take when it executes each statement. Draw one statement per row. In the appropriate column, write the value that is assigned to the variable (or boolean expression).  
cards 2C  3D  5S 5D  JH 
stmt previous current result condition1 condition2
3 new Hand
4 2C
5 3D
6 T
7 F
11 5S
6 T
7 F
11 5C
6 T
7 F
11 JH
6 F
13 Return empty hand

Step 4: When the trace is complete, check that the output produced matches the expected output.
In this case, the expected output was "5C 5S" so the algorithm is defective.