Concrete Abstractions: An Introduction to Computer Science Using Scheme