Introduction to classes and object oriented programming, by Layne Pedersen