(Don't Forget the Explainer's Guides, Too)
Strange Code (2022)
Esoteric Languages That Make Programming Fun Again
Explore the wonderful, wild, and often weird world of esoteric programming languages. The book begins with the history and theory of programming languages, addressing concepts like Turing machines and Turing completeness. You’re then treated to a tour of three "atypical" programming languages, real languages that are unusual and require out of the box thinking. Following that are five chapters on existing esoteric languages (esolangs), some of which are easy to use, others quite difficult, and others novel because of their approach (programming with pictures, for example). Finally, the remaining chapters detail the development and use of two entirely new programming languages.
The main point of the book is to encourage readers to think differently about what it means to express thought using a programming language, and to explore the limits and boundaries of what a programming language might be. Though readers aren’t likely to use any of these languages in their day jobs, learning to think in these languages will make them better, more confident programmers.
Math for Deep Learning (2021)
What You Need to Know to Understand Neural Networks
Math for Deep Learning provides the essential math you need to understand deep learning discussions, explore more complex implementations, and better use the deep learning toolkits.
With Math for Deep Learning, you'll learn the essential mathematics used by and as a background for deep learning.
You’ll work through Python examples to learn key deep learning related topics in probability, statistics, linear algebra, differential calculus, and matrix calculus as well as how to implement data flow in a neural network, backpropagation, and gradient descent. You’ll also use Python to work through the mathematics that underlies those algorithms and even build a fully-functional neural network.
In addition you’ll find coverage of gradient descent including variations commonly used by the deep learning community: SGD, Adam, RMSprop, and Adagrad/Adadelta.
Practical Deep Learning (2021)
A Python-Based Introduction
Practical Deep Learning teaches total beginners how to build the datasets and models needed to train neural networks for your own DL projects.
If you’ve been curious about machine learning but didn’t know where to start, this is the book you’ve been waiting for. Focusing on the subfield of machine learning known as deep learning, it explains core concepts and gives you the foundation you need to start building your own models. Rather than simply outlining recipes for using existing toolkits, Practical Deep Learning teaches you the why of deep learning and will inspire you to explore further.
All you need is basic familiarity with computer programming and high school math—the book will cover the rest. After an introduction to Python, you’ll move through key topics like how to build a good training dataset, work with the scikit-learn and Keras libraries, and evaluate your models’ performance.
The perfect introduction to this dynamic, ever-expanding field, Practical Deep Learning will give you the skills and confidence to dive into your own machine learning projects.
Random Numbers and Computers (2018)
This book covers pseudorandom number generation algorithms, evaluation techniques, and offers practical advice and code examples. Random Numbers and Computers is an essential introduction or refresher on pseudorandom numbers in computer science.
The first comprehensive book on the topic, readers are provided with a practical introduction to the techniques of pseudorandom number generation, including how the algorithms work and how to test the output to decide if it is suitable for a particular purpose.
Practical applications are demonstrated with hands-on presentation and descriptions that readers can apply directly to their own work. Examples are in C and Python and given with an emphasis on understanding the algorithms to the point of practical application. The examples are meant to be implemented, experimented with and improved/adapted by the reader.
Numbers and Computers (2017)
This is a book about numbers and how those numbers are represented in and operated on by computers. It is crucial that developers understand this area because the numerical operations allowed by computers, and the limitations of those operations, especially in the area of floating point math, affect virtually everything people try to do with computers. This book aims to fill this gap by exploring, in sufficient but not overwhelming detail, just what it is that computers do with numbers.
Divided into two parts, the first deals with standard representations of integers and floating point numbers, while the second examines several other number representations. Details are explained thoroughly, with clarity and specificity. Each chapter ends with a summary, recommendations, carefully selected references, and exercises to review the key points. Topics covered include interval arithmetic, fixed-point numbers, big integers and rational arithmetic. This new edition has three new chapters: Pitfalls of Floating-Point Numbers (and How to Avoid Them), Arbitrary Precision Floating Point, and Other Number Systems.
This book is for anyone who develops software including software engineers, scientists, computer science students, engineering students and anyone who programs for fun.
Arithmetic Explained (2022)
From Memorization to Understanding
If you've forgotten how to multiply or do long division, let alone work with percentages, this book is for you. Arithmetic Explained begins at the beginning, with numbers and place notation, then explains arithmetic, step by step, from addition through subtraction to multiplication and division before finally ending with percents.
Arithmetic Explained is for adults who have forgotten, or never really learned, how to do arithmetic; the only mathematics the vast majority of us actually need. By the end of the book, not only will you remember what you likely learned as a child, but you'll understand the why behind the steps, something children are seldom taught.
Each chapter details the necessary steps, warns of pitfalls and offers plenty of examples.
Chapters end with exercises (and solutions) plus a mind-expanding Think About It section. The book's companion website includes even more worksheets. Arithmetic need not be painful or boring.