For most of the software engineering courses at the undergraduate levels, the emphasis is on the coding and pre-coding phases, that is, the phases of requirements analysis and specification, design as well as coding. The coverage of testing and maintenance is relatively superficial, despite of the fact that these two phases consume more resources than the others. One of the main reasons is that fewer methodologies in these two phases have been developed as compared with those in the other phases. Consequently, fewer literature on these areas appear in the undergraduate texts. Secondly, there is a lack of automated systems to support the teaching of these topics. However, the industry is now expecting to have a more thorough training for the computer science graduates in the areas of debugging and testing, as sound theoretical foundations and practical methodologies have been developed for debugging and testing in the past two decades. In response to the demands from the industry, some formal and advanced methods of debugging and testing are included in an undergraduate course given to the third year students at the University of Melbourne. In this paper, we are going to discuss the problems of teaching debugging and testing at the undergraduate levels. Transactions on Information and Communications Technologies vol 9, © 1994 WIT Press, www.witpress.com, ISSN 1743-3517 350 Software Quality Management