At a high level, given an observed French sentence, it samples a hidden English sequence according to p(e|f) in order to estimate the forced expectation term of the update, and then samples a French sentence according to p(f|e) to estimate the full expectation, as shown in Algorithm 1.
because the individual English words are not independent, due to the bigram language model, the sampling of p(e|f) is itself broken down into a sequence of Gibbs sampling steps, sampling one word at a time while holding the others fixed, as shown in Algorithm 2.