# lit

Literally just literature. Books for the self-taught AI practitioner.

This is a curated collection of technical books that I've found useful in my career as a data scientist. I'm mostly self-taught, though I have a formal background in psychology, linguistics, and laboratory science. My career has been based around NLP (specifically speech) with forays into other regions of the ML, AI, and the engineering world.

These books are sorted by topic; the books under each heading are vaguely ordered from introductory/general to technical/specific, with some of the "behemoths" listed last.

I can't guarantee that all of these books have been acquired in a lawful way.

Have fun

Read this for more details about how to get started

## artificial intelligence

### NLTK Book

A quick and easy tour-de-force of all the major topics in the field of natural language processing. This book is very code-focused, and mostly relies on native Python and the eponymous *NLTK* library, which in practice serves mostly as a learning library. You should read this book in part because it's easy and useful, and in part because *everyone* in NLP seems to have read it at some point.

### Speech and Language Processing

This is the bible of natural language processing - it covers every major topic and treats them all with depth. Well written and very up-to-date. This book is formal and math-focused, with academic-style pseudocode and no Python in its chapters. If you're able to fully grok this book, you'll be cut out for any job in the NLP world.

### Deep Learning Book

The bible of deep learning - it has broad coverage of all the major topics in deep learning as well as lots of depth in each topic. Formal, mathy, and academic - in places this book is impenetrable, and in other places it reads like a good novel. If you want to take your knowledge of DL to the next level, you need to read this book. Also: read it because everyone else has read it.

### Zero to Deep Learning

This book is extremely hands-on: little formal math but lots of code examples. The purpose of this book is *not* to give the reader an exhaustive knowledge of deep learning; rather, it's to give an engineer the conceptual framework and tools (keras, tensorflow, etc) to start solving real-world problems fast. The author of this book plagiarized a ML app that I created so I don't feel guilty putting his book online.

### The Elements of Statistical Learning

A strong, mathy overview of machine learning, including deep learning. A book that most AI practitioners will encounter at some point.

### Artificial Intelligence: A Modern Approach

The bible of artificial intelligence: all the background ideas, theories, and debates you'll encounter in the AI field will be presented here. This book can feel a little archaic as some of the techniques presented have fallen out of use, but understanding the history of the field is just as important as being a theoretician or a hacker.

## data science

### Hands on Machine Learning

A solid introduction to the practice of data science. Good mixture of code and theory. This book covers all the basics that an entry-level data scientist should be familiar with: descriptive statistics, modeling, data visualizations, deep learning, etc. Emphasis is placed on *sklearn* and *tensorflow*. This was the first "data scientist" book that I read and it was enough to get me a job in the industry.

### SQL Cookbook

Another massive O'Reilley textbook. I used this to learn the basics of SQL and still return to it from time to time with questions, but I've found the website SQL Zoo much more useful for getting up and running with SQL, so I'd start there before moving on to this book.

## computer science

### Code

If you're self-taught like me, you probably developed a scattered knowledge of the useful bits of programming/engineering without knowing the fundamentals. However, like me, you probably had lurking doubts about "how this stuff actually works" - this book will calm your worried mind. Starting with the basics of electricity and circuits, this book moves slowly and carefully through the fundamental hardware pieces, logic gates, and assembly so that by the end you'll finally understand how code **actually** works.

### Grokking Algorithms

A gentle introduction to computer algorithms and analysis. This book covers all the basic problems you'll encounter in an undergraduate compsci algorithms class: Big O, the traveling salesman problem, dynamic programming, linked lists, etc. If you're totally new to "algorithms" (in the SWE interview sense) this is the place to start. Also: the previous book, *Code*, takes us from electricity to programming languages - but ends before any algorithms are introduced.

### Cracking the Coding Interview

This book is the standard text recommended for the dreaded algorithms interview that software engineers encounter. It's written by a Google hiring manager and has practical interview advice as well as algorithm tips. There might be better books out there nowadays, but despite being written in *Java* it's still good. Also, you should read it because everyone else reads it. This book is more advanced than *Grokking Algorithms*.

### Introduction to Algorithms

This is the bible of computer science algorithms. Totally comprehensive, stuffed with terrifying equations, and too thick to fit in a backpack - if you memorize this book, you're guaranteed a SWE job at the FAANG company of your choice... That being said, I only consulted portions of this book, and that seems to be how it's generally used: everyone has encountered this behemoth, but only the truly brave have made it from cover to cover...

### The Structure and Interpretation of Computer Programs

A big, broad, biblical overview of the field of computer science. A book that all the "old guru's" have read. Definitely archaic (code is written in *Lisp*) but worth a non-close-reading.

## programming

### Learn Python the Hard Way

This book uses the *throw the baby in the pool* approach to teaching: you look at the code, you see how it works, and you learn. Simple, in your face, and a good place for a total beginner to start. This was the first programming book I ever read (I used the Python 2 version) but I recently opened it again and the Python 3 version (this one) is still great.

### Effective Python

This is a really solid intermediate Python text. Once you've mastered the basics of the language and done a few little projects but feel like you're ready to learn how professionals really do things, this is a good book to turn to. In addition to demonstrating concepts you probably haven't encountered in an introductory text, it emphasizes what **not** to do.

### JavaScript: the Definitive Guide

I'm mostly a Python guy, but I dip into JS every once in a while. This is a pretty standard O'Reilly book, but it's useful for getting a feel for the language. When I write in JavaScript, I still find myself thinking in Python and translating to JS, but it's useful to have a reference text like this to know how things *should* be written.

### Mastering Python Regular Expressions

Kind of specific, but regexes are useful and you shouldn't just ignore them when you can sit down, read a short book like this one, and leave feeling totally comfortable with them. There were periods in my career when I used regexes every day.

## operating systems

### Unix for Poets

Literally everyone who ever plans to use the command line should read this short monograph - even experienced users will learn something. Short little haikus that allow you to unlock the potential of the unix terminal and do some cool stuff. The focus is on NLP, but you'll find uses elsewhere. This was recommended by one of the genius ancient computer scientists on the Siri team when I worked at Apple.

### How Linux Works

If you've just started exploring the world of the command line (peering beneath the surface of the Graphical User Interface) and feel frightened by what you see, this book will demystify things. Lots of details about the shell, the file system, and other things you encounter when exploring Linux - most of the knowledge here is transferrable to a MacOS environment as well.

## math/stats

### Doing Math with Python

A cute re-introduction to math from the perspective of programming. No super advanced or surprising concepts make it into this book (it's all just high school math), but it's a nice reality check if you're used to thinking of math and programming as two totally different domains.

### Introduction to Mathematical Statistics

A great introduction to the fundamentals of mathematical statistics. Although this is a math book, the problems and proofs are convincing and practical, and it's pleasant to read. A similar but slightly inferior book is Mathematical Statistics and Data Analysis which I decided to include here too.

### Mathematics for Machine Learning

If you've started a career in AI but have some nagging doubts that your math knowledge might be incomplete, this is the book that'll plug up all the holes in your knowledge. The title says it all: it's a tour de force of all the math you need to understand ML and feel confident.

### Elements of Information Theory

Information theory is not often talked about in the corporate world, but it has many parallels with the "standard suite" of mathematical techniques you'll encounter. For someone wanting a truly well-rounded AI background, information theory is worth looking into.

### Understanding Digital Signal Processing

Like information theory, DSP is another area of mathematics that AI people will extract tools and ideas from (like fourier analysis) but usually not go deeply into - if you want to go deep, this is the book to read!

### The Princeton Companion to Mathematics

There's a lot else going on in math apart from linear algebra, information theory, and DSP. This cinderblock-sized book is comprehensive - read it and you'll be able to have a real conversation with a mathematician without your eyes glazing over.

## networks

### Flask Web Development

If you're using Python and want to start doing web development, this is a good place to start. Flask is ubiquitous in the Python world and if you want to make interesting projects, you should get confortable with it. This book is hands-on and not at all concerned with theory. If you've never heard of HTML before, this might be a little bit too advanced for you, but if you've made a static website and want to get to the next level, start here.

### Internet Routing Architectures

A painfully in-depth book about how the internet works. Unlike the Flask book, this one is theoretical and won't be super relevant to your job as an AI practitioner. But if you ever want a boost of confidence - the feeling that you *get* how the internet works - this is a great resource.