Text this: On understanding types, data abstraction, and polymorphism