I feel like I should be prefacing this answer with three confessions, considering that this is an arithmetic question. First, I had a hard time with the multiplication tables until I was nine years old. Second, even after I finally got the hang of multiplication, I was never a fan of multiplying from right-to-left; I preferred going left-to-right. (Arthur Benjamin seems to approve.) Finally, I confess I actually spent five six minutes writing this:
kidTimes[p_Integer?Positive, q_Integer?Positive] := Module[{cv, d, m, n},
{m, n} = Through[{Max, Min}[{p, q}]]; d = IntegerLength[n] - 1;
cv = ListConvolve[IntegerDigits[m], IntegerDigits[n], {1, -1}, 0,
Times, Composition[Reverse, List]];
Grid[ReplacePart[PadLeft[Append[{IntegerDigits[m], IntegerDigits[n]} ~Join~
Table[ArrayPad[IntegerDigits[FromDigits[Diagonal[cv, k - d]]], {0, k}, ""],
{k, 0, d}], IntegerDigits[m n]], Automatic, ""], {2, 1} -> "×"],
Alignment -> {Right, Baseline},
Dividers -> {False, {3 -> True, -2 -> True}}]]

(Writing this answer took longer than writing the routine from scratch.)