I like the book, I read almost every letter, the explanation is correct, but when it comes to code, when I test it in my code editor, the code is wrong and does not work correctly, like in the binary search in Chapter 10, there is something wrong with the while loop , I did PR on GitHub and I fixed it.
In Chapter 4, the writing code for RSA Encryption is a bit vague, he was right but when you study the code carefully it is a bit far from what he said so it is a bit confusing, for example, he explains the private key generation key and public key to encrypt the message using the public key, but when you decrypt the message it comes out differently when using the private key.
I do not say he is wrong, but he did not mention the library to handle the large number, for example, we have a secret message of 2, higher than that will result to incorrect decryption. JavaScript internally uses floating point operation. If the numbers get big you should not be surprised if the answer is incorrect. This is because the prime factorization of large numbers takes time to compute. Today’s standard is 4,096-bit prime product.
The only downside is, he did not mention the library to handle such a large number, for example, there is a big integer library that developers use to handle RSA Encryption to provide the correct result.
But in general, it is good because in the following chapters I learned a lot of concepts, especially in the string searching algorithm in Chapter 18, Classical Dynamic Programming Examples in Chapter 19, and most recently, Chapter 20, the Bit Manipulation especially in Number Operators.
Straightforward, simple and concise approach to explain basic data structures and algorithms.
Some implementations may not be the most appropriate to the time complexity and for this I took off a star. Nonetheless, this is a very good treatment of understanding the foundations of solving problems using computer instructions.