// Step: The title that the student sees in overview/progress panel // Type: specifies whether this is a recursive script or wizard // Location: specifies where to find the script; Used by WizardFactory to determine the wizard to use // and by ScriptModel to find the appropriate script // For Location Step: // Section: The section in code in which the student must locate it // Action: The value of Statement in specification that points to what the student should have selected // e.g., could be Subsection, Prompt or Input for variable input // Modifies: The name of the attribute modified in problemSpec which can be used by a subsequent step // to conditionally pick a course of action // Steps: // - ask for control structure // - ask to identify the block to repeat // - Ask to write the shell // - Ask to write the correct condition // - Ask to negate the correct condition // - Optionally, have DeMorgan's Law wizard kick in to simplify the condition // Identify whether expression, selection or repetition Step: Identify the type of control statement for validation Type: Wizard Location: validation_control Modifies: data.validation.control // Note that this step sets data.validation.control attribute, which is used by next step // Select the type of loop Step: Select the loop type for validation Type: Wizard Location: $data.validation.control Modifies: data.validation.loop // Note that this step sets data.validation.loop attribute, which is used by next step // Have the student write the loop Step: Write the loop Type: Script Location: control/validate_$data.validation.loop // Note that we are asking for the script specified from the previous step to be used