How To‎ > ‎

Lab Semantics

Here is an example of a lab.  It is so small that it doesn't have any evaluators or user fields.
<lab xmlns=""
     name="Tiny Demo Lab">

      Facebook has hired you to help write programs that interact with the user and his or her friends. 
      Your boss has asked you to write a program that will automatically group your friends into different

   <step name="Review">
     This is a step. 

Labs consist of steps.  Steps can have dependencies on previous steps.  In other words, the student must complete a step before they can move on to the next step.

Steps contain text with instructions and examples for the student.  Many elements that you would expect from html are available to use to format your text.  One of the surprises will be labtable instead of the html table. You will see an example of labtable soon.

Students enter their responses in segments.  Student input is checked with evaluators.  There are two types of evaluators: internal and external.  We currently provide two internal evaluators: RegExEvaluator and ArithmeticEvaluator.

Here is an example of a lab with a user field (called a segment) and a use of the internal regular expression evaluator.

External evaluators can be hosted anywhere.  We host a number of external evaluators that you are welcome to use in your lab.

Here is an example of a lab with a segment and a use of the external evaluator.

If you want to write your own evaluator, check out our page on Evaluator Semantics.