Investigating the effectiveness of pattern-oriented instruction in enhancing self-regulated learning ability and programming performance in learning programming /