TITLE: Compilers Course Winding Down
AUTHOR: Eugene Wallingford
DATE: December 07, 2010 4:24 PM
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
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.