Teaching Test-First Programming: Assessment and Solutions