Reddit Reddit reviews Algorithms (4th Edition)

We found 75 Reddit comments about Algorithms (4th Edition). Here are the top ones, ranked by their Reddit score.

Computers & Technology
Computer Science
Computer Systems Analysis & Design
Algorithms (4th Edition)
Addison-Wesley Professional
Check price on Amazon

75 Reddit comments about Algorithms (4th Edition):

u/samort7 · 257 pointsr/learnprogramming

Here's my list of the classics:

General Computing

u/CapableCounteroffer · 25 pointsr/learnprogramming

You can get a degree or you can teach yourself

The above resource is pretty good in outlining the major topics that all CS programs cover, but I would change some of their textbook and class recommendations.

I would replace the programming book/course with CS for all

Algorithms I would recommend sedgewick which is also available as a website or clrs for a more in depth review.

Those two topics will give you a very solid background. For what you want to do computer architecture, networking, operating systems, math, languages and compilers, and distributed systems aren't as important. If you wanted to expand your abilities as a programmer then you should explore those topics.

As for databases, for your purposes you may not need to learn so much how databases work as opposed to how to query databases. For this you need to learn SQL.

This should give you all the background you need in CS, now its time to start building applications. You'll probably hit roadblocks and need to research how to accomplish certain tasks, but with the above background that should be very doable.

u/[deleted] · 18 pointsr/darknetplan

What OS? Linux, of course. When TPB order everything locked down, you don't want to be caught using a Microsoft OS. -- What distribution? The easy path is Ubuntu, with the Cinnamon UI, or LinuxMint 13, when issued (May 2012).

What IDE? There's lots to choose from. My favorite is "geany".

For TCP/IP protocol tutorial. Recently updated by Wright:
Stevens, "TCP/IP Illustrated", 3-volume set.

On human interface guidelines relevant to programming:

For GNOME 2, see:

To develop Linux applications:

You are right. You MUST know how to program in C. When others tell you that object oriented programming is the thing, know that you can do object oriented programming in C. Avoid interpreted languages (Python, Java, and others) as a first programming language. Interpreted languages teach bad habits and hid too much of what's going on from you such that debugging becomes difficult to impossible.

However, if all you intend is "casual programming", the Python will do, if you must. It's just not the best choice first a first language if your intent is to become a "professional programmer". I use Python myself; It works for what I need to do quick and dirty.

Definitive, but for experienced programmers:

As a tutorial for someone learning a first programming language and how to program from zero:

Perry, "Absolute Beginner's Guide to C", 2ed.
-- I have not read the book, but the ToC looks reasonable for a beginner.

OK, you don't want a full CS curriculum, but some topics in discrete mathematics are mandatory. ... Ack! Having looked over the offerings at Amazon, I believe that Epp, "Discrete Mathematics with Applications" may be the best of the lot, but at $187, it is hard to recommend without knowing your intent and interest. The reason I suggest this title is that it looks focused on application to computer science topics. It covers a number of topics that are NOT covered in many of the other titles, enough so that should you use other texts you will have spent more than the $187 that this title includes. JMHO.

See also: Sedgwick, "Algorithms" -- You'll probably need it sooner than later.

Remember that Linux OS? You are going to need some programming tools, right? If you intend to write GUI applications based on the GTK+ toolkit, then install the package "glade" or "glade-gtk". Installing a glade package will suck in over 100 other packages essential to building a GTK based GUI application. Specifying glade to the package manager is just easier that finding and installing all the other necessary parts by hand.

If you are going to do command line based UI programs, then package "build-essentials" should be adequate.

There are some other things to read:

On how to organize, grow and maintain a Linux software development project: Fogel, "Producing Open Source Software"

You can read it online here, but buy the book too to help support Fogel. He's gotta eat too.

On the culture of writing Open Source Software:

Raymond, "The Cathedral and the Bazaar"

Linux programming is not like Windows programming.
Read and study ESR's TAOP.

Raymond, "The Art of Unix Programming"

You can read it online, free. However, buy a hardcopy too. Raymond has to eat too.

Now to get really technical. What interface do you write to?

Kerrick, "The Linux Programming Interface: A Linux and UNIX System Programming Handbook"

Beginning to focus on GNU style programming:

GNU Coding Standards

GNU Coding Standards is more than how to and how much to indent a line or how to set braces. You will get into the topic of Make and Autotools. Make is a program to build complex softare and Autotools is about how to build a package for distribution, the package that any Unix flavor can use; it is not focused on any specific distribution. See also: "configure and make"

Enough! There's more, but I have too much time in this already for today.

[edit: typos]

u/TaylorHu · 18 pointsr/learnprogramming

I love this book:

It's a great read without being too math heavy. That combined with the fact that it has a great associated booksite, a Coursera course, and a couple of followup books by the same author that do go into the more mathy aspect of it, if you're so inclined, make it a great introduction to the world of Algorithms.

u/captainAwesomePants · 13 pointsr/learnprogramming

The big thing you're missing is theory. You have taught yourself to be a programmer, which is great, but you haven't learned any computer science, which is a branch of math focused on whether problems can be solved and how difficult they are to solve. This is likely not particularly applicable to your day to day programming career, but when people start throwing around Big-O notation, it's useful to know what they're talking about. Also it can occasionally help you recognize that certain problems as fundamentally impossible, such as detecting whether a program will run forever or eventually halt.

The second major thing you're missing is formal algorithms training. That means that there are a bunch of useful techniques that you may not know about that may come up from time to time.

The main downside of missing out on these two things is that job interviews, especially for big programmer companies like Google and Facebook, focus heavily on them, especially algorithms. If you don't know that a hash table lookup starts at O(1) but devolves to O(N) in the worst case because of hash collisions, you may have trouble getting a job there.

The rest of what you missed was mostly either crap (UML!) or general breadth stuff that is good to know but not critical (learn how operating systems work, write a compiler, write a TCP networking stack, write a 3D renderer, etc).

I think the best way to deal with the gap is to take a Coursera course on algorithms (there's one starting next month). But that's my learning style. Another alternative would be to pick up a definitive algorithms textbook ( ) and just start reading.

u/frenchst · 12 pointsr/cscareerquestions

Three CS fundamental books in the order I'd suggest someone read them if they don't have a background in CS.

u/RecoverPasswordBot · 10 pointsr/cscareerquestions

For those interested, Coursera is hosting an Algorithms course taught by Kevin Wayne and Robert Sedgewick, authors of a fairly well received Algorithms book.

u/vorpal_potato · 10 pointsr/csMajors

I learned most of what I know from Robert Sedgewick, whose prose is exceeded in clarity only by his diagrams:

Steve Skiena is also excellent, and writes a bit more accessibly:

You can usually find these on the shelves of a university library.

u/forseti_ · 8 pointsr/java

Its not advertised but it uses Java for the examples.

u/rockinghigh · 8 pointsr/leetcode

You're essentially asking for a computer science class on algorithms. I would recommend:

u/lbkulinski · 7 pointsr/Purdue

Yes, she uses Java and this book.

u/g051051 · 7 pointsr/learnprogramming

Algorithms by Sedgwick and Wayne.

u/bcarson · 6 pointsr/compsci

I'm a pure math guy but Algorithms by Sedgewick & Wayne is one of the best textbooks I've ever read.

u/tech-ninja · 6 pointsr/ProgrammerHumor

Depends what you want to learn. Some of my favorites are

  • Code by Charles Petzold if you want to know how your computer works under the hood.

  • Peopleware if you want to learn how to manage knowledge workers.

  • Clean Code by Uncle Bob if you want to learn about good practices and program structure. Impressive content, covers much more than I expected.

  • Don't Make Me Think if you want to learn about usability.

  • Algorithms by Robert Sedgewick if you want to learn about DS & algorithms.

  • The Art of UNIX Programming by Eric S. Raymond if you want to learn about the unix philosophy. Lots of hidden gems in there. Have you ever heard: write programs that do one thing and do it well; don't tune for speed until you've measured; imagine all this knowledge distilled to you in one book.

    This a good list to get you started :) most of my favorite books are not language specific.
u/bonesingyre · 5 pointsr/webdev

Sure! There is a lot of math involved in the WHY component of Computer Science, for the basics, its Discrete Mathematics, so any introduction to that will help as well.

This next book is a great theoretical overview of CS as well.

That's a great book on computer programming, complexity, data types etc... If you want to get into more detail, check out:

I would also look at's Algorithm lectures by Robert Sedgewick, thats essential learning for any computer science student.
His textbook:

another Algorithms textbook bible:

I'm just like you as well, I'm pivoting, I graduated law school specializing in technology law and patents in 2012, but I love comp sci too much, so i went back into school for Comp Sci + jumped into the tech field and got a job at a tech company.

These books are theoretical, and they help you understand why you should use x versus y, those kind of things are essential, especially on larger applications (like Google's PageRank algorithm). Once you know the theoretical info, applying it is just a matter of picking the right tool, like Ruby on Rails, or .NET, Java etc...

u/cmd_bat · 5 pointsr/learnprogramming
u/salihzain35 · 5 pointsr/learnprogramming

I’m taking Data Structures and Algorithms right now. It’s definitely not an easy class so it’s very ok to struggle. I’m not sure which language are you guys using, but if you’re using Java, then this is an amazing book that starts from the basics!

On the other hand, you have to build things by your hand in order to understand them. Don’t worry about how quick you get the concepts, it’s ok to meditate on them. After all, what took scientists years to build is not supposed to be understood in an hour. Take your time and good luck!

u/Bizkitgto · 4 pointsr/learnprogramming

One quick way would be to look up the algorithms courses offered by Stanford, MIT, etc and see what book the syllabus recommends. Some are offered as an MOOC as well (edX, Coursera, Khan, etc).

Also, you can check out these classic texts:

u/MITranger · 4 pointsr/learnprogramming

I really like /u/razeal113 's comment. That's a good algorithm for finding a good algorithm. Starting out with brute force isn't necessarily bad, as it at least gives you a jumping board to start optimizing. The only thing I would add is to increase your knowledge and toolbelt. You can gain a lot of inspiration and learn "how to think" by learning, analyzing, applying, and modifying all the awesome algorithms already out there. Here are some resources:


u/baghiq · 4 pointsr/learnpython

College text books generally will go more in depth into them. They usually also provide proof of correctness as well as Big O and theta analysis.

Algorithms 4th ed is my favorite, the code is in Java but its text and illustrations are fantastic.

u/davidddavidson · 4 pointsr/learnprogramming

Data Structures & Algorithms is usually the second course after Programming 101. Here is a progression (with the books I'd use) I would recommend to get started:

u/MirrorLake · 3 pointsr/compsci

For anyone looking, the physical copy has also dropped on Amazon recently down to $50.

u/xxxabc123 · 3 pointsr/ProgrammerHumor

I agree with the Amazon review. Unless you need for a class, or learn an advanced topic not available in other places, I wouldn't touch this book ever. There are much easier algorithms books to read such as This book isn't introductory at all as mentioned on Quora by multiple people

And if you've bought this for algorithms interviews preparation, it's better to buy cracking the code interview or similar which has explicit instructions for interview questions.

One more thing to add to the review was the algorithms are written in pseudocode, array indices start with 1 instead of 0, some lines refer to other pages in the book so you can never read a code inside this book sanely.

u/ProbablyRickSantorum · 3 pointsr/gamedev

I own Algorithms (4th Edition) . It's very well explained and uses Java as a base although it's easily readable if you are proficient with any other languages.

u/a_few_benjamins · 3 pointsr/cscareerquestions

Algorithms, 4th Edition and the companion Coursera Course are great if you are already familiar with a mainstream language.

u/jaquino94 · 3 pointsr/algorithms

Algorithms by Robert Sedgewick

Good book with the code written in Java

u/digitizemd · 3 pointsr/algorithms

The Princeton / Coursera algorithms course. It is great. You can find lectures (since the first course finished recently, and the second course is halfway done) here (you need to change the number at the very end. I think it starts at 10).

There is a book that's relatively cheap:

And there's a booksite:

This course is done entirely in Java.

u/emporsteigend · 3 pointsr/compsci

You may have to look up some of the terms in my reply and I apologize but, hey, you'll learn something.

I recommend Python, for the simple reason that Python manages to integrate several paradigms in one programming language (imperative, object-oriented, and functional) and a lot of what you learn with Python will carry over into other languages if you learn it deeply enough. E.g. Python has metaclasses which I believe were originally implemented in an older language called Smalltalk and so when I went over to experiment with Smalltalk (I like the Pharo implementation), it was no sweat understanding the idea of metaclasses.

Python also prepares you to read the kind of pseudocode you'll see on Wikipedia and in a lot of textbooks because Python reads a lot like pseudocode; it is an eminently readable language and actually enforces formatting conventions for clarity.

And should you decide to do a big advanced project, there are very frequently well-developed libraries available immediately available for your purposes, which is not an advantage you will get with some of the more obscure / less-used languages mentioned here.

For example, need to do machine learning? No problem! There's PyBrain.

Need to study complex graphs? No problem! There's NetworkX. (If you live in the United States, it's your taxpayer dollars at work, so enjoy.)

Need to do genetic algorithms? No problem! There's PyEvolve.

There's even a package for proving theorems in logic, FLiP.

Ruby comes recommended for similar reasons and has a purer object-oriented basis but (in my experience) fewer good libraries.

I have to disagree with several recommendations here: Lisp has been recommended in several posts and I have doubts about how much of a better or effective programmer it makes you; the evidence for such a claim is unclear and pretty much all anecdotal. And a lot of it is based on stereotypes about marginally competent enterprise Java programmer-types. Now that a number of programming languages have taken Lisp innovations like garbage collection and lexical closure to heart, there's not that much of an advantage anymore in Lisp. (IMO.) More to the point, I find that neither any implementation of Common Lisp nor Scheme enjoy quite the same support as Python.

For instance, even though Lisp has a reputation for being used widely in artificial intelligence, the AI libraries I can find for Common Lisp are relatively underdeveloped compared to those you can find for Python. For instance, in the case of soft computing methods in AI (which IMO are far more promising than logic-based approaches), between PyBrain and PyML you've got neural networks, SVM, reinforcement learning and more whereas I could only find fledgling projects like cl-machine-learning for Lisp, which apparently hasn't been worked on since 2009. (The Lisp community is notorious for not finishing projects once started.)

If you must use Scheme, I highly recommend Racket because it appears to be the most full-featured Scheme. (That's a major issue with Scheme: the standard specifies very very little and so the differing implementations tend to be kind of incompatible. One says that Scheme suffers from horrible "balkanization".)

Logo was mentioned, too. The NetLogo implementation is good for fast agent-based programming and a few other things (I found it highly useful for writing a Kohonen network implementation because of its inherently spatial character) but Logo as a language is not that great.

Prolog IMO is fucking terrible. Using it is like pulling your own teeth.

Pure functional programming languages like Haskell are kind of wanky as well. It's usually rather difficult to do anything useful with them because they disallow side effects completely but on the other hand, since you're interested in logic and computation, you'll get a lot of exposure to theoretical computer science ideas through these kinds of languages.

Bottom line is with Python you'll probably get more work done faster and have more fun that way too. And that's what counts.

One last note: I don't like SICP. Go on Amazon and look at some of the negative reviews to see what I mean. I can't exactly say what's a good intro to computer science because I'm well past that point now but this guy appears to come warmly recommended:

And when you're a little more advanced, and want to dive into data structure and algorithms, the Segdewick "Algorithms" book is excellent, even if it uses Java for all the code:

u/cannibalbob · 3 pointsr/cscareerquestions

The feedback about "jargon for development" can be solved by going through some books cover to cover, making sure you understand the theory, and implementing the exercises. I understand that feedback to mean that the person who gave the feedback believes there is too high a chance you will inflict damage on the codebase by making decisions not grounded in solid theory.

Examples of titles that are classics and widely known:
Algorithms (4th Edition): (there is an accompanying coursera course).

Code Complete:

Clean Code:

Functional Programming in Scala:

Learning Python:

Effective Java:

Haskell Programming From First Principles:

I included multiple languages as well as language-agnostic ones. Functional programming is the near-to-medium term future of software engineering, and most languages converging towards that as they add functional features.

I don't think bootcamp is required. Learning how to learn is the most important thing. If you get into these books, lose track of time, and feel "aha! that's how these things that I previously thought were unrelated are actually the same thing!", and are able to keep it up for weeks, then that is a good sign that you can get to where you want to be.

u/cello_bitch · 3 pointsr/Portland






u/ivansonofcoul · 2 pointsr/learnprogramming


Building Java Programs

Interview Practice



These are just a few books with good reviews that are also used in computer science curriculums at MIT or Princeton can't remember which and UW.

I can also post some basic ones too if you would like

u/knechtsunderstudy · 2 pointsr/serbia

> Ako krene sa C naucice kako da stedi na memoriji i pise efikasne programe.

Ako krene sa C, odustaće posle trećeg segfault-a JER IMA 13 GODINA.

> [C previše komplikovan] nije

Možda ne tebi ili meni. Ali, evo, napiši mi kod koji će da u skup stavi imena gradova "London" i "Madrid" na C-u i onda to ispiše, onda ću ja to isto u Ruby-ju, i videćemo koliko je šta kompleksno.

> Vreme izvrsavanja je nebitno

Pogledaj sve, ali pogotovo slajd 8.

> Algoritmi na visokim jezicima... ne ide u istu recenicu.

Onda mi objasni zašto je najpopularniji udžbenik o algoritmima na Javi (ili pročitaj u njemu zašto je). Jedina druga poznata, CLRS, je u pseudokodu (jer je i Java previše low-level). Znaš li kako funkcionišu string-ovi u C-u? Hoćeš klince da učiš malloc i calloc i kastovanje void* ili kako funkcioniše tok kontrole?

u/rjcarr · 2 pointsr/learnprogramming

Doesn't the course offer a book? The professor might suck, but what about the textbook?

Otherwise, I think these two are the most commonly recommended algorithm books:

u/IRLeif · 2 pointsr/learnprogramming

Thanks! Just to make sure, do you mean these two books?

  • Introduction to Algorithms
  • Algorithms

    If so, I'm glad you mentioned those. Both of them are already on my to-read list, but they were further down than Knuth's work. Since, as you say, they might better for starters, I'll check those out first.

    By the way, I have also heard some good things about this one:

  • The Algorithm Design Manual

    Have you any experience with that book? It's also on my to-read list.
u/dzjay · 2 pointsr/learnprogramming

I liked this book along with the video lectures from the author on Coursera. There's a torrent of the lectures on the bay.

u/somekindofsorcery · 2 pointsr/compsci

Tips and pointers for writing good Java code

Algorithms in Java with code examples

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/Thanks-Osama · 2 pointsr/learnprogramming

If your not afraid of math then I would recommend the books by Robert Sedgewick. His java book really shows off Java. His Algorithms book is a religious experience. And if your feeling masochistic, the Sipser book is well suited.

u/Adams_Apples · 2 pointsr/learnprogramming

> Maybe now is a good time to step back and consider what kind of programming job you might want to target.

This is definitely something you should keep in mind. Try to become really awesome at one thing. That's not to say you shouldn't have a well rounded education in programming, just that someone who is simply ok at everything isn't getting a job anywhere.

Here are a few texts which I consider to be great for a novice programmer:

The C Programming Language : ANSI C

It's an older book, but it's still the best book to learn the language.

C++ Primer : C++

I used this book to get started with C++, and found it to be easy to follow and informative. Some say it's not a beginner book per-se, they may be right. I was already very familiar with C when I started.

Objective-C Programming: The Big Nerd Ranch Guide : Objective-C

If you're planning to write apps for Apple's iOS and OS X platforms, you're definitely going to need to learn this. Otherwise, don't bother.

Algorithms : Algorithms / Data Structures

This is not the be and end all authority on algorithms, but it's a great book. It's less theoretical and more concrete in my opinion.

I don't feel qualified to give recommendations for other topics like Java or web development, as those aren't really my strong suits. Happy hunting!

u/random012345 · 1 pointr/learnprogramming

Algorithms, Part I on Coursera (presented by Princeton) begins in 5 days. The professors recommend their own book, Algorithms, 4th Edition

Amazon link

u/cathalmc · 1 pointr/suggestmeabook

Try Algorithms by Robert Sedgewick and Kevin Wayne. I haven't read the book itself (I have used it for reference once or twice) but I have taken a Coursera course on algorithms given by professor Sedgewick, and the clarity with which he lays the material out is really notable. There is something great about learning how to implement red-black trees from the guy who invented red-black trees. (Oh, by the way, that course is free and starts again on August 7th. The course and book together would complement each other very well, I think.)

u/ase1590 · 1 pointr/AskComputerScience

Bitcoin mining programs are pretty advanced pieces of software, especially due to the rise of ASICs and other esoteric hardware that must be supported. You might want to consider an easier project for the time being.

Fundamentally, you need to have a good grasp on data structures before you can really get going with Merkle trees and cryptocurrency mining in general.

Here are some free resources to get started

If you want to consider grabbing a book, Algorithms (4th ed) is generally regarded as a decent book to get started on thinking with and using algorithms and data structures.

edit: depending on the time you have, you may also want to consider reading this on set theory. It tends to make later algorithms a bit more clear as a lot of it draws from set theory.

u/rufio1 · 1 pointr/learnprogramming

I think this is a pretty standard book used in universities:

Using it right now in my CS masters class and it's pretty helpful.
You can easily find it free just searching for the pdf online.
It goes over hash tables, trees, stacks, queues, sorting, and more.

u/ToadstoolBeTrippin · 1 pointr/reactjs

The one book that every programmer should read is Code Complete. It goes over all stages of development in a high level overview that applies to any project.

I would then move onto Algorithms by Sedgewick and Wayne. I tried reading Introduction to Algorithms because it was strongly suggested to me, but it goes into higher level math really quick. I haven't taken calculus since high school and never took any higher level math classes in college, so I got lost after about page 30.

After that, I would just look for a book dedicated to design patterns in the main language you work with. There are some overlapping patterns between languages, but it's best to be practical about what you learn.

u/seanfast · 1 pointr/cscareerquestions

im not sure what you do with CIS, but im guessing sysadmin type stuff? if that doesnt interest you and the job listings dont either, look into a straight BS in CS degree. you can probably transfer some credits. check out an algorithms book like this one (google it for the pdf) or this one and if they interest you check out CS. take some courses for free on codecademy and see if web programming interests you. theres a million ways to go online and check out other cs related avenues that might be more for you. explore cs classes on your campus after reading the course descriptions, audit a class for free. sign up and then leave during drop add. see how things sound. check things out. good luck!

u/drboyfriend · 1 pointr/algorithms

Introduction to the Design and Analysis of Algorithms, by Levitin, was used at my university and none of us cared for that book and I don't recommend it.

I'm not familiar with #1, but I do recommend:

u/balefrost · 1 pointr/AskProgramming

You're right, they're different skills, and knowing how to use libraries effectively is really important. But I wouldn't shy away from algorithms. Knowledge of algorithms and data structures will enable you to solve problems that you might not otherwise think you can solve. I've spent a lot of time recently working with graphs and partially-ordered sets to solve a problem at work, but the problem would have been unsolvable if I didn't have the algorithmic and mathematical background. Algorithms and Data Structures are pretty fundamental to computer science.

If you want to get started with algorithms, a good textbook will help a lot. I know that "Algorithms" is well regarded. It certainly has good diagrams, though I find some of their choices about how to represent things in Java to be a little weird. The other popular one is "Introduction to Algorithms
, which is more comprehensive but probably not quite as approachable.

u/Cuin-Manari · 1 pointr/technology

A book I have recently been recommended was "How to create a mind." Seems to have some bias, but has interesting takes on the subject.

I won't deny I'm fairly early on in my degree myself, but if you want what I've been using as supplementary material, here they are.

If you're looking for some code books, I suggest the big red book. That's pretty standard as the go-to Algorithms book. Fairly dry, but it the 4th edition has some good explanations of nice and efficient algorithms - plus, clean code.

Finally depending on your preferred language (I'm a C++ person myself) this book might have some relevance.

u/ahmadalhour · 1 pointr/programming

Sure thing. I used the following two books for studying how to implement them and not just study the theory:

u/LegGlance · 1 pointr/learnjava

You can pick a book on Algorithms by Sedgewick, which is quite a standard recommendation for algorithms book these days and benefit both programming exercise and problem solving at the same time.

u/rykuno · 1 pointr/learnprogramming

I've always preferred to learn by videos such as from Udemy or Udacity, but if books are your preference I suggest Algorithms(4th Edition).

It's pretty intensive at times but it also has a course that goes along with it which is pretty fantastic.

u/ennorehling · 1 pointr/C_Programming

CLR is a great book, but like all text books, it's not cheap. If you're looking for used books, and find that you can get Sedgewick for a better price, then that's an equally good book to learn from.

u/Vorzard · 1 pointr/java

You mentioned Robert Sedgewick. His book, Algorithms and his online courses are highly recommended. And he uses Java in them.

For object-oriented design the Head First books are great. It also worth to have the classic book Design Patterns: Elements of Reusable Object-Oriented Software.

I also recommend the books Code Complete, and Clean Code, they are great.

u/VerticalDepth · 1 pointr/learnprogramming

CompSci covers a wide range of subjects, many of which won't be that relevant to you. When I was at Uni my classes covered:

  • Algorithms
  • Functional Programming
  • Architecture and Design Patterns
  • Ethics, Professional Issues
  • Artificial Intelligence
  • Compilers and Programming Language Design
  • Data Structures
  • Database Systems
  • Networked Systems
  • Operating Systems
  • Discrete Mathematics
  • Low-Level Systems and Hardware

    This list isn't comprehensive, but covers most of the main points. For your job, you can happily ignore most of that core.

    I think you'll want to focus on with the highest priority:

  • Design Patterns (Book Suggestion)
  • Algorithms (Book Suggestion)

    Warning: Algorithms is a heavy and dry book. It might not be a good recommendation for a beginner to be honest.

    As you're interested in Data Science, you're already off to a good start with R and Matlab. Python is fine but has some issues that don't make it ideal for large-scale data processing. The good news is that once you've got the hang of Python, you can learn another language much easier. I think it's worth noting that R is quite obtuse in my experience, so if you get your head around that you're doing quite well.

    But I digress. You're also going to want to learn about data structures, networked systems and databases, especially if you want to work with "Big Data". I think thought that your best starting place here is learning how to code. With that under your belt along with your math degree, everything else should be easy enough to learn on a case-by-case basis.

    Source: Masters & PhD in CompSci subjects. Good luck, and feel free to PM me if you're interested in a mentor for this. With a better understanding of your position, I could probably help pare down what you need to study to more specific subjects.

    PS: Assuming you're at Uni, your library should have both books I have suggested.
u/prajaybasu · 1 pointr/csharp

C# is not a popular language with academics who tend to write cryptic Java and C/C++ for a living, so good luck finding a reference written by someone credible.

u/maksa · 1 pointr/serbia

Ovo su dve "standardne" knjige:

Introduction to Algorithms (Cormen, Leiserson, Rivest, Stein)

Algorithms (Sedgewick)

Lično, ja volim ovu (od drugog autora gore): Algorithms in C++

Dodatno, Knuth je pre neku godinu izašao u PDF-u i verujem da bi mogao da ga nađeš po Internetu, ali iskreno - danas je to nešto gde ćeš se najviše diviti tipografiji, i ako si baš baš baš jako matematički inkliniran dokazima (). Za praktične potrebe 2017. godine bilo šta od ona dva gore navedena je bolje.

) Kome nije dosta matematike u Knuthu - Concrete Mathematics: A Foundation for Computer Science. Opet, možeš provesti udoban radni vek bez da znaš išta od toga, što ne znači da ne treba da čitaš ako nisi radoznao. Svakako ćeš biti u prednosti u odnosu na onog ko nije.

u/newdingodog · 1 pointr/learnprogramming

Fuck the CLRS book. You are not going to just pick that up and learn anything meaningful in a summer. Get a book that is commonly used for a course in DS&A. If you know/ are interested in java, this book is quite good:

u/GalacticGlum · 1 pointr/csharp

For a good algorithms and data structures textbook take a look at: Algorithms 4th Ed. by Sedgewick and Wayne ( or Introduction to Algorithms 3rd Ed. by Cormen, Leiserson, Rivest, and Stein (

u/staringhyena · 1 pointr/cscareerquestions

Back when I started the first book on algorithms was "Algorithms and Data Structures" by Niklaus Wirth. Now it's freely distributed by the author

I heard good reviews about The Algorithm Design Manual by Steven Skiena, and Algorithms by Robert Sedgewick and Kevin Wayne; but I haven't read them myself.

u/8n7Lhk1i8cHqzUOEkGVq · 1 pointr/cscareerquestions

I'm in the same boat, I've been reading and I can definitely say it's the most insightful learning I have done thus far

u/lasthope106 · 1 pointr/learnprogramming

I used the 2nd edition of this book called Data Structures and the Java Collections Framework. At the time it was one of the most up-to-date books on Java 1.5 and generics. The book is very accessible for students, and probably one of the better technical books I've read in my entire academic career.

However, if I was to learn data structures from scratch again, I'll probably would go with Algorithms by Sedgewick. I've heard nothing but good things about the book, and don't let the name fool you. It actually focuses on the implementation of data structures or so I heard.

u/Arrgh · 1 pointr/AskComputerScience

The companion site for Sedgewick has Java implementations for everything in the book.

u/singulus · 1 pointr/compsci

It isn't always necessary to take some introductory courses. At my school, students coming in with a background in computing could skip CS101 and head right into CS102.

To be fair, not all schools carry identical curriculums, so OP should reach out to some professors to gauge whether he can skip an introductory course.

OP, if you have a good understanding of Java, you might want to check out Algorithms by Robert Sedgewick and Kevin Wayne. It's a great introduction to computer science and was one of the textbooks in my CS102 class. Sedgwick and Wayne also have a website which has a number of great resources.

u/rodrigomlp · 1 pointr/brasil
u/djhworld · -3 pointsr/compsci

To be honest I found this book terrible, pages and pages of mathematical equations. Great if you're want to really understand the mathematical underpinnings of algorithms, but hardly a primer to practical stuff.

I found this book more approachable