(Part 2) Top products from r/compsci

Jump to the top 20

We found 106 product mentions on r/compsci. We ranked the 669 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.

Next page

Top comments that mention products on r/compsci:

u/sanyasi · 11 pointsr/compsci

TAOCP is too hard: its like one of those fantasy wishlist items: the kind of thing every computer scientist wishes they had read but never really has the time to. Some nicer books that are gold standards in their respective fields are:

CLRS (Algorithms)

SICP (Just see the top two amazon reviews)

Kernighan and Ritchie (if you want to be a pretty accomplished C programmer and have little to no real C experience before)

Since you mentioned security, Ross Anderson's Security Engineering is a fantastic read, and very easy to parse: you could read it through in less than a week and have a deeply changed view of the structural issues in security: there is little crypto in the book (for that, Schneier is the gold standard) but more discussion about protocols, where protocols fail, real-world protocols like the military classification scheme, etc. It is absolutely fantastic. If you read this and Schneier you'd have a very thorough understanding of the entire security stack.

Kleinberg and Tardos is a much easier read than CLRS when it comes to algorithms, doesn't cover as much, and is very graceful in its explanations. Personally, I love it.

u/scohan · 2 pointsr/compsci

I think this might be beyond what you're looking for, but I really enjoyed Pattern Recognition and Machine Learning. It's very heavy on statistics, and if you're looking into machine learning methods, it has a wonderful amount of mathematical information given in a fairly clear manner. It might be severe overkill if this isn't your field, but I thought I'd mention it since you said AI.

For AI in general, I see Artificial Intelligence: A Modern Approach used a lot. It gives some solid basic concepts, and will be helpful in getting you started writing basic AI in your applications.

I can't really recommend discrete math because, despite enjoying it quite a bit, I haven't found a textbook that I like enough to endorse. My textbook for it in college was by Rosen, and I despised it.

edit:
Just double checked it, and I would stay far away from the first recommendation unless you have a very extensive knowledge of sophisticated statistics. I like it because it gives the math that other books gloss over, but it's not good for an introduction to the subject. It's almost like going through a bunch of published papers on some new cutting edge methods. The ever popular Machine Learning by Thomas Mitchell is a much better introduction to machine learning. If you want to obtain the mathematical depth necessary for your own research into the field, go with the other book after you've gotten acquainted with the material. I'll leave my suggestion up anyway in case anyone here might find it interesting.

u/cabbagerat · 10 pointsr/compsci

Start with a good algorithms book like Introduction to algorithms. You'll also want a good discrete math text. Concrete Mathematics is one that I like, but there are several great alternatives. If you are learning new math, pick up The Princeton Companion To Mathematics, which is a great reference to have around if you find yourself with a gap in your knowledge. Not a seminal text in theoretical CS, but certain to expand your mind, is Purely functional data structures.

On the practice side, pick up a copy of The C programming language. Not only is K&R a classic text, and a great read, it really set the tone for the way that programming has been taught and learned ever since. I also highly recommend Elements of Programming.

Also, since you mention Papadimitriou, take a look at Logicomix.

u/jeykottalam · 8 pointsr/compsci

Introduction to Algorithms by CLRS

TAOCP is a waste of time and money; it's more for adorning your bookshelf than for actually reading. Pretty much anyone who suggests TAOCP and is less than 55 years old is just parroting Standard Wisdom™.

Godel, Escher, Bach is a nice book, but it's not as intellectually deep in today's world as it was when first published; a lot of the memes in GEB have been thoroughly absorbed into nerd culture at this point and the book should be enjoyed more as a work of art than expecting it to be particularly informative (IMO).

If you're interested in compilers, I recommend Engineering a Compiler by Cooper & Torczon. Same thing as TAOCP applies to people who suggest the Dragon Book. The Dragon Book is still good, but it focuses too much on parser generators and doesn't really cover enough of the other modern good stuff. (Yes, even the new edition.)

As far as real programming goes, K&R's The C Programming Language is still unmatched for its quality of exposition and brevity, but these days I'd strongly suggest picking up some Python or something before diving into C. And as a practical matter, I'd suggest learning some C++ from Koenig & Moo's Accelerated C++ before learning straight C.

Sipser's Introduction to the Theory of Computation is a good theory book, but I'd really suggest getting CLRS before Sipser. CLRS is way more interesting IMHO.

u/njoubert · 1 pointr/compsci

I would suggest that the carlh programming guides is not a bad idea then!

I would heavily suggest learning C well - this is a language that was designed to stay close to the hardware while being portable, and is a very small language. So, buy a copy of the K&R Book, ever C programmer has one.

Then, Patterson's book is a tome for computer engineering. It'll show you assembly, all the way down to NAND gates.

I would suggest you start by watching and working through Berkeley's CS61C course. It's the logically second course in CS, and after a quick overview of C it dives into the machine itself. Website here, videos here. Also, Dan Garcia is an excellent lecturer.

Once you have all the machine details down, you'll probably feel hampered by your actual program wizardry. This is where you start looking into algorithms and data structures. Your go-to guide here is probably Cormen's Introduction to Algorithms since it handles both data structures and algorithms. It's definitely more of a theoretical/CS-ey book, so if this is not what you want, then Head First Java will teach you a new language (and learning more languages is one of the best ways to grow as a programmer!) and also do many data structures. In fact, you can get both those books and have the light side and the serious side of programming books.

At this point you should be well equipped to go off in whatever direction you want with programming. Start contributing to open source projects! Find things that interest you and try to solve problems! Being a part of the programming community will be your biggest aid in both learning programming and starting to make money through it. People pay for programmers that they know can deliver, and success in the open source world means a lot, and you don't need to go to school for it to get to this point!

Lastly, many CS/programming folks hang out on IRC. If you have questions, find the appropriate IRCS channels and go talk to people. Good luck and welcome to programming!

u/ElectricRebel · 1 pointr/compsci

I'd say CLRS is the most fundamental, since all CS is built on algorithms.

For architecture/systems people (my area):

Computer Architecture: A Quantitative Approach by Patterson and Hennessy. Their other book Computer Organization and Design is excellent as well (and should be read first).

All books by Andrew Tanenbaum. His distributed systems, OS, and network books are excellent reads.

The Dinosaur book for OSes.

I also really like Smith/Nair for Virtual Machines. It is a new book and is not among the classics yet, but it is great.

For memory, caches, and disks, I recommend Jacob. It is also a newer book, but is essential to understand the Von Neumann bottleneck and possible solutions.

And, of course, the dragon book for getting started compilers. Then Ken Kennedy for advanced compilers.


And as a side note:

For AI, Russell and Norvig is required reading.

For type systems, Pierce is awesome.

u/sriramalka · 11 pointsr/compsci

This is a good list. I'd definitely not go for Winskel's book, and I'd skip the Dragon book because I think it is quite out of date (nothing on type systems, or first-class functions or even objects).

For languages, I'd go with Andrew Appel's Modern Compiler Implementation in Java (or "in ML"), and for language semantics, I'd go with
Semantics with Applications: An Appetizer, followed by Pierce's Types and Programming Languages (TAPL).

Also, Knuth's Concrete Mathematics is very very good, but is heavily skewed towards number theory. It is a must-read if one's interests are in crypto, but won't help you at all if for example, you want to work with databases, theorem proving, programming languages etc. You need a solid set theory foundation. Or if you were interested in graphics or machine learning, I'd go for a solid linear algebra foundation.

There are no systems books on your list, so I'd suggest one on operating systems: it is free and very good.
Operating Systems: Three Easy Pieces

u/tetramarek · 2 pointsr/compsci

I watched the entire course of Data Structures and Algorithms by Richard Buckland (UNSW) and thought it was excellent.
http://www.youtube.com/playlist?list=PLE621E25B3BF8B9D1

There is also an online course by Tim Roughgarden (Stanford) currently going on. It's very good but I don't know if you can still sign up.
https://class.coursera.org/algo

Topcoder.com is a fun place to test your skills in a competitive environment.

That being said, based on the description you are interested in things which don't usually fit into algorithms books or courses. Instead, you might want to look into machine learning and maybe even NLP. For example Pattern Recognition and Machine Learning by Bishop and Foundations of Statistical Natural Language Processing by Manning & Schuetze are great books for that.

u/willardthor · 2 pointsr/compsci

(Note: I wrote this elsewhere)

Discrete Mathematics. It teaches the basics of the following 5 key concepts in theoretical computer science:

u/Shadowsoal · 11 pointsr/compsci

In the theoretical field of complexity...

The 1979 version of Introduction to Automata Theory, Languages, and Computation by Hopcroft & Ullman is fantastic and used to be the canonical book on theoretical computer science. Unfortunately the newer versions are too dumbed down, but the old version is still worth it! These days Introduction to the Theory of Computation by Sipser is considered to be the canonical theoretical computer science text. It's also good, and a better "introduction" than H&U. That said, I prefer H&U and recommend it to anyone who's interested in more than getting through their complexity class and forgetting everything.

In the theoretical field of algorithms...

Introcution to Algorithms by Cormen, Leiserson, Rivest and Stein is dynamite, pretty much everything you need to know. Unfortunately it's a bit long winded and is not very instructive. For a more instructive take on algorithms take a look at Algorithms by Dasgupta, Papadimitriou and Vazirani.

u/gmarceau · 2 pointsr/compsci

Like you I work at a tech startup. When we were just starting, our business/strategy people asked the question you just asked. They opened a dialog with development team, and found good answers. I attribute our success in large part to that dialog being eager and open-minded, just as you are being right now. So, it's good tidings that you are asking.

For us, the answer came from conversation, but it also came from reading the following books together:

  • The Soul of a new Machine. Pulitzer Prize Winner, 1981. It will teach you the texture of our work and of our love for it, as well as good role models for how to interact with devs.

  • Coders at Work, reflection on the craft of programming Will give you perspective on the depth of our discipline, so you may know to respect our perspective when we tell you what the technology can or cannot do -- even when it is counter-intuitive, as ModernRonin described.

  • Lean Startup It will teach you the means to deal with the difficult task of providing hyper-detailed requirements when the nature of building new software is always that it's new and we don't really know yet what we're building.

  • Agile Samurai Will teach you agile, which ModernRonin also mentioned.

  • Watch this talk by one of the inventor/popularizer of agile, Ken Schwaber Pay particular attention to the issue of code quality over time. You will soon be surrounded by devs who will be responsible for making highly intricate judgement calls balancing the value of releasing a new feature a tad earlier, versus the potentially crippling long-term impact of bad code. Heed Ken Schwaber's warning: your role as a manager is to be an ally in protecting the long-term viability of the code's quality. If you fail -- usually by imposing arbitrary deadlines that can only be met by sacrificing quality -- your company will die.



u/lkh01 · 3 pointsr/compsci

I read The Annotated Turing by Charles Petzold while I was in high school and it really sparked my love for logic, math and computer science. So, as far as popular science books go, I can't not recommend it.

Right now I'm interested in programming languages, and I think TAPL is a great resource. The (relatively) new blog PL Perspectives is also pretty cool, and so is /r/ProgrammingLanguages.

u/twopoint718 · 1 pointr/compsci

A really interesting book that would complement (or be) a course in computer architecture is "The Feynman Lectures on Computation" http://www.amazon.com/Feynman-Lectures-Computation-Richard-P/dp/0738202967 This is a really fascinating book that explains computers from basic physics up to a useful machine that does work. It also has the virtue of being written by Feynman, someone with an amazing ability to explain things!

u/Brimshae · -1 pointsr/compsci

Well, what do you want to learn?

I mean, if you're looking to code, the HeadFirst books might be worth looking into. Go browse one at your local book store.

Eclipse is pretty cool for writing Java, but I'm sure someone will come along and suggest another IDE.

I haven't tried it, but Python is supposed to be pretty good.

Also, when you're trying to learn to code, do the exercises. Do all of them. Practice doesn't make perfect, but it helps.

Finally, Bucky, aka theNewBoston, is a friggin' boss when it comes to tutorial videos.

u/vvillium · 14 pointsr/compsci

https://www.amazon.com/Quantum-Computation-Information-10th-Anniversary/dp/1107002176

Best book hands down. This will bring you to the frontier of quantum computing. The book is also very approachable and meant for people trying to learn. It covers some linear algebra as well as physics in order to bring you up to speed.



Michael Nielson is an amazing educator and expert in the field. His you tube lecture course https://www.youtube.com/playlist?list=PL1826E60FD05B44E4 Quantum Computing for the Determined, is a short version of that book. He also has a free book online on Neural Networks that is probably the most referenced source on the matter. http://neuralnetworksanddeeplearning.com/index.html

u/GloobsGuy · 3 pointsr/compsci

It's really Comp Sci, but I really enjoyed The Code Book. Goes over secret codes over time, starting with the basics, ends with Cryptography, goes over some of Alen Turing's work. Over all a good, fascinating read.

u/ndanger · 1 pointr/compsci

Upvote for Domain-Driven Design, it's a great book. Depending on the size of the system, Martin Fowler's PoEAA might also be helpful.

Also what dethswatch said: what's the audience & scope; i.e. what's in the previous document? If you're presenting three architectures you probably need enough detail that people can choose between them. That means knowing how well each will address the goals, some estimate on implementation effort (time & cost), limitations, future-proofing, etc.

Finally, IMHO, this really isn't computer science. You might have better luck asking in /r/programming/ or the new r/SWArchitecture/

u/lowlycollegestudent · 3 pointsr/compsci

I know that this is way more on the theory/mathematics side of the spectrum than CODE, but Charles Petzold also wrote a book called The Annotated Turing that I really enjoyed. He took Alan Turing's original paper on computability which was about 30 pages and annotated it until he had about a 400 page book. There were a couple of chapters in the middle that got a bit dense, but he did a fantastic job of making the subject more approachable and understandable.

u/stepstep · 6 pointsr/compsci

The way I got started was working through the exercises in Benjamin C. Pierce’s Software Foundations. It starts from the absolute basics (which was good for me). Volume 1 covers logic, theorem proving, and other Coq fundamentals. Volume 2 discusses proving programs correct and proving the soundness of type systems. I haven't worked through Volume 3, but it covers verifying algorithms and data structures.

It also helps to have a good understanding of type theory in general. For me, that background knowledge came from another Benjamin C. Pierce book: Types and Programming Languages.

Once you know the basics of how logic works in Coq, I think the material from a discrete math course (like this) is probably a good source of proofs to try (logic, graphs theory, combinatorics, number theory, etc).

u/ontoillogical · 4 pointsr/compsci

The Sipser book mentioned elsewhere is pretty much all of those topics. You may also be interested in a good algorithms book. CLRS has been recommended elsewhere, but Kleinberg & Tardos is probably more accessible. I am using both in school right now, and I find CLRS as a better reference (more breadth) and K&T better for exposition.

u/the_lie · 3 pointsr/compsci

Maybe this one: Algorithmics - The Spirit of Computing

A good conceptual overview of Computer Science
>The best selling 'Algorithmics' presents the most important, concepts, methods and results that are fundamental to the science of computing. It starts by introducing the basic ideas of algorithms, including their structures and methods of data manipulation. It then goes on to demonstrate how to design accurate and efficient algorithms, and discusses their inherent limitations. As the author himself says in the preface to the book; 'This book attempts to present a readable account of some of the most important and basic topics of computer science, stressing the fundamental and robust nature of the science in a form that is virtually independent of the details of specific computers, languages and formalisms'.

u/bhrgunatha · 7 pointsr/compsci

This isn't criticism or a judgment, but that sounds like an odd request. If you've really absorbed what's in CLRS, I would imagine you could just research those data structures yourself and, for example, look at some open source implementations.

Or research what's in other Data Structures and Algorithms books and read up on them.

Having said that - there is an MIT course on advanced data structures.

I also enjoyed Chris Okasaki's Purely Functional Data Structures

There are 2 Coursera courses in particular - Princeton University's Algorithms Part I and Algorithms Part II - they've provided a web site for their book where lots of algorithms and data structures are implemented using Java with the libraries and source code freely available.

u/sbussy89 · 1 pointr/compsci

Data Structures and Algorithms is what I used in my class... not so easy to read but a ton of sample code that is easy to understand. I would recommend checking it out at a library before buying it, though... my class was fairly 50/50 on who liked it and who didn't.

u/Zacru · 4 pointsr/compsci

Cracking the Coding Interview: More to help you get a job as a Software Engineering, but full of fun problems even if you do them just for the challenge and learning.

The Code Book: A great overview of the history of Cryptography.

u/jnazario · 1 pointr/compsci

Severo Ornstein's book Computing in the Middle Ages: A View From the Trenches 1955-1983

Contains some neat gems and is a neat read

http://www.amazon.com/Computing-Middle-Ages-Trenches-1955-1983/dp/1403315175


The Soul of a New Machine by Tract Kidder is also a lot of fun

http://www.amazon.com/The-Soul-A-New-Machine/dp/0316491977

u/FattyLite · 3 pointsr/compsci

Hackers starts after Turing and other pre-computers (at least what we think of as a computer), but it is a pretty good narrative history beginning with the formation of the Model Train Railroad Club at MIT through to the PDP-7, Apple Mac and beyond.

edit: a letter

u/michaeltpb · 1 pointr/compsci

Seems like it goes from types and operators through to multithreading. If you're set on learning Java first (though I'd suggest C or Python) then I suppose it's not a bad place to start since I think a lot of Java books would assume some previous programming knowledge. Personally, I liked http://www.amazon.com/gp/product/0596009208 since it was quite an easy read but I think that one assumes too.

You might find /r/learnprogramming has a lot of useful stuff for you.

u/krazylink · 7 pointsr/compsci

Though not really geared to compsci, The Code Book is a great history of cryptography and cryptanalysis from the dawn of time to current. Excellent read.

u/B_Master · 1 pointr/compsci

I always recommend this book for a self-study beginner.

Edit: To clarify, this is a programming book, not a CS theory book. Not sure which you're looking for, but learning programming now most definitely will help you with your future CS classes.

u/poincareDuality · 10 pointsr/compsci

For designing programming languages, my favorites are

u/fellipebl · 1 pointr/compsci

As far as I know to understand how a computer works it's also important to understand the algorithms running on that.

I'd suggest you to read something light like this (http://www.cse.ohio-state.edu/~gurari/theory-bk/theory-bk.html) and after that read things like Knuth (http://www.amazon.com/Concrete-Mathematics-Foundation-Computer-Science/dp/0201558025/ref=pd_sim_b_2/191-9538329-5615213) (http://www.amazon.com/Art-Computer-Programming-Volumes-Boxed/dp/0201485419).

MIT's introduction to CS is also a nice begin (http://academicearth.org/courses/introduction-to-computer-science-and-programming)

u/Augur137 · 3 pointsr/compsci

Feynman gave a few lectures about computation. He talked about things like reversible computation and thermodynamics, quantum computing (before it was a thing), and information theory. They were pretty interesting. https://www.amazon.com/Feynman-Lectures-Computation-Frontiers-Physics/dp/0738202967

u/Ipswitch84 · 3 pointsr/compsci

Hackers: Heros of the Computer Revolution

The Cookoo's Egg

Both non-fiction, both excellent. Both cover a unique period in computing history, the understanding of which is worthwhile.

u/seepeeyou · 1 pointr/compsci

My local used book store has a copy of Sipser for $15 that I've been meaning to pick up. Considering the $143 price tag on Amazon, it's a pretty good bargain. I just don't know whether it's 1st or 2nd edition. Anyone have any idea if there are major differences?

u/jmct · 2 pointsr/compsci

There are a few good tutorials online. In fact Scott Aaronson has linked to several of them from his blog when that question comes up. I have a bias for this one

Quantum Computing Tutorial

Since Dr. Braunstein is my former supervisor. Also, in my opinion the best introductory book on the subject is:

This

though some academics seem more partial to:

this

u/pacman1176 · -15 pointsr/compsci

I have found that once you get into the workforce, the need for writing the most efficient algorithms and the overall value that I have gotten from such courses rarely comes up in every day application development. What they really should be teaching you are best practices and programming patterns. Here's a great book on that. It's titled Java, but much carries over to other languages as general practice.

http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683

u/dupelize · 30 pointsr/compsci

>So do you guys have any ideas on a title?

"Everything I Learned About Quantum Computing After I Stopped Worrying About the Title and Learned About the Content"

>and can you recommend any good books?

What level? The standard intro is Mike and Ike if you have a calculus and linear algebra background.

It sounds like you might be in high school (or equivalent) so you probably don't have much linear algebra knowledge beyond knowing what a matrix is.

It isn't a book, but Scott Aaronson has a decent blog. There is a lot of non Quantum talk too, but if you sift through there is a lot of interesting stuff.

u/the_omega99 · 5 pointsr/compsci

You should mention more specifically what kinds of problems you're looking for. Do you want to merely implement well known algorithms? Design novel algorithms for specific problems? Analyze the efficiency of a given algorithm?

For the first two possibilities that I listed, you should not need solutions (and there's no single way to write code and many algorithm problems have multiple solutions). Instead, you should be writing test suites that can let you know when they code works. This isn't 100% perfect because it's always possible that there'll be some edge case that you'll miss (although test suites should be rigorous to try and avoid this), but it'll do well for most cases and is how you'd work in the real world.

And of course, you can always try and formally prove novel algorithms work. There's isn't really an easy way to check for answers here, though, since there's more than one way to prove many algorithms (and some algorithms are extremely complicated to prove). So there isn't really anything you can do besides having a more experienced person check your answers. If you have a low volume of questions, Reddit might be able to help (find specific subreddits). But otherwise expect to have to pay for a tutor (if you're in school, your university might have something free available for CS help).

As for some actual advice, I thought Kleinberg's Algorithm Design was very good for creating novel algorithms. It has lots of problems. No answers, though.

You're right that it's pretty hard to find quality books that come with solutions (even if it's just one solution to a problem that has many possible solutions). It seems that most texts of a reasonable quality are targeted towards universities and thus don't make answers available so that universities can use the problems in assignments. I wish more books would do something like giving answers to even numbered problems. It's a major pain in the ass for those who would try and self-learn something.

u/jschm · 19 pointsr/compsci

Effective Java by Joshua Bloch is a really good book and definitely worth reading if you're using an object-oriented language, not just Java. It helped me immensely when I was starting out with how to think about my code and my designs.

u/craiig · 5 pointsr/compsci

I agree, CLSR is too much like a dictionary and not enough like a story. For my graduate algorithms course, we used Algorithm Design by Kleinberg and Tardos. I could actually read this book because they took the words to explain the formulas they used. I'd recommend it! Not only did I learn about algorithms, but it also helped with reading formulas. Website Amazon Link

That said, they focused more on algorithms than on data structures, so this might not be for you.

u/personanongrata · 1 pointr/compsci

I'd recommend you to read Bishop's PRML's Chapter 8, luckily this chapter is available on the web.

u/vogonj · 5 pointsr/compsci

I'm quite a fan of Sipser's Introduction to the Theory of Computation: http://www.amazon.com/Introduction-Theory-Computation-Michael-Sipser/dp/053494728X

It's not a full-on algorithms book but formal models were always the most interesting part of theoretical computer science to me. vOv

u/csp256 · 3 pointsr/compsci

The Mathematical Theory of Communication is short and sweet.

Once you have had your linear algebra, you might be interested in looking at quantum computing. The canonical text there is Quantum Computation and Quantum Information.

u/42e1 · 12 pointsr/compsci

If you're interested in learning more about Turing's paper that introduced the Turing Machine, I highly recommend the book The Annotated Turing. It's by the same person who wrote Code, which is an oft-recommended book on this sub-reddit.

u/vmarco · 0 pointsr/compsci

Another book to add to the list:
Data Structures and Algorithms (Aho, Hopcroft, Ullman)

It's very easy to follow, the examples are in pascal.
If you have the CLRS book, with that you are ok. This is much shorter.

u/kanak · 17 pointsr/compsci

If you're planning on learning haskell (you should :D), why not do a book that teaches you both discrete maths and haskell at the same time?

There are atleast two books that do this:

u/teduh · 9 pointsr/compsci

I heartily recommend Steven Levy's "Hackers". One of my all-time favorites.

u/e_vampire · 2 pointsr/compsci

Either Introduction to Algorithms

or Algorithm Design

Those books were the textbooks for the algorithm and data structures courses, respectively during my bachelor and master's degree in computer science, I find both of them really well written.

u/joshuaeckroth · 16 pointsr/compsci

To my knowledge, Chris Okasaki made a big impact with this work in this area, and directly influenced Clojure, among other projects.

His book is a great read: http://www.amazon.com/Purely-Functional-Structures-Chris-Okasaki/dp/0521663504

It's based on his PhD thesis: https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf

This StackOverflow question addresses what's changed since the late 90's: http://cstheory.stackexchange.com/questions/1539/whats-new-in-purely-functional-data-structures-since-okasaki

u/jimauthors · 2 pointsr/compsci

Expert C Programming : Read this after reading K&R C book.
Programming Pearls : Excellent Book
Algorithm design manual : Read it after CLRS.

u/uhwuggawuh · 1 pointr/compsci

I'm kind of in the same position as you, OP. Thinking of getting CLRS, New Turing Omnibus, The Elements of Computing Systems, and Algorithmics!

So excited.

u/lasercat_pow · 1 pointr/compsci

Check out The Code Book by Simon Singh. It is about the history of cryptography, but along the way, it also has some history of computing, and it's an entertaining read.

u/kunjaan · 1 pointr/compsci

There are books that are compendium of computing such as

  1. http://www.cs.brown.edu/people/jes/book/

  2. Guide to Turing's Papers

    but they still require some effort on your side.

    It would be better if you rephrase the question from "Cliff Notes" to "beginners intro that is not Sipser" : )
u/3rw4n · 1 pointr/compsci

Depending on the amount of energy you want to put into this: "Introduction to Lambda Calculus" by Henk Barendegt et al. is great ((http://www.cse.chalmers.se/research/group/logic/TypesSS05/Extra/geuvers.pdf).

Study the proofs and do the exercises and you will learn a ton, quickly. You can also read "proposition as types" by Philip Wadler (http://homepages.inf.ed.ac.uk/wadler/papers/propositions-as-types/propositions-as-types.pdf) and pick up the "Introduction to the Theory of Computation" book (https://www.amazon.com/Introduction-Theory-Computation-Michael-Sipser/dp/0534950973/)

Of course you don't need to read all of this to get a basic understanding of lambda calculus but if you want to understand for "real" so it sticks.

u/sv0f · 2 pointsr/compsci

This book was handed to me by my data structures and algorithms professor at CMU back in the day and it was really inspirational -- and totally accessible.

u/somekindofsorcery · 2 pointsr/compsci

Tips and pointers for writing good Java code
http://www.amazon.com/Effective-Java-Edition-Joshua-Bloch/dp/0321356683

Algorithms in Java with code examples
http://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/ref=sr_1_1?s=books&ie=UTF8&qid=1416453105&sr=1-1&keywords=algorithms

For mobile development, check out the Big Nerd Ranch books. They contain guided projects that help you learn a variety of core features of mobile programming.

u/smugglerFlynn · 3 pointsr/compsci
  1. Read any book on Java Patterns (probably the one by GoF) - they are applicable across different domains
  2. Read Patterns of Enterprise Application Architecture by Martin Fowler - this is the book that influenced many architects
  3. Study the field: The Architecture of Open Source Applications
  4. Study fundamentals: A Methodology for Systems Engineering by Arthur D. Hall - this one is hard to find
  5. Study as much different frameworks/architectures/languages as possible. You'll start to notice similarities yourself.
  6. Solve every problem you meet from architectural point of view. You will achieve nothing just reading the books. Refactor your old projects in terms of using patterns and new methodologies, write down designs for your wild random ideas, teach others about the stuff you know.

    Also, take a note: patterns are only a small part of systems engineering applied to CS. Think REST and SOAP, think of how to better integrate two different applications together - not how to code their insides more efficiently. Start considering business logic and requirements - and you will find yourself whole new level of challenging architectural tasks.
u/stulove · 2 pointsr/compsci

On the functional programming front, Purely Functional Data Structures has some fun stuff in it. You should be really familiar with functional languages before going through it though.

u/D_rock · 1 pointr/compsci

Agreed on ML. We used Alpaydin for the intro class and Bishop for the advanced class.

u/leoc · 1 pointr/compsci

It's not free (in fact it's sickeningly expensive) but Sipser [amazon.com] is a very self-teachable (self-learn-from-able? :) ) text covering automata theory, computability theory, and complexity theory.

u/llimllib · 6 pointsr/compsci

sipser (I have the first edition which you can get on the cheap, it's very good.)

AIMA

Dragon

Naturally, TAOCP.

Many will also recommend SICP, though I'm not quite sure that's what you're angling at here, it's probably worth browsing online to see.

u/JohnKog · 2 pointsr/compsci

A lot of good mentions here. Although they're more programming and engineering than "computer science", I would add Design Patterns by the Gang of Four, and
Programming Pearls by Jon Bentley.

u/lurkishdelights · 3 pointsr/compsci

If you're looking for a story, here's a good classic non-fiction one:
The Soul of a New Machine by Tracy Kidder
And a fictional one:
The Bug by Ellen Ullman

u/shimei · 3 pointsr/compsci

Michael Sipser's Introduction to the Theory of Computing is another good book on this topic. Very readable and short.

u/nakp88d · 2 pointsr/compsci

The Code Book by Simon Singh is a nice, informal introduction to cryptography including modern day cryptography.

u/malpingu · -1 pointsr/compsci

Knuth's Art of Computer Programming

edit: I suppose a ";-)" smiley would have made the sardonicism a bit more obvious.

u/erisson · 5 pointsr/compsci

You may also want to check out The Haskell Road to Logic, Maths and Programming.
This book focusses on logic and how to use it, so you get to learn proofs. It even hits corecursion and combinatorics. If you think math is pretty but you want to use it interactively as source code, this could be the book for you.

u/JAPH · 2 pointsr/compsci

$50 for the 2006 edition? I'm not sure I would count that as "incredibly expensive".

But yes, the CLRS is a must-have. Almost every intermediate-high level algorithms course I've seen at any university uses the CLRS.

I've also used Kleinberg's Algorithm Design back for some 200-level algorithms course.

u/slashcom · 5 pointsr/compsci

In Natural Language Processing, it's Jurafsky and Martin. In Machine Learning, it's debatably the Bishop book.

u/dnabre · 1 pointr/compsci

Feynman's Lectures on Computation

Definitely light reading. Some of the stuff seems a bit dated and some a bit basic, but Feynman's has a way of looking at things and explaining them that is totally unique. (You might want to skip the chapter on quantum computing if you don't have the background).

u/slowurxvt · 5 pointsr/compsci

>I didn't really get that much coding experience in actually implementing my own versions of the data structures that were covered.

Nothing's stopping you, don't need a book to do that. If you learned the theory and are familiar with the ADTs it should be a piece of cake. I actually think it's better for classes to stay abstract and teach more theory - too many students get caught up in languages, but these concepts are higher level than that.

This one is solid but if you are looking for something to walk you through implementing them then you should just use online resources. This site has implementations and should cover everything you need and more (plus it's free)

u/maybefbi · 10 pointsr/compsci

Title: On Computable Numbers, with an Application to the Entscheidungsproblem

Authors: Alan Turing

Link: http://plms.oxfordjournals.org/content/s2-42/1/230.full.pdf

Abstract: In just 36 pages, Turing formulates (but does not name) the Turing Machine, recasts Gödel's famous First Incompleteness Theorem in terms of computation, describes the concept of universality, and in the appendix shows that computability by Turing machines is equivalent to computability by λ-definable functions (as studied by Church and Kleene). Source

Comments: In an extraordinary and ultimately tragic life that unfolded like a novel, Turing helped break the German Enigma code to turn the tide of World War II, later speculated on artificial intelligence, fell victim to the homophobic witchhunts of the early 1950s, and committed suicide at the age of 41. Yet Turing is most famous for an eerily prescient 1936 paper in which he invented an imaginary computing machine, explored its capabilities and intrinsic limitations, and established the foundations of modern-day programming and computability. From his use of binary numbers to his exploration of concepts that today's programmers will recognize as RISC processing, subroutines, algorithms, and others, Turing foresaw the future and helped to mold it. In our post-Turing world, everything is a Turing Machine — from the most sophisticated computers we can build, to the hardly algorithmic processes of the human mind, to the information-laden universe in which we live. Source

u/Lalaithion42 · 5 pointsr/compsci

The Code Book, which is a nonfiction book about the history and mathematics of secret codes and how to break them, ranging from the earliest and simplest codes, up through the Engima machine and the first computers, through modern RSA, PGP, and (the hypothetically unbreakable) Quantum Cryptography.

u/TezlaKoil · 2 pointsr/compsci

I think he may have meant the other Feynman lectures.

u/Narbas · 6 pointsr/compsci

Can we not put this in the sidebar by now? This question has been posted so many times lately. Use this book. The prerequisites are basically nothing.

u/Novakog · 7 pointsr/compsci

Actually, I've seen quite a few loop invariants in shipping production code. But probably 95% of the times they're used, the programmer might not even think to call it a loop invariant.

Specifically, a lot of codebases use conditional assertions to test for bad conditions (usually debug-only). If you place a conditional assertion in a loop, you're expressing a loop invariant. I personally have used them to find a number of bugs in shipping production code.

Read Programming Pearl's - it's very short classic, and he uses loop-invariants via assertions.

u/Isenhatesyou · 4 pointsr/compsci

Sipser's Introduction to the Theory of Computation is somewhat of a classic in the field. I just really hate his notation.

u/agentgreasy · 4 pointsr/compsci

If a book will do, "Hackers - Heroes of The Computer Revolution" by Stephen Levy was excellent. It covers the problems from the early stages to modern times, and the innovative open-thinking people that pioneered some crazy solutions, and gives a reasonable view into the early years of computer use.

It's actually very good at demonstrating the real difficulty computer users and enthusiasts had back then, because not only were you vying for time... but you were fighting for correct results.

I like to buy this book for people who have become tech "later" in their lives (i.e. newbies who did not participate in that industry as children and have only taken it on strictly as a profession) who hold that strong misconception of the idea that a hacker is an evil terror nerd.