1. A method of evaluating a software program, the method comprising: receiving information of a proposed problem from a user via the user interface and creating a problem profile associated with the proposed problem; processing a master software solution associated with the proposed problem to identify one or more attributes, wherein the one or more identified attributes includes at least a first identified attribute; generating one or more first test cases associated with the first identified attribute in the master software solution; and generating an evaluation program including at least the one or more generated first test cases, wherein the generated evaluation program is configured to be applied to at least one submitted software program to be evaluated such that at least the one or more first test cases is configured to be applied as one or more test inputs to a corresponding attributes in the submitted software program.