students who are challenged to define a function that will produce a given output given a specified input, and they can each come up with their own solutions, which may be substantially different. As long as they all give their function the same name, the course software can still grade their work by passing it a series pre-defined test cases.