Our codewords are functions on the squares such that for every edge, the bits on the neighboring squares form a codeword in the base code. It is natural to view our code as a Tanner code [1]} with bits on the squares and constraints on the edges; whereas the expander-codes have bits on the edges and constraints on the vertices.
