Despite the fact that programming is at the heart of computer science, it is argued that even at its simplest level it is a difficult subject to teach and learn. For any new learner programming concepts are abstract and confusing. As teaching programming continues to be a daunting task, this article revisits common challenges inherent in teaching computer programming to novices. Further, Memory Transfer Language (MTL) as used to teach programming is introduced and demonstrated. Different kinds of misconceptions in programming and their associated bugs are analysed. An experiment using MTL to teach programming was carried out, using error-counts in examination scripts from two groups of students, one instructed using MTL and the other through the conventional approach. Results indicated a highly significant statistical difference (p = 0) between the two groups, showing that MTL can help novices avoid common programming misconceptions and reduce the errors they make. This shows that if programming is taught using MTL, comprehension is enhanced.