CS 030 Abstract Models for Concrete Problems Using Java