Knowledge restructuring and the acquisition of programming expertise