\ans
They all contain syntax errors!

\begin{tabular}{|l|l|}
\hline
{\code The cat drinks the milk} & Missing period.\\
\hline
{\code The drinks milk cat the.} & {\code drinks} is not a {\it noun}.\\
\hline
{\code The cat drinks milk.} & {\code Milk} is not an {\it article}.\\
\hline
\end{tabular}\\[1.5ex]

\ans
When the program fragment is executed, it causes Shakey to step
backwards one square.  We could comment the program like this:

\begin{verbatim}
// Take one step backwards.

// 1. First turn around.
left();
left();

// 2. Now take the step.
step();

// 3. Finally, turn around again, so Shakey is
//    facing in the original direction.
left();
left();
\end{verbatim}

If we remove all the code from the above example, then we are just
left with the comments, which gives us a 
\begin{gloss*}
{pseudocode} Pseudocode is an informal language that helps programmers
develop algorithms for solving problems.  The steps in a pseudocode
program are expressed in everyday English.  Such programs are not
actually executed on computers.  Each step in a pseudocode program
must be translated into one or more steps in a computer language
before the program can be executed.
\end{gloss*}
variant of the program solution:

\begin{verbatim}
// Take one step backwards.
// 1. First turn around.
// 2. Now take the step.
// 3. Finally, turn around again, so Shakey is
//    facing in the original direction.
\end{verbatim}

Your initial design of a program solution in pseudocode will
typically end up corresponding to comments in the actual code.

\ans
No! If Shakey executes an instruction that results in an error, then this
instruction is not included in the program under construction.  In the
case of a bad step, only a comment appears in the program.

\ans
You get a run-time, or semantic, error!  Only one item may appear in a
single grid location.  There is already an item at the precise point
where Shakey tries to execute the {\code drop} instruction.

Notice that the program does not run to completion.  It stops early,
as soon as the error is detected.  

\ans
Yes!

\ans
Error!  Those hurdles are walls!

\ans
Here's one possible solution.  It is commented differently than the
automatically generated comments that you see in the text window, but
these comments should clarify the logical structure of the program.

\begin{verbatim}
function main() {
  // Hurdles world loaded.
  home();

  //-----------------------
  // JUMP THE FIRST HURDLE.
  //-----------------------
  // Take off...
  right();
  step();
  left();

  // Go up the left side...
  step();
  step();
  step();

  // Round the top and pickup the flag...
  right();
  step();
  pickup();
  step();
  right();

  // Go down the right side...
  step();
  step();
  step();

  // Get set for the next jump...
  left();
  step();
  left();

  //------------------------
  // JUMP THE SECOND HURDLE.
  //------------------------
  // Take off...
  right();
  step();
  left();

  // Go up the left side...
  step();
  step();
  step();

  // Round the top and pickup the flag...
  right();
  step();
  pickup();
  step();
  right();

  // Go down the right side...
  step();
  step();
  step();

  // Get set for the next jump...
  left();
  step();
  left();

  //-----------------------
  // JUMP THE THIRD HURDLE.
  //-----------------------
  // Take off...
  right();
  step();
  left();

  // Go up the left side...
  step();
  step();
  step();

  // Round the top and pickup the flag...
  right();
  step();
  pickup();
  step();
  right();

  // Go down the right side...
  step();
  step();
  step();

  // Get set for the next jump...
  left();
  step();
  left();

  //----------------------------------
  // JUMP THE FORTH (AND LAST) HURDLE.
  //----------------------------------
  // Take off...
  right();
  step();
  left();

  // Go up the left side...
  step();
  step();
  step();

  // Round the top and pickup the flag...
  right();
  step();
  pickup();
  step();
  right();

  // Go down the right side...
  step();
  step();
  step();

  // Get set for the next jump...
  left();
  step();
  left();
}
\end{verbatim}

One thing to notice is that the code fragment for jumping the first
hurdle is exactly the same as the code fragment for jumping the second
(and third, and forth) hurdle.

If we remove all the distracting commands, then we are left with only
the comments, which gives us a nice pseudo-code version of the
program.

\begin{verbatim}
  // Hurdles world loaded.

  //-----------------------
  // JUMP THE FIRST HURDLE.
  //-----------------------
  // Take off...
  // Go up the left side...
  // Round the top and pickup the flag...
  // Go down the right side...
  // Get set for the next jump...

  //------------------------
  // JUMP THE SECOND HURDLE.
  //------------------------
  // Take off...
  // Go up the left side...
  // Round the top and pickup the flag...
  // Go down the right side...
  // Get set for the next jump...

  //-----------------------
  // JUMP THE THIRD HURDLE.
  //-----------------------
  // Take off...
  // Go up the left side...
  // Round the top and pickup the flag...
  // Go down the right side...
  // Get set for the next jump...

  //----------------------------------
  // JUMP THE FORTH (AND LAST) HURDLE.
  //----------------------------------
  // Take off...
  // Go up the left side...
  // Round the top and pickup the flag...
  // Go down the right side...
  // Get set for the next jump...
}
\end{verbatim}

One advantage of this particular solution is that it generalizes
nicely.  It's fairly easy to see how to extend this program to make
Shakey jump five or six hurdles.
