i've seen some ridiculous virtue signaling recommendations on hn before but this takes the cake. have you actually read the book? wigderson is an IAS professor (for those that don't know, einstein and godel were IAS professors) and this book is a research survey (most of the theorems have refs to papers). i've read both sipser and hopcroft ullman and i'm still pretty far away from being able to easily read it. and you're recommending this to someone that learned js from a bootcamp. you think maybe she's not the target audience?
so that i'm not labeled as just a critic: the standard formal languages book is sipser
https://www.amazon.com/Introduction-Theory-Computation-Micha...
it's colloquial and has a lot of diagrams and "intuition". people really like it but i actually think hopcruft ullman is better because it's more structured
https://www.amazon.com/Introduction-Automata-Theory-Language...
https://www.amazon.com/Introduction-Theory-Computation-Micha...
[1] https://en.wikipedia.org/wiki/Halting_problem
[2] https://www.amazon.com/Introduction-Theory-Computation-Micha...
Here's a short-ish overview: http://www.math.uchicago.edu/~may/VIGRE/VIGRE2011/REUPapers/...
For a more extensive overview, try this textbook by Michael Sipser (Amazon Affiliate Link if feeling generous: http://amzn.to/2fy9tKZ, Google Books link otherwise: https://books.google.com/books?id=1aMKAAAAQBAJ&dq=introducti...).
If you want to get technical and deep, you probably want [2] (An introduction to Kolmogorov complexity and its applications). It's pretty hard, though. Not for the faint of heart.
[1] http://www.amazon.com/Introduction-Theory-Computation-Michae...
[2] http://www.amazon.com/Introduction-Kolmogorov-Complexity-App...
EDIT:
Off the top of my head, for CS:
Introduction to Algorithms: https://mitpress.mit.edu/books/introduction-algorithms
Introduction to the Theory of Computation: http://www.amazon.com/Introduction-Theory-Computation-Michae...
Math:
Calculus Made Easy: http://www.amazon.com/gp/product/0312185480?ref_=cm_lmf_tit_... - I'm really not sure how good this one is for a beginner, I picked it up while assisting my sister in refreshing her calculus skills for grad school (Aerospace Engineering)
I can't remember the algebra and geometry textbooks (my dad's or my grandfather's) that I used, in addition to the assigned text, in high school.
Anything by Knuth. Seriously, one summer a professor and I just picked up copies of Concrete Mathematics and worked through large portions of it for fun. Technically I got some math credits for it, but it was really just because we wanted to. Actually, this one helped me a lot with understanding calculus. Somehow, up to that point while I knew calculus, may brain had never made the connection that integration was summation until I saw the discrete counterpart to continuous integration. I had a mechanical understanding, but no deep understanding until that moment.
http://www.amazon.com/Introduction-Theory-Computation-Michae...
It is also used for the graduate course.
It's used at MIT (http://math.mit.edu/~sipser/18404/), the U of MN (where I used it), and—I'm sure—most other schools.
You can buy the newest edition, but you'll spend an extra $150 for not much gain.
If not, doing a good portion of the exercises in some books on [compilers](http://www.amazon.com/Compilers-Principles-Techniques-Tools-...), [DFAs/State Machines](http://www.amazon.com/Introduction-Theory-Computation-Michae...), Algorithms (http://www.amazon.com/Introduction-Algorithms-Thomas-H-Corme...) and theoretical programming (https://mitpress.mit.edu/sicp/full-text/book/book.html) can give you some common foundational lenses with which to see these articles
2> Learning the history of your field
Nothing informs the current state of the field more than how we got here! Learn the foundation of your field from people who lived it. The podcast [Debug](http://www.imore.com/debug) is Guy English (Creator of Napkin and other apps) along with Rene Ritchie interviewing people about the history of Cocoa and CocoaTouch
I found [this episode about AutoLayout and Key Ferry illuminating](http://www.imore.com/debug-33-ken-ferry-auto-layout-passbook...).
3> Go through early versions. Few systems START complex. Look at OLD books for EARLY versions of systems, and why old php made such silly choices is obvious (hint, they weren't that silly for what it was doing). Read books and commentary through the timeline. Understand the history of what's happening to the language, then you'll understand why you are where you are.
4> Go DOWN the stack. Understand the bottom of Objective C by reading [the open source implementation of Core Foundation and more](http://www.gnustep.org/). Also available elsewhere (and I think somewhere on Apple's Site still).
5> Do what you shouldn't! Don't ship it, but really use those implementation details to do something awesome and amazing. You'll learn tons about what's happening.
PS: To the mods, those aren't affiliate links
If you want to learn about Algorithms and Data Structures and you have a strong math background, then CLRS is the book to get: http://www.amazon.com/Introduction-Algorithms-Thomas-H-Corme...
An undergraduate CS curriculum will mostly cover the parts I-VI of the book (that's around 768 pages) plus a few chapters from the "Selected Topics Chapter" (we covered Linear Programming and String Matching). Mind you, this book is very theoretical, and all algorithms are given in pseudocode, so if you don't know any programming language, you might have to go with a an algorithms textbook that is more practical. In my DS course we had to implement a Red-Black tree and a binomial heap in Java, and in my Algorithms course we only wrote pseudocode.
Maybe Sedgewick's (Knuth was his PhD advisor!) "Algorithms (4th ed)" will be a better choice for a beginner, as it shows you algorithm implementations in Java: http://www.amazon.com/Algorithms-4th-Edition-Robert-Sedgewic... (If you decide to go this route, you might as well take his two Algorithms courses on Coursera, they will really help).
There are also a bunch of Python-based introductions to computer science which have a broader focus than just teaching specific data structures and algorithms. Some of them emphasize proper program design, debugging and problem solving. I haven't read any of them, so I can't vouch for them, but here are a few of the more popular ones:
* http://www.amazon.com/Introduction-Computation-Programming-U...
This book was written to go along with John's edX course: https://www.edx.org/course/mitx/mitx-6-00-1x-introduction-co...
* http://www.amazon.com/Python-Programming-Introduction-Comput...
Oh and btw, there's also the Theory of Computation, which is a major part of CS theory. Here are a few MOOCs and recommended books on the subject:
MOOCS:
* https://www.coursera.org/course/automata
* https://www.udacity.com/course/cs313
Books:
* http://www.amazon.com/Introduction-Theory-Computation-Michae...
Sipser's book is probably the best introduction to the theory of computation, and I believe its last chapter deals with Complexity theory as well.
* http://www.amazon.com/The-Nature-Computation-Cristopher-Moor...
I loved this book very much. It has a very informal and conversational style (don't let it fool you, the problem sets can be HARD).
* http://www.amazon.com/Computational-Complexity-A-Modern-Appr...
Once you are familiar with some computation models, its time to study computational complexity and this is one of the best books on the subjects. It is used both for graduate and undergraduate courses.
[1] http://www.amazon.com/First-Course-Abstract-Algebra-Edition/...
[2] http://www.amazon.com/Introduction-Theory-Computation-Michae...
[1] http://www.amazon.com/Introduction-Theory-Computation-Michae...
[2] http://www.amazon.com/Introduction-Theory-Computation-Michae...
[1] http://www.amazon.com/Introduction-Theory-Computation-Michae...
[2] http://www.amazon.com/Introduction-Theory-Computation-Michae...
http://www.amazon.com/Introduction-Theory-Computation-Michae...
Though I get the impression you're looking for something a bit more like an oreilly cookbook or nutshell book.
That kind of thing I learned in a class: a textbook on computational theory is probably what you want, and as far as I know there are only a couple of those. I used this one: http://www.amazon.com/Introduction-Theory-Computation-Michae...
Keyword here is _work_.
http://www.amazon.com/Introduction-Theory-Computation-Michae...
The Sipser book[2] is also generally recommended as being very good.
[1]: https://www.amazon.com/gp/product/0201441241/
[2]: https://www.amazon.com/Introduction-Theory-Computation-Micha...