must read
you must read these books.
The Little Schemer
By Daniel P. Friedman and Matthias Felleisen
This book is an introduction into the world of Lisp. It teaches you to think in terms of recursion.
Just some of the things it contains:
- Building on top of primitives
- Functions: the essence of abstraction
- Approaching computation from a functional perspective
- Termination
- Applicative-order Y combinator
- Meta-circular evaluator
Sequels: The Seasoned Schemer, The Reasoned Schemer
The C Programming Language
By Brian Kernighan and Dennis Ritchie
Essential to understanding how most modern programming languages work under the hood.
Introduction to basic algorithms and data structures:
- Linked list
- Hash table
- Sorting algorithms
- Recursive descent parser
- Binary search tree
- Virtual stack machine
Understanding Computation
By Tom Stuart
Fundamental understanding of what computation is at its core. Computer science topics explained in a very approachable way, through implementing various simple machines in very few lines of ruby code.
Just a rough sampling of what it covers:
- Semantics
- Finite state machine
- Pushdown automata
- Turing machine
- Lambda calculus
- Universality
- Halting problem
Code
By Charles Petzold
How computers work. Explains all the details of how hardware operates with almost no handwaving, including a whole bunch of historical information. Finishes with building an actual computer from scratch.
- Binary codes
- Basic electronics
- Logic gates
- Binary adder
- Flip-flops, Clocks
- CPU
- Assembly
Gödel, Escher, Bach
By Douglas Hofstadter
A beautiful journey through formal systems, levels of abstraction, recursion, attempting to describe how consciousness can arise from lower levels. Decent introduction to propositional logic. Punny dialogues.
- Strange loops
- Formal systems
- Recursion
- Intelligence
- Levels of abstraction
- Meaning
- Propositional logic
- The brain
- Consciousness
- Computation
- Genetics
- Artificial intelligence
The Annotated Turing
By Charles Petzold and Alan Turing
A very heavy but authentic description of turing machines and the unsolvability to the Entscheidungsproblem. Requires some understanding of turing machines and propositional logic to grasp. Lots of little historical notes.
- Number theory
- Turing's machine
- Universal machine
- Propositional logic
- Entscheidungsproblem
- Equivalence to lambda calculus
- Intuitionistic logic
Unlocking the Clubhouse
By Jane Margolis and Allan Fisher
Boys invent things and girls use things boys invent.
We have a diversity problem. It's a cultural problem. This book sheds some light on why women and other minorities are "out of the loop" of computing, and how we might fix the leaky pipeline.
This case study at CMU showed that by changing culture and mindset, computer science education can be made more accessible, so that future generations of makers will be diverse enough to survive.
We should probably also fix the toxic culture in our industry to actually keep these diverse people.
Feminism is for Everybody
By bell hooks
What is feminism?
Feminism is a movement to end sexism, sexist exploitation and oppression.
Come closer. See how feminism can touch and change your life and all our lives. Come closer and know firsthand what feminist movement is all about. Come closer and you will see: feminism is for everybody.
Logicomix
By Apostolos Doxiadis and Christos Papadimitriou
A graphic novel telling the tale of Bertrand Russel's journey through early 20th century mathematical logic.
It is indeed an epic search for truth.
Unspeakable Things
By Laurie Penny
I will make you a sandwich. It will be stuffed with the dust of history, and I hope you choke on it.
The chapter on cybersexism is particularly relevant to all nerds. Just read it.