Strategies and exercises for assessing code writing and reading ability at scale