Using computers as more than glorified typewriters or calculators is an increasingly important aspect of any scientific or technological field, and knowing how to program a computer to solve new problems is becoming as essential a skill as mathematics. Learning how to program can be a frustrating experience at times since computers require a level of preciseness and rigour in how we must express that we never encounter elsewhere in life. On the other hand, learning how to program can also be very rewarding. It is a special feeling to seeing a computer translate your thoughts into actions and see it solve your problems for you. To get to that point, however, you must learn to think about computations in a new way—you must learn computational thinking.
Before you buy this book, be aware that it is a work in progress! I am updating it one chapter at a time. If you buy this version, though, you also get all the updates coming later.
If you want to be kept up to date on updates to this book, you can sign up to this mailing list (it is only used for information about this specific book): https://mailchi.mp/bf1b14102813/jw5gv474ng