(Part 2) Best machine theory books according to redditors
We found 787 Reddit comments discussing the best machine theory books. We ranked the 61 resulting products by number of redditors who mentioned them. Here are the products ranked 21-40. You can also go back to the previous section.
25. Algebra for Cryptologists (Springer Undergraduate Texts in Mathematics and Technology)
2 mentions
Here's what I'd recommend.
GETTING STARTED WITH DATA SCIENCE
If you're interested in learning data science I'd suggest the following:
 
Tools
Learning these has several benefits: they streamline your workflow. They speed up your learning process, since they are very easy to use. And perhaps most importantly, they really teach you how to think about analyzing data. GGplot2 has a deep underlying structure to the syntax, based on the Grammar of Graphics theoretical framework. I won’t go into that too much, but suffice it to say, when you learn the ggplot2 syntax, you’re actually learning how to think about data visualization in a very deep way. You’ll eventually understand how to create complex visualizations without much effort.
 
Skill Areas
My recommendations are:
(But, again I recommend learning these in R’s ggplot2.) The reason I recommend these is
As with any discipline, you need to learn the foundations first; this will dramatically speed your progress in the intermediate to advanced stages.
I usually suggest learning these with dummy data (for simplicity) but if you have a simple .csv file, that should work to.
After you learn data visualization, I suggest that you “back into” data management. For this, you should find a dataset and learn to reshape it.
The core data management skills:
You can start learning these here. Again, I recommend learning these in R’s dplyr because dplyr makes these tasks very straight forward. It also teaches you how to think about data wrangling in terms of workflow: the “chaining operator” in dplyr helps you wire these commands together in a way that really matches the analytics workflow. dplyr makes it seamless.
ML is sort of like the “data science 301” course vs. the 102 and 103 levels of the data-vis and data manipulation stuff I outlined above.
Here, I’ll just give book recos:
This is a highly regarded introduction
After you get these foundations, then you can move on to specialize in a particular area.
 
OTHER RESOURCES:
Data Visualization
 
TL;DR
I'd recommend learning R for data science before Python. Learn data visualization first (with R's ggplot2), using simple data or dummy data. Then find a more complicated dataset. Learn data manipulation second (with R's dplyr), and practice data manipulation on your more complex data. Learn machine learning last.
Always liked Introduction to Automata Theory, Languages, and Computation by Hopcroft and Ullman as an intro text. Undergraduate-level but good treatment of TCS.
If that's too basic, I recommend Theory of Computation by Kozen. It's roughly 1st-year graduate level, intended for those already with some background.
If that's too basic, for a research-level survey of TCS, take a look at Wigderson's Mathematics and Computation.
Just a few ideas...
$24.20 for the International paperback 3rd edition (new):
https://www.amazon.com/dp/8131720470/
This book might help you: http://www.amazon.com/gp/aw/d/B008PGKDOO?vs=1
Ingo Wegener: Theoretische Informatik: ― eine algorithmenorientierte Einführung (German).
Incredibly dense work. Forces you to think through the topics presented. Definitely makes the lessons stick.
Great book for anyone interested in the theory of CS (Turing machines, Church-Turing thesis, P/NP, Chomsky Hierarchy, ...).
I'd recommend these two for discrete mathematics, I used them during my time in university and they were pretty helpful
A graph theory project! I just started today (it was assigned on Friday and this is when I selected my topic). I’m on spring break but next month I have to present a 15-20 minute lecture on graph automorphisms. I don’t necessarily have to, but I want to try and tie it in with some group theory since there is a mix of undergrads who the majority of them have seen some algebra before and probably bored PhD students/algebraists in my class, but I’m not sure where to start. Like, what would the binary operation be, composition of functions? What about the identity and inverse elements, what would those look like? In general, what would the elements of this group look like? What would the group isomorphism be? That means it’s a homomorphism with a bijective function. What would the homomorphism and bijective function look like? These are the questions I’m trying to get answers to.
Last semester I took a first course in Abstract Algebra and I’m currently taking a follow up course in Linear Algebra (I have the same professor for both algebra classes and my graph theory class). I’m curious if I can somehow also bring up some matrix representation theory stuff as that’s what we’re going over in my linear algebra class right now.
This is the textbook I’m using for my graph theory class: Graph Theory (Graduate Texts in Mathematics) https://www.amazon.com/dp/1846289696?ref=yo_pop_ma_swf
Here are the other graph theory books I got from my library and am using as references: Graph Theory (Graduate Texts in Mathematics) https://www.amazon.com/dp/3662536218?ref=yo_pop_ma_swf
Modern Graph Theory (Graduate Texts in Mathematics) https://www.amazon.com/dp/0387984887?ref=yo_pop_ma_swf
And for funsies, here is my linear algebra text: Linear Algebra, 4th Edition https://www.amazon.com/dp/0130084514?ref=yo_pop_ma_swf
But that’s what I’m working on! :)
And I certainly wouldn’t mind some pointers or ideas or things to investigate for this project! Like I said, I just started today (about 45 minutes ago) and am just trying to get some basic questions answered. From my preliminary investigating in my textbook, it seems a good example to work with in regards to a graph automorphism would be the Peterson Graph.
Implementing SSL/TLS
https://www.amazon.com/Implementing-SSL-TLS-Joshua-Davies/dp/0470920416/ref=sr_1_4?keywords=openssl&qid=1550253200&s=gateway&sr=8-4
practical guide to implementing SSL and TLS. All examples are written in C with the implementation of DES, AES, RC4, Large Integer Arithmetic, RSA, Deffie-Hellman, HMAC, DSA, Elliptic Curve, X.509.
​
For me, the best theoretical books on cryptography, but without deep immersion in mathematics:
Understanding Cryptography: A Textbook for Students and Practitioners
https://www.amazon.com/Understanding-Cryptography-Textbook-Students-Practitioners/dp/3642041000/ref=sr\_1\_1?crid=3700J8SGJK4QP&keywords=understanding+cryptography&qid=1550253725&s=gateway&sprefix=Undes%2Caps%2C295&sr=8-1
and it goes better with video lectures https://www.youtube.com/channel/UC1usFRN4LCMcfIV7UjHNuQg
​
A good book on cryptanalysis for symmetric algorithms:
The Block Cipher Companion (Information Security and Cryptography)
https://www.amazon.com/Cipher-Companion-Information-Security-Cryptography/dp/3642173411/ref=sr_1_fkmrnull_1?crid=NNR5L5I1VYK2&keywords=block+cipher+companion&qid=1550253926&s=gateway&sprefix=The+Block+cipher+%2Caps%2C340&sr=8-1-fkmrnull
​
good exercise: http://cryptopals.com/
​
Automata & Computability by Dexter Kozen is not only my favorite CS theory book, but one of my favorite books in any category.
If you are really interested in theory, start with some material in automata theory. My favorite textbook as an undergrad was Automata & Computability by Kozen, but there are many others (lots of people like Sipser's book, but it's pretty terse). This material is a more classical side of CS, and many view it as outdated. But the theory is elegant & beautiful, and the concepts do underlie many other parts of CS. More importantly, you will start to think of computation as a completely abstract process, divorced from any particular technology.
Automata theory provides a good foundation for compiler theory, and I think it's a great exercise to write a compiler during an undergrad CS degree.
You might also want to look into cryptography (warning: biased crypto opinion to follow). I wouldn't say that crypto is essential in a CS curriculum, but it sure is fun, and thinking formally about security is a good habit for any engineer. The field runs the gamut, from the very pragmatic influence from the systems community, to completely theoretical and abstract influence from the complexity community, and the pure math foundations from abstract algebra. If you dig around a bit, you can surely find a mixture of number theory / abstract algebra, computation, theory, and practice that suits you. Katz/Lindell is the most theoretical undergrad crypto text you're likely to encounter. Stinson has a nice book that is a safer mix of theory & practice.
If you want a more mathematical basis you can get the following:
Introduction to Mathematical Cryptography
Algebra for Cryptologists
Here are all the local Amazon links I could find:
amazon.com
amazon.co.uk
amazon.ca
amazon.com.au
amazon.in
amazon.com.mx
amazon.de
amazon.it
amazon.es
amazon.com.br
amazon.nl
amazon.co.jp
amazon.fr
Beep bloop. I'm a bot to convert Amazon ebook links to local Amazon sites.
I currently look here: amazon.com, amazon.co.uk, amazon.ca, amazon.com.au, amazon.in, amazon.com.mx, amazon.de, amazon.it, amazon.es, amazon.com.br, amazon.nl, amazon.co.jp, amazon.fr, if you would like your local version of Amazon adding please contact my creator.
There are quite a few different types of cryptographic algorithms, some requiring more mathematics to get started than others. But it seems like you might be interested in block ciphers or stream ciphers.
/u/remyroy recommended rotation ciphers, which are probably the simplest and easiest to break.
The NSA has recently produced simple, but important, ciphers: Simon and Speck; release document and Bruce Schneier's comment. It will be difficult to break these ciphers, but at least this might lead you on a path to try to understand what it means to break a cipher.
If you want more information on block ciphers and how to break them, there's The Block Cipher Companion and I found this tutorial on differential and linear cryptanalysis which might provide a gentle introduction, but I haven't read it.
Anyway, have fun.
Or as an even better solution, you can keep track of the accuracy in a meaningful way. There's a much more in-depth explanation of how to completely solve for these rounding and floating point errors in this book:
www.amazon.com/The-End-Error-Computing-Computational/dp/1482239868
Update
Looks like there are some further links
Looks like I won't get cheap, or fast answers to my questions... So life continues and this will be added to the pile of things I'm vaguely interested in but probably cannot apply.
I’m a fan of this one:
Algebra for Cryptologists (Springer Undergraduate Texts in Mathematics and Technology) https://www.amazon.com/dp/3319303953/ref=cm_sw_r_cp_api_Y86XAbKGQE9X2
It talks about the abstract algebra material at an easy to approach undergraduate level and shows how the abstract algebra topics can be applied. It’s part computational and part theoretical which I think is good going at it for the first time.
Took it last spring.
The first third of the course covered basic logic stuff in a very pedantic way. The homework and notes are on OLI and are pretty much the same as Logic and Proofs (80210 i think).
Second third was about set theory stuff and incompleteness.
Last third was about Turing and undecidability, this was the text: https://www.amazon.com/gp/product/0486614719/
As someone who struggled with 251, I didn't find the material here particularly challenging. It's definitely the least rigorous of the CS logic electives. The first midterm was online, second midterm was half online and half in class, final was in class. I believe the 2nd midterm and final were curved pretty generously
Side note: the lectures are in the potato chip lecture hall in Scaife which gets so unbearably freaking hot in the spring semester I almost dropped the class because of it.
Some schools don't cover much in the way of discrete math, formal languages, automata, or proofs... at least not very rigorously. My opinion here is colored by my own experience (and subsequent disappointment, but thats another story), and I'm sure most schools sort of exist on a spectrum. YMMV.
Some books that come to mind (might not be to surprising if you spend a lot of time on CS forums):
[Introduction to the Theory of Computation](
https://www.amazon.com/Introduction-Theory-Computation-Michael-Sipser-ebook/dp/B00B63LSA6)
CLRS Introduction to Algorithms
SICP
I think it's interesting to look at the history of computer science-- read about Bertrand Russel, David Hilbert, the Vienna Circle, Alonzo Church and his students (Alan Turing was one). Computer Science as an academic discipline was kind of born from the questions mathematicians and philosophers were trying to ask in the early 20th century. It's just as much about language as it is about mathematics. I could probably write a wall of text on the topic, but I'll just leave it at that. :)
There's a new book on Information Geometry which doesn't require prior knowledge about Differential Geometry, maybe you want to check it out.
For less messy amazon links you can extract the part after "/dp/" in
https://www.amazon.com/Learning-Robotics-Python-Lentin-Joseph/dp/1783287535/
and make it:
https://amzn.com/1783287535
BEEP BOP
Plz send any recommendations via PM
How about books:
"Machine Learning with R" [1] or "Building Machine Learning Systems with Python" [2]
I have both of those, they're pretty good for beginning IMHO. They provide datasets and code and show analysis after the fact.
[1] -- http://www.amazon.com/Machine-Learning-R-Brett-Lantz-ebook/dp/B00G9581JM/ref=sr_1_1?s=books&ie=UTF8&qid=1407184441&sr=1-1&keywords=machine+learning+with+r
[2] -- http://www.amazon.com/Building-Machine-Learning-Systems-Python-ebook/dp/B00E7NC9D2/ref=sr_1_1?s=books&ie=UTF8&qid=1407184471&sr=1-1&keywords=python+machine+learning
Check out Dexter Kozen's book Automata and Computability, it's a very well formatted book in that it consists of a series of lectures as opposed to a typical textbook with chapters and such. There are practice problems for each lecture too.
Kozen is very highly regarded in the field of theoretical computer science.
https://www.amazon.com/gp/aw/d/0387949070/ref=pd_aw_sim_sbs_14_2/166-2338586-0066212?ie=UTF8&psc=1&refRID=WTB3YAPD3T8RPYC2FBTR
This book is not horrible:
https://www.amazon.com/Learning-Robotics-Python-Lentin-Joseph/dp/1783287535/
There is a forum for it but only one person has ever posted there, and the book's author once. Maybe you could go be friends. :O
http://learningrobotics.forumotion.com/
Yeah, I've heard the same things about Rosen, but I wanted to mention it since the video lectures use Rosen.
The book that the discrete class I'm taking next semester will be using is "Essentials of Discrete Mathematics" by David J. Hunter. From what I have seen, looking through the text, it covers many of the basic materials in a Discrete class. This should be an okay book to use if you find that Rosen isn't to your liking.
I'm a Linguistic BS student, but I've taken many CS classes as a minor and greatly enjoyed them. There's a lot of programming that you don't learn easily from just doing.
The book from that class was this one. Note that it's a CS book, not a programming book, and so a lot of it is based on a knowledge of discrete structures and mathematics (at least a good deal of algebra). Before I took that class I had to take a class that used this book, which is based more-so on logic and discrete mathematics than anything else.
You won't learn to program from those books. What you will learn is the fundamentals behind the data structures and algorithms that every major language is based on. When I learn a new language, I find myself understanding the various data structures very quickly because I have theoretical background. My friend who has a more IT-oriented background from a different college usually has to learn the details of new languages by analogy, and it seems to take him some time.
This one is quite good if you are getting started
https://www.amazon.com/Digital-Design-Verilog-HDL-Fundamentals-ebook/dp/B008CGQIEQ/#nav-subnav
Another one by same author
https://www.amazon.com/Computer-Arithmetic-Verilog-HDL-Fundamentals-ebook/dp/B005H7L0XW/#nav-subnav
That said, you can search online for tutorials, and start practicing. If you are a software guy, you first need to unlearn the "procedural" code flow. Verilog is like circuit instantiation. It does not matter what is instantiated first(or put in a circuit board first), its the control flow which matters.
Kozen's book is basically preparation for a ToC prelim. Seems good to me.
Excellent reference texts that will give you a good idea of what you are getting yourself into:
edit - borken link
Sorry. The sentence is not circular. It only appears to be circular. The ideas are clearly explained in text books on computability theory. Or if you are smart and patient you can just read Turing's original paper, or if you are really smart and really patient Goedel's work as well. Take your time and use your own mind to form your own opinion.
https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf
https://en.wikipedia.org/wiki/G%C3%B6del%27s_incompleteness_theorems
My introduction was in this book:
https://www.amazon.com/Computability-Unsolvability-Prof-Martin-Davis/dp/0486614719
For more original sources:
https://www.amazon.com/Undecidable-Propositions-Unsolvable-Computable-Mathematics/dp/0486432289#reader_0486432289
No problem! Also, if you can spare $10 is recommend picking up a copy of Machine Learning for the Absolute Beginner, it's how I got started https://www.amazon.com/Machine-Learning-Absolute-Beginners-Introduction-ebook/dp/B06VXKBLNG