Well, if you haven't implemented the Not gate, how can you expect an And gate implementation that uses it to work properly???? It's like building an engine without putting the crankshaft into it and then being surprised that it doesn't run.
The whole idea of the project is to build a computer from basic principles by building the the small building blocks and then using those to build larger blocks and using those to build yet larger blocks until you have the complete computer.
There is a reason that the book explicitly recommends implementing the chips in Chapter 1 in the order in which they are presented in Chapter 1.
The authors supply a primitive gate -- the 2-input Nand gate -- and you use ONLY THAT to build up the logic chips in Chapters 1 and 2.
The first chip you build is a Not gate using only Nand gates. Once you have that built and working, you can now build other gates, such as the And gate, using any combinations of Nand and Not gates because your Not gate is merely a wrapper for an implementation based on Nand gates. Once you have implemented an And gate, you get to add that to your tool bag for the same reason.