Author: Ryan E. Dougherty (ryan.dougherty@westpoint.edu)
Image credit: https://patricktay.files.wordpress.com/2015/09/alphabear1.jpg
The specific tasks required of the students in the assignment were:
Summary | This assignment asks students to create a program which determines what English word to choose with the given board letters and timers so that the score is maximized. |
Audience | The primary audience involves CS1 students, and is not restricted to any particular programming language; the assignment here originally was given in a C++ course (but this is not a requirement). |
Difficulty | The expected difficulty is several hours, and CS1 students should be able to complete it within 2 or 3 weeks. Students found it to be moderately difficult. |
Topics | The assignment focuses on arrays, file I/O, searching across parallel arrays, and creating functions. This implies that students should also know and be comfortable with some form of iteration and conditionals. |
Strengths |
There is an ability for studnets to see applications of game solvers.
The assignment has a large coverage of CS1 topics, and thus is useful for reinforcing course concepts. Related to the last point, but this assignment is a sufficiently complex project that involves critically thinking about how to layout their code. Additionally, it is very "modular" in that one can complete parts independently of others simply by putting "dummy" data (say for the text file of English words). Students have an ability to have hands-on experience with the game. |
Weaknesses | There are many moving parts, which may be prohibitive for lower-performing students about where to start. |
Dependencies |
Students need to know how to manipulate some kind of ordered collections (like arrays), and read files.
No particular programming language is required, although ours was in C++. A list of English words stored as a text file is required (but can be applied to any other spoken language). |
Variants |
One possibility is to involve students testing different algorithms to guess "good" words across multiple turns instead of just one: are greedy methods best? Another variant concerns what scoring functions give better outcomes over the course of several games. |
Teaching Notes |
It would be helpful for instructors to go over the assignment directions in class,
as there are many moving parts.
Additionally, we would recommend adding a specific format to the output so that autograding the assignment is possible. This might be difficult since the scoring function deals with floating-point numbers, so we advocate always rounding the result to avoid this issue. |