When it comes to Parametric /Generative Design, the only book I can really recommend is “Elements of Parametric Design” from Robert Woodbury.
Although it is partially incorrect it covers almost any relevant basic-to-intermediate knowledge about this topic including Math and Algorithms. It targets designers and architects, so it is easy written and good to read. And it contains pseudocode and it does not target any specific platform such as Grasshopper. Sadly any other book I own about this topic is just the typical tech bullshit bingo with photographs of “awesome” projects.
Regarding CAD I hardly now any book, not to speak of a good one.Because many of them introduce the reader to a specific platform but they do not provide any theory. Regarding Freeform surfacing there is a german book called “Freiformflächen in der rechnerunterstützten Karosseriekonstruktion und im Industriedesign” from Peter Bonitz. But its older and too basic. Its expensive and its in german, but it is the only book I know which covers fundamentals of surface modelling in a technical and professional way.
When it comes to coding it is really up the language, the framework and your skill level. Its always a good idea to buy books from the inventors of the language and as many as you can afford. Because one topic might be better explained in one book the other one in a different one. You should avoid books with big font sizes. For obvious reasons. There is a lot of diversity out there, but its also good idea to buy a book about low level coding. It really helps you in understanding a higher language framework. Don’t trust too much on the internet, alot of misinformation is flying around.