TITLE: Compilers Course Winding Down AUTHOR: Eugene Wallingford DATE: December 07, 2010 4:24 PM DESC: ----- BODY: We are in the last week of classes for the semester. I have not blogged much on my compilers course this time around, in fact not since the first week of classes. Part of that is being busy in other parts of my job, and part is that the course has gone relatively smoothly. I have a good set of students who have made steady progress writing their compilers. Our source language is a simple functional language, which gives us a good chance of having all four teams produce complete or nearly-complete systems. So I've not faced many problems teaching the course, and problems are the most salient triggers for me writing blog entries! One thing I have noticed going well this semester is that several of the teams have been consciously taking small steps in the development process. That has helped those teams collaborate well internally and to learn together as they write parts of their program. One thing I know that I can improve next time around is how I introduce and illustrate code generation. This is always one of the toughest phases of the compiler for most students, because they have so little experience with machine organization and assembly language programming, and what little they have came two or even three years ago. This term, I reorganized some of the earlier material and had an extra day or so in which to discuss code generation, but I did not put the time to good use. Students need to see more concrete examples of code generation sooner to help them bridge the gap between AST and what their compiler must do. I fell into a common trap for professors: talking about things a bit too much and not showing and doing things often enough. I already have some ideas for how to fix this in the next iteration of the course. Prominent among them is working in class with the students to write small assembly language snippets and to produce a small code generator that illustrates some of the important ideas we discuss. Fortunately, my students this time around seem to be on the road to success, whatever the shortcomings in how I've taught the course. This comes through their own efforts and through asking lots of questions outside of class. Good students usually make something good happen regardless of the conditions they face. We professors need to be thankful for this more often! As Mike Feathers points out in his recent RailsConf 2010 address, we are all novices some of the time, whether it is in our problem domain or or solution domain. The real key is, do we learn something and get better? My students this semester seem to be doing that. I hope I am, too. -----