You should have two files in your run folder named And.out and And.cmp. The first is the file that your gate produced and the second is the comparison file provided by the authors.
Post the contents of those files and we can take a better look.
Since the intent is that you move from nothing but Nand gates (and, later, D-type flip flops) to a (nearly) full-up computer, you need to implement each item using only previously-implemented items. If you do things in the order that they are presented in the chapter, this should take care of itself.
The authors do provide a mechanism for skipping things by letting you force the simulator to use built-in versions of gates. This happens when the simulator looks for a gate in the current folder and fails to find it. But since the authors also provide skeleton implementations of all the gates, the simulator will always find those .hdl files unless you move them or rename them.
Unfortunately, the current simulator treats a skeleton file improperly (in my view). At the very least, it should throw an error if an output is used that is not driven by something within the file. But, as it stands, it treats such undriven outputs as being 0, which leads to the behavior you experienced.