In this paper a teaching model has been established for compiler principle course through making engineering reform to compiler principles course. Ladder-like iterative teaching method has been introduced. Our teaching model and teaching method have provided solutions to the so-called three difficult problems, namely, the difficulties in teaching the compiler principles, the difficulties in understanding and mastering the course, and those in practical development. Moreover, the model and approach in this paper offer a theoretical basis for making engineering reform to other core curriculums of computer science & technology.