Try the custom AI to help you find products that Reddit loves.
I read a half dozen algo books years ago when learning. Mastery came slowly for be, but it was a fun process. My favorite for beginners is this one by Lafore. My favorite overall is The Algorithm Design Manual by Skiena.
Wouldn’t recommended this at all. Agree with the other person. It’s not a good book for teaching and understanding more of high level refresher with a lot of questions. I personally don’t like the style it teaches and it assumes too much.
For learning the basics of the data structures I found this book really good, explained things very clearly.
Same title, but different author (this picture is a bit more cropped, but in other reposts it has the author and it's not Goodrich and Tamassia). Personally I think Goodrich & Tamassia's book is quite okay.
Thanks for the input. I do have a book on data structures and algorithms. The contents are as such:
Would studying these be enough as opposed to outright trying to solve LeetCode problems?
For the usual data structures and algorithms that are taught, I'd go with Data Structures and Algorithms in Java.
All of the examples are in Java, but you can always "translate" the examples into Python yourself. Also, the most important thing is that the principles taught here will apply in any language.
I don't like CLRS as a first book, personally. I read this one first and liked it a lot as a beginner. After that I read a half dozen other ones, including CLRS, to really solidify my understanding. I think that is a good starting point though, especially if you already know Java.
who are you taking CS2 with?
my best advice is if you are struggling with the data structures in Java, get this textbook it's a Java DS & Algorithms book that is very easy to follow along with and the code is very well organized!
I used it when trying to build a Binary Tree Data Structure and it helped so much!
don't feel bad about failing, just keep moving and ignore anybody who tries to put you down. I failed out of college and things are going okay for me, things could very well be way worse, so just be happy as best you can. Use failure to better yourself and motivate yourself.
I took CS2 with Jason Smith, I do not recommend him for that class, he will just expect you to teach yourself everything, his projects also get a lot harder. He is only good because he covers a lot of material, not because he is a good teacher.
also avoid Zuilian Khan, that man lies out of his teeth, just be cautious about who you take, so many people just go into CS and expect good teaching at UTD and so many people fail because the profs are just not there for you, at least the ones i had so far.
learn as much as you can from class and be nice to people, work with others and you will be in better shape for the road ahead!
best of luck to you!
I learned for the first time from this one:
I think it's better suited for newbies than CLRS, and I think for advanced use, The Algorithm Design Manual is better than CLRS. Nobody will perfectly understand all algorithms in the first shot, so I recommend going through the Lafore book once (or twice), and then going through the Skiena book afterwards. Lafore uses Java, Skiena uses vanilla C, but you can also just read his pseudocode and then write your own Java versions for understanding/testing. Check out CLRS at some point too. The more books you read the better.
The next step after an Intro to Programming course is usually a Data Strcutures course. Here is a good bood that I'm using right now. Easy to read. http://www.amazon.com/Data-Structures-Algorithms-Java-2nd/dp/0672324539/ref=sr_1_fkmr0_1?ie=UTF8&qid=1448722348&sr=8-1-fkmr0&keywords=data+structures+ds+lafore
Absolutely. The best preparation I've had for real work was working through this book and making my own implementations of library functions (not because I can do it better, but because I can practice fundamentals and fully understand the side-effects of various functions/methods.
Probably one of the best books I've read for DS with Java.
Finding a free pdf online is beyond easy
After some googling:
some lecture notes
Imho, it would be great if you could find coursework from some university. If not the actual lessons, then at least the names. Then google those things. Though some thing are IMHO too important to just google, and I'd probably look into getting a book on it. Like
Disclaimer: I haven't researched exactly how good the books are, just had enough reviews and stars to indicate that they are probably good.
Imho, books > tutorials.
Then blog style guides. Baeldung is amazing (though the quality has dropped over the years, but not by a significant amount).
I think some really big universities, like cambrige, idk, have made their corsework public. That would be an amazing resource.
But be warned, all of this takes time. IMHO tutorials just lie. They make you feel like you're progressing a ton in a very short amount of time, but none of it is real. Real learning takes time, months and years. And following a full course is not enough. You should also do some "homework". Aka small programs that tests and prove what the course was about.
Signing up to university is a shure-fire way to get the info that you need. This coming from a dropout mind you. But I still appreciate what I went through at uni. Just not the math. The math can go hang itself.
Coremen is probably a jump into the deep end for a beginner. This was the book we used in undergrad and it covered so much about the subject and was easy to understand: https://www.amazon.com/Data-Structures-Algorithms-Java-2nd/dp/0672324539
You can make stacks with arrays or linked lists.
This is all in the book: https://www.amazon.com/Data-Structures-Algorithms-Java-2nd/dp/0672324539
It's one of the most important courses you will take in computer science. It's challenging but a good professor makes a great difference, some professors focus a lot on analysis of algorithms (which are taught in COMP 2080), while others focus more on data structure implementation.
This is the textbook that was used to teach the course, in case you want to a headstart. That book is too big and intimidating but I have found it very useful outside of class. Assuming that the course material has not changed since I took the course a few years ago, you can use this free alternative to learn most of the materials covered in class.
Data Structures for Coding Interviews in Java: From Soup to Nuts
Data Structures and Algorithms in Java (2nd Edition)
I really learned a lot from Data Structures & Algorithms in Java by Robert Lafore
Albiet it's a bit dated:
But I really enjoyed the book.
I really didnt like that book. It introduces something in a poor way then immediately hits you with an uppercut of hard math and analysis of every aspect of it.
I hated it as an introduction, and I dont see why so many people love it so much, every single chapter was the same thing, like a paragraph about what the data structure is, then immediately dozens of mathematical expressions which are extremely hard to comprehend (maybe im just dumb). If you look at the reviews on Amazon, a lot of them tend to agree with me.
Anyways heres the book I learned most of the algorithms and data structures I know from:
its in java, but if you know OOP then Java should be quite easy to pick up.
Heres a link to the applets that are used in the book, youll need to individually mark every applet as an exception in your Java control panel.
Its a lot less dense and more suited for the average person, you really need to be gifted to be able to understand CLRS. I dont even like it as a reference tbh, way too much math and not to the point.
I would say this fall is too late since you'll be graduating in the fall (it's normally a first semester junior or earlier course at most schools). If I were you I would pick up Data Structures and Algorithms in Java.
Week 1: Arrays, Stacks, Queues, Linked Lists
Week 2: Binary Trees
Week 3: Hash Tables, Heaps
Week 4: Graphs, Weighted Graphs
Bonus - Week 5: Red-Black Trees, 2-3-4- Trees. I say bonus because you will rarely be asked to implement a function for a balanced tree in an interview, and on the job you will have multiple resources at your disposal to implement them.
Next up is Princeton Coursera Algorithm after you studied Data Structures. Video resources + exercises. There is a part 2 that you will want to tackle as well. I took the Stanford one and that was far heavier on math and theory. If you want to take that go for it, but if I went back I would take the Princeton one.
Get through all of that by the end of Summer or September and you'll be prepared for the majority of job interviews (more than prepared really) from my experience with intern and entry level interviews in the last 3 months. Then you can spend the last 3 months of your undergraduate finishing school, applying to jobs, and prepping for interviews (which is really just soft skills and data structures + algorithms practice). If you'd like you can PM me your course history and I can make recommendations based on what you've taken.
I'd forget about bollocks like the CLRS , skienas book or anything recommended here.
Get Lafore book on algorithms in java. It's like the clearest non mathematical oriented book on the subject.
> Structure and Interpretation of Computer Programs
I haven't read that book, so I just looked it up. And hey, the top review on Amazon is by Peter Norvig! Cool. It sounds like an interesting book, but definitely no replacement for a dedicated algorithms text. So, you do what I did in my schooling when faced with profs who assign the wrong books: you get the right books and read them on your own. :-) I did this in addition to reading the assigned garbage. Eventually after reading enough books on your own you realize that you can get any college education (minus the magic piece of paper) by just reading (to the point of true understanding) books.
I've read a handful of algorithms textbooks. The thing about this field is that a lot of concepts won't click the first time. So relearning is never a bad idea, even as a seasoned pro. When you interview for jobs eventually you'll probably go back and read an algorithms textbook again, assuming interview practices are still the same at that time, and you want a top company. The first algorithms book I read was this one which I think is much better for a beginner than CLRS. But if you don't know Java, you might have to learn it, which will require serious effort if you're learning Scheme at the same time too. And really, Scheme??? At least teach the kids something they can use in their career. Although, I admittedly learned a lot of really cool algorithms in Prolog, which I learned just for that class and promptly forgot how to use afterwards, and never used again. But the algorithms stuck with me. My favorite algorithms book is The Algorithm Design Manual by Skiena, but it's also not good for beginners. If you read Lafore, CLRS, and Skiena, you'll be an algo pro by the end of all that. :-)
I like this one... it's not a "beginners" beginners book (it assumes you know some of the basics it already) but it is very informative and thorough.
Data Structures and Algorithms in Java
I would recommend against reading that book. It never goes in-depth enough, and absolutely sucks as a beginner's Algorithms book.
The best Algorithms book is still CLRS. If you want specific implementation look for Robert Sedgewick's Algorithms books.
There's also a more user friendly book (uses Java): http://www.amazon.com/Data-Structures-Algorithms-Robert-Lafore/dp/0672324539