Reddit Reddit reviews The Algorithm Design Manual

We found 39 Reddit comments about The Algorithm Design Manual. Here are the top ones, ranked by their Reddit score.

Computers & Technology
Books
Computer Science
The Algorithm Design Manual
Springer
Check price on Amazon

39 Reddit comments about The Algorithm Design Manual:

u/10_6 · 126 pointsr/learnprogramming

What I did a few years ago after graduating from college in CS to brush up on my DS + Algs knowledge was the following:

  • Read the Algorithm Design Manual.

  • Go through some of the challenges on this interactive python algorithms website.

  • Practice coding simple and then more advanced algorithms on sites like Coderbyte (my site) and HackerRank which provide good explanations and solutions as well. Here's a list of popular coding challenge websites in 2017.

  • Read as many algorithm explanations and code examples as you can on GeeksforGeeks.

  • Try and implement basic algorithms yourself like: shortest path, minimum spanning tree, DFS + BFS, tree traversals, different sorting algs, min/max heap, etc. and learn about their running times (big-o).

  • Look at some interview questions posted on careercup and try and understand how other users solved the questions. Like this example.

  • Aside from coding challenge sites, try and solve common coding interview questions you find online such as this list.

    Eventually when you get a coding problem it will be sort of like a switch going off in your head because you will have had so much practice with different types of algorithms and data structures that you'll be able to reduce the problem into a simpler problem you've done before. This is especially the case with dynamic programming problems. Once you've completed like 50+ DP challenges and understand how they work, you'll be able to solve (practically) any DP problem because they're all very similar.
u/DarkAnt · 26 pointsr/compsci

I don't know how to tell you how code well, because I don't know how to do it myself. I look at John Carmack, Bjarne Stroustrup, Guido van Rossum, Herb Sutter and co. and I realize how poorly I measure. That said, I do know of some things that will certainly help you. I believe to get good at something takes time and dedication. The following is in the order that I thought of it. I'm not sure how you should attempt to learn this material. Hopefully someone else can help you out with that.


Learning how to recognize potential solutions to classes of problems and of course having the basic tools to design a solution.

u/KeepingItClassy11 · 25 pointsr/learnpython

I really like The Algorithm Design Manual by Steven Skiena.

u/tazzy531 · 19 pointsr/google

If you want a job at Google, look up Steve Yegges article on how to prep for the interview.

There's no shortcuts from actually knowing your shit. Code, algorithm, design, Big O... Stuff that you actually do on the job.

Don't waste time on questions mentioned in this article.

When I interviewed, I read Skiena's Algorithm Design Manual cover to cover for a couple of months leading up to the interview.

u/chub79 · 15 pointsr/algorithms

The Algotitms Design Manual by Skienna helped me a lot.

I was also curious about this one.

Also, this site may help :)

u/HenryJonesJunior · 12 pointsr/cscareerquestions

Skiena's Algorithm Design Manual - It gives you an overview of what classes of problems exist and how real world problems can be expressed as instances of them. It doesn't always give you the step-by-step directions of how certain algorithms work, but it gives you enough of an overview to understand the problem and points you towards existing implementations.

It's certainly one of the most useful books I used when preparing for interviews (and comes in handy in the real world as well). As an anecdote, in one interview at a big-N company, I was presented with a problem, said "based on these factors I'd treat this as a network flow problem by doing X", and that was the only buzzword needed - rather than watch me try to write a solution to a known problem, we were able to move on to other questions. Without knowing that term, I probably would have spent the remainder of the interview trying to optimize a solution to the problem instead.

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:

https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X

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

https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202

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

u/sporksporksporkspork · 9 pointsr/compsci

I highly, highly, highly recommend reading Skiena:

http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202/ref=sr_1_5?ie=UTF8&qid=1320821047&sr=8-5

It's really readable, and is a really good refresher. I've actually reread it a couple times now (like, actually read like a novel, unlike what you do with CLRS), and each time I've been glad I've done so.

u/coned88 · 8 pointsr/compsci

The best way to learn these structures is to simply make a list of the ones you need to know, which can be done via looking at wikipedia and http://xw2k.nist.gov/dads/

One you have that list, take any language you know and program them without copying the code/psudocode from the web/book. You should know the general idea of the structure and be able to implement it. Then have a worker function that populates and tests all of them.

This books is also quite good if you want a book

http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202/ref=sr_1_3?s=books&ie=UTF8&qid=1292699709&sr=1-3



  • Queue
  • Stack
  • Linked List
  • Dictionary/AA
  • Hash Table
  • Heap
  • Binary Tree/search tree
  • Binary Tree
  • etc...
u/theootz · 6 pointsr/cscareerquestions

TL;DR Improve yourself, invest in your future, don't worry about the mistakes...read the books listed at bottom, and practice!

Few months ago I royally fucked up an interview at Microsoft. A really simple question. But I had no experience doing coding on paper instead of a computer.

I spent a lot of time studying various books and paper coding to make sure it wouldn't happen again.

I then had an interview for another (in my mind at the time) dream job. I did fine for all the phone interviews and they flew me over to the west coast for an in person interview for the day. I did well for the first bit until they started pulling out dynamic programming and integer programming questions on me and expecting me. Once again something I didn't prepare for, and f'd up. Didn't get this job either. For the longest time I was really hard on myself at fucking up on both these interviews one after another. Especially this second one since a lot more was riding on it than just the job (another story).

But then I decided I didn't want to have this sort of experience again and expected better of myself. I made myself further improve and brush up on all those concepts as well. Did a few mock interviews with friends, spent some time working on interview type questions on both the computer and on paper. A month or two later I started interviewing again. By this point I was an interviewing machine - and I'm now able to do just about anything thrown at me. I've had my choice of employers and until just recently, was in the situation where I had so many offers I didn't know which one I wanted most. I'll be heading to silicon valley soon at one of the top tech companies in the world with a fantastic offer considering I just graduated.

The point is - learn from the mistakes and improve yourself. I realize you don't want to be that guy spending heaps of time coding outside of work or whatever... but this is an investment in yourself and your career. Do it once, and then just brush up on your skills from time to time. Get into the interviewing mindset and just rock them so you can have your choice of job - and then you can go about your thing once you have the job locked. The up front investment will be worth it!

Things that helped me:

  • www.hackerrank.com - practiced a lot of questions on here
  • www.careercup.com - another great site for questions
  • Cracking the Coding Interview More help on questions, but also some great insights into the interview process for the larger tech companies and many hints and tips on how to go about solving the more complex problems
  • Code Complete A great book for helping you to refresh or learn about software design
  • Eternally Confuzzled Great resource to learn how to think about common data structures and algorithms

    Having trouble with Algorithm design/analysis? These are some of the go-to books for that:

  • The Algorithm Design Manual Probably the defacto for learning about algorithm design and analysis
  • Introduction to Algorithms A great book with many different algorithms and data structures to learn about
  • Algorithm Design A great book if you want to dive deeper into more complex subjects like graph theory, dynamic programming, search algorithms, etc.. etc..
u/CSMastermind · 4 pointsr/learnprogramming

I've posted this before but I'll repost it here:

Now in terms of the question that you ask in the title - this is what I recommend:

Job Interview Prep


  1. Cracking the Coding Interview: 189 Programming Questions and Solutions
  2. Programming Interviews Exposed: Coding Your Way Through the Interview
  3. Introduction to Algorithms
  4. The Algorithm Design Manual
  5. Effective Java
  6. Concurrent Programming in Java™: Design Principles and Pattern
  7. Modern Operating Systems
  8. Programming Pearls
  9. Discrete Mathematics for Computer Scientists

    Junior Software Engineer Reading List


    Read This First


  10. Pragmatic Thinking and Learning: Refactor Your Wetware

    Fundementals


  11. Code Complete: A Practical Handbook of Software Construction
  12. Software Estimation: Demystifying the Black Art
  13. Software Engineering: A Practitioner's Approach
  14. Refactoring: Improving the Design of Existing Code
  15. Coder to Developer: Tools and Strategies for Delivering Your Software
  16. Perfect Software: And Other Illusions about Testing
  17. Getting Real: The Smarter, Faster, Easier Way to Build a Successful Web Application

    Understanding Professional Software Environments


  18. Agile Software Development: The Cooperative Game
  19. Software Project Survival Guide
  20. The Best Software Writing I: Selected and Introduced by Joel Spolsky
  21. Debugging the Development Process: Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams
  22. Rapid Development: Taming Wild Software Schedules
  23. Peopleware: Productive Projects and Teams

    Mentality


  24. Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency
  25. Against Method
  26. The Passionate Programmer: Creating a Remarkable Career in Software Development

    History


  27. The Mythical Man-Month: Essays on Software Engineering
  28. Computing Calamities: Lessons Learned from Products, Projects, and Companies That Failed
  29. The Deadline: A Novel About Project Management

    Mid Level Software Engineer Reading List


    Read This First


  30. Personal Development for Smart People: The Conscious Pursuit of Personal Growth

    Fundementals


  31. The Clean Coder: A Code of Conduct for Professional Programmers
  32. Clean Code: A Handbook of Agile Software Craftsmanship
  33. Solid Code
  34. Code Craft: The Practice of Writing Excellent Code
  35. Software Craftsmanship: The New Imperative
  36. Writing Solid Code

    Software Design


  37. Head First Design Patterns: A Brain-Friendly Guide
  38. Design Patterns: Elements of Reusable Object-Oriented Software
  39. Domain-Driven Design: Tackling Complexity in the Heart of Software
  40. Domain-Driven Design Distilled
  41. Design Patterns Explained: A New Perspective on Object-Oriented Design
  42. Design Patterns in C# - Even though this is specific to C# the pattern can be used in any OO language.
  43. Refactoring to Patterns

    Software Engineering Skill Sets


  44. Building Microservices: Designing Fine-Grained Systems
  45. Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools
  46. NoEstimates: How To Measure Project Progress Without Estimating
  47. Object-Oriented Software Construction
  48. The Art of Software Testing
  49. Release It!: Design and Deploy Production-Ready Software
  50. Working Effectively with Legacy Code
  51. Test Driven Development: By Example

    Databases


  52. Database System Concepts
  53. Database Management Systems
  54. Foundation for Object / Relational Databases: The Third Manifesto
  55. Refactoring Databases: Evolutionary Database Design
  56. Data Access Patterns: Database Interactions in Object-Oriented Applications

    User Experience


  57. Don't Make Me Think: A Common Sense Approach to Web Usability
  58. The Design of Everyday Things
  59. Programming Collective Intelligence: Building Smart Web 2.0 Applications
  60. User Interface Design for Programmers
  61. GUI Bloopers 2.0: Common User Interface Design Don'ts and Dos

    Mentality


  62. The Productive Programmer
  63. Extreme Programming Explained: Embrace Change
  64. Coders at Work: Reflections on the Craft of Programming
  65. Facts and Fallacies of Software Engineering

    History


  66. Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software
  67. New Turning Omnibus: 66 Excursions in Computer Science
  68. Hacker's Delight
  69. The Alchemist
  70. Masterminds of Programming: Conversations with the Creators of Major Programming Languages
  71. The Information: A History, A Theory, A Flood

    Specialist Skills


    In spite of the fact that many of these won't apply to your specific job I still recommend reading them for the insight, they'll give you into programming language and technology design.

  72. Peter Norton's Assembly Language Book for the IBM PC
  73. Expert C Programming: Deep C Secrets
  74. Enough Rope to Shoot Yourself in the Foot: Rules for C and C++ Programming
  75. The C++ Programming Language
  76. Effective C++: 55 Specific Ways to Improve Your Programs and Designs
  77. More Effective C++: 35 New Ways to Improve Your Programs and Designs
  78. More Effective C#: 50 Specific Ways to Improve Your C#
  79. CLR via C#
  80. Mr. Bunny's Big Cup o' Java
  81. Thinking in Java
  82. JUnit in Action
  83. Functional Programming in Scala
  84. The Art of Prolog: Advanced Programming Techniques
  85. The Craft of Prolog
  86. Programming Perl: Unmatched Power for Text Processing and Scripting
  87. Dive into Python 3
  88. why's (poignant) guide to Ruby
u/kharashubham · 4 pointsr/compsci

It's a great course, doing well in it would definitely give you more confidence in taking up more challenging problems in the CS or Software Engineering domain in general. I would recommend you to go through Data Structures chapter in the The Algorithm Design Manual by Steven S. Skiena, also a great book to study about Algorithms. This book is an amazing read and I recommend it to all CS majors.

u/0b_101010 · 4 pointsr/learnprogramming

But if you are looking for an algorithm and data structures book, I found The Algorithm Design Manual the most useful book of all I read in the field of CS. Find it used, but if you can afford it, it is very well worth the price in my opinion.

u/empty-stack · 3 pointsr/gamedev

The Algorithm Design Manual

It's very concise and well organized. I always give this a quick skim before an interview

u/ShadowWebDeveloper · 3 pointsr/ExperiencedDevs

Yes, working at a big N now after several years of working for startups. You'll need to study up on how to do successful coding interviews (which at large companies are very different than the startup interviews you've probably experienced). Cracking the Coding Interview is a good start. Leetcode is also good practice but make sure you do some whiteboard practice as well since you won't have the advantage of a compiler when doing the actual interviews. If, like me, you didn't have a formal CS background, consider watching the MIT 6.006 Introduction to Algorithms videos and possibly doing the exercises before any of that. They were really helpful when textbooks like the oft-recommended The Algorithm Design Manual came across as super-heavy (but still useful as a reference).

Good luck!

^(Disclaimer: Opinions are my own, not necessarily my employer's.)

u/FullOfEnnui · 3 pointsr/cscareerquestions
u/munificent · 3 pointsr/learnprogramming

I've heard good things about The Algorithm Design Manual. I personally really got a lot from Algorithms in a Nutshell. As the name implies, it's a small book, but quite good.

I know you requested data structures, but the two subjects are closely intertwined: a given data structure often exists to support an algorithm and vice versa.

u/BlackRaspberryChip · 3 pointsr/cscareerquestions

Wow that's awesome! Are you interested in embedded and RTOS systems at all?

If so, I'd highly recommend this and this and picking up a TI TM4C123 board to do some development on.

I also recommend this book for learning more about the practical application of algorithms.

u/FourForYouGlennCoco · 3 pointsr/learnprogramming

I'd suggest finding a good course and a good book that you can use for reference. Then cementing your skills by doing lots of problems.

The book: this one's easy. Skiena's Algorithm Design Manual is highly regarded, surprisingly readable, and affordable by textbook standards. Don't need to read it cover to cover, but it's great reference, and I'd suggest reading the really critical chapters like graph search and sorting.

The course: You can't really do better than Stanford's course, taught by Tim Roughgarden. I took it a few years ago and have used it to brush up every time I apply for a new job.

The problems: it's important not to dive into this until after you've learned the basic concepts. But Leetcode is the standard, and for good reason -- it has a ton of problems, many of which are leaked from real companies. At first, these problems will seem very difficult -- it make take hours to solve a 'medium' level problem, if you can get it at all. If you simply can't get it, read the solutions and really understand them.

I also recommend the book Elements of Programming Interviews. You'll hear a lot of love for Cracking the Coding Interview on this sub, but it's too easy and outdated for current interview prep. It's a fine intro book, but it won't take you all the way to where you need to be.

u/sessamekesh · 2 pointsr/learnprogramming

In almost every field, you're going to end up dealing with groups of things - lists of contacts, groups of users, categories of billing items, whatever. Having a deep understanding of arrays vs. (hash) sets vs. (hash) maps is huge, by far that's the most common decision I make on a day-to-day basis.

I think it's worthwhile to expose yourself to a bunch of specialized algorithms and data structures. You don't need to study them all super in-depth, but reading about them and maybe hacking them out in Python/Java/C++/whatever is a great learning exercise. I personally like "The Algorithm Design Manual" by Steven Skiena, (EDU PDF, Amazon). It's on the dry side, but it categorizes algorithms into a handful of types (sorting, graphs, combinatoric search, etc) which makes it great reference material for learning.

A handful of useful exercises, maybe useful:

  • Quicksort (and why is it faster than a trivial sort like selection sort? Explain it like I'm five)
  • Caching! Also, how it makes pure functions preferable to unpure ones for expensive code.
  • Implement a Fibonacci function, and describe why the recursive solution is terrible (hint: draw out each function call for a number like 10). This is a great exercise in runtime analysis. Implement it better and know why your second shot is better.
  • Graphs manage to sneak into all sorts of places - knowing Dijkstra's algorithm by heart probably isn't important, but being comfortable with graphs is valuable. Many problems can be thought of as transforming data from group A and B into C, and thought of as information travelling through a graph, being changed at each node. The graphics pipeline used for 3D graphics is a fun example of an application of this idea.
u/TheFakeNoob · 2 pointsr/cscareerquestions

If you plan on self teaching I find these materials to be quite sufficient:

Data Structures and Algorithm Analysis This book also has a C++ version and can be found online for free(legally, from the author). I prefer reading a real book over PDFs so I opt to buy it but your opinion may differ.

The Algorithm Design Manual. This is pretty much the 'go to' book for self learning DS/Algo since it covers a lot of material but does not go that deep into the details beyond a working knowledge.

Introduction to Algorithms. This is the standard text on Algorithms and is used in most undergrad/graduate level courses on the subject. It is very detailed and goes deep into the theory and mathematical proofs of algorithms. It's a much more academic text but still worth mentioning and being aware of.


Edit:
Out of the 3 I think the first is the easiest to read but the second is the best in covering relevant material quickly and sufficiently enough. The last one is only for those who want mastery of the topic or intend to use it for a course.

u/Nihili · 2 pointsr/compsci

I'd recommend

u/chernn · 2 pointsr/webdev

If you are a beginner and you have wifi on the plane: https://www.freecodecamp.org/.

For deeper reads:

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/Vitate · 2 pointsr/cscareerquestions

My Story

Hey pal, I was in a similar boat about 8 months ago. It was my senior year as an Economics major, and after taking a programming class, I instantly fell in love with it. I crammed a few more programming classes in before graduating, but in the end, I sure as hell wasn't employable as a software engineer.

​

I had a choice: become a data analyst (the path I was currently on) or follow the software engineering dream. I chose the latter.

​

I decided to go to a (remote) coding bootcamp after college. The program was 6 months. It taught web development (Node, React) and some very basic CS fundamentals. I spent my free time outside the bootcamp inhaling all the computer science and industry information I could. I did this because I wanted to be a competent programmer. I found it fun.

​

This week I had my second onsite. I expect to receive a full-time software engineer offer (my second offer so far) later today, and I have 4 other onsites in the near future (a big 4 + a few startups). It has been a heck of a lot of work to get here, but if you want it badly enough, it's possible.

​

My Tips

  • Try not to be intimidated by these tips. Software engineering is something that you take little bites out of. You cannot become an employable developer in one bite, and sometimes the field can be intimidating.
  • Your options right now are self-teaching, a coding bootcamp, or a CS master's degree (might be hard to get into a good program without a bit more relevant experience, tbh.).
  • It's going to be pretty difficult to break into anything other than web development for your first programming job without a CS degree. Titles like Front-end Engineer, Full Stack Engineer, Backend Engineer, and Software Engineer (at a web company) are within reach. More specialized titles probably aren't very realistic.
  • Basic toy projects (i.e., simple HTML/CSS or similar) probably aren't enough to get significant attention. You need things more complex, like full-stack applications built from scratch. This means a working backend, a working database, a modern front-end (using a framework like React, etc.). Here's my portfolio if you're curious about the type of apps I mean.
  • Other types of programming applications outside of web dev are also fine, as long as they are sufficiently complex and interesting.
  • Put your projects on your GitHub no matter what. Learning how to commit code to GitHub is an important industry practice. Having a green GitHub history makes you look better.
  • Try and build a portfolio once you get better at coding. Don't kill yourself making it look amazing, but do try and make it look good. Not everyone will care about your portfolio, but some people will. I got an interview just based on having a nice portfolio.
  • Your university course sounds like a great primer, but you need to go deeper to be competent enough to pass interviews. I took similar courses at my university, but what really helped me was going through a few textbooks (1, 2, 3 -- some suggestions) and watching MIT 6.006 lectures. You will still have gaps in things like web security, scaling systems, networks, and operating systems, but I wouldn't spend a ton of time learning those topics as a new grad. Knowing the basics can be helpful though, because these things do definitely come up in interviews.

    ​

    Happy to answer any other questions you may have. I'm not an expert or an experienced software engineer yet, but I've walked the path you're considering, so hopefully my tips are helpful.
u/last_useful_man · 2 pointsr/learnprogramming

You don't need to start off with 'Cormen' (CLRS) imo. It has way more complication than you need in a first class, and is so heavy to lug around and painfully clearly written (=> verbose), that you'll dread picking it up. Really, whatever the cheaper class text is, is ok. Skiena's "Algorithm Design Manual" is pretty complete for beginners in the first part, is less heavy on math (but has some) - the book has a practical bent - and the book weighs far less. Plus the guy is a witty writer. It's a bit more terse, so there's room for an algorithm survey in its 2nd half. For this reason the book is a keeper. It's especially great for learning dynamic programming (which you may not do).

u/Cracklings · 2 pointsr/csharp

This is just my 2 cents, but the first thing you should be asking when learning any language is what problem are you trying to solve with the language?

C# as a language doesn't amount to anything, but it's real potential comes from the frameworks it is associated with.

​

If you're wanting to:

web develop then you would need to look into .NET Core + WebApi + MVC or a front-end framework (Angular, React, Vue).

This is a great course to get you started with. It'll create a basic web application you can modify and play around with from the database to the front-end:

https://www.pluralsight.com/courses/aspdotnetcore-efcore-bootstrap-angular-web-app

​

desktop development then look at Wpf (window presentation forms) or use electron and c#

mobile development then take a look at xamarin

​

from your use of Unity though, it seems as if you are more into game development which I would advise then to go a bit lower and really learn algorithms and good implementations. For this, there are some greats books you can use to help you get started:

Cracking the Coding Interview: 189 Programming Questions and Solutions by Gayle Laakman - Even though this is an interview book it's a great intermediate book to algorithms. The book does assume you have a basic understanding of elementary data structures.

The Algorithm Design Manual by Steven Skiena - This is definitely more advanced and heavy but it's a great book to really dig down into the nitty gritty

A great website for practicing writing algorithms in c# is leetcode.com. It's a site that basically lists a bunch of small questions you can solve with an in browser compiler that includes c#. This way you wouldn't need to download visual studio to practice coding.

if you're up for the challenege, then you can download a framework like SFML.Net and try to develop a game from the ground-up without using an engine like unity. But this is obviously a lot of work ;)

​

Overall it's hard to give really specific advice without knowing where you're trying to head. But it's a good time to get into c# and in general microsoft's development stack. In the past people were shoe horned into using microsoft's technology stack from top to bottom but recently microsoft has made a lot of stride in making there tech more open which is making a lot of people turn heads.


If you are also looking for a more lite-weight ide then I recommend visual studio code or vscodium which is the same but without the trackers :)

u/Arubadoo · 1 pointr/learnprogramming
u/aagamezl · 1 pointr/devco

Jeison Higuita recomienda este libro para algoritmia y competitive programming: Competitive Programming

Esteban Foronda recomienda este libro para algoritmia: The Algorithm Design Manual

u/ApokatastasisPanton · 1 pointr/compsci

It's incredibly expensive as well.

For more affordable resources :

u/tsuru · 1 pointr/PHP
u/mawattdev · 1 pointr/C_Programming

Sounds like you could use a good foundation in data structures and algorithms. I'd find a book on the subject and dive in.

My recommendation: The Algorithm Design Manual by Skiena.

Link: https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202

u/abcininin · 1 pointr/learnprogramming

You gotta start somewhere! I'm glad that you are taking the programming classes. Programming is fun, and challenging, you'll see. For starts, just go through your course and pay close attention to (a) algorithms and (b) data structures. If you find it hard to understand, just come back here or go r/learnpython. We are here to support you. Also, if you prefer books, i recommend this one - he talks through the concepts from problem solving and steps through psuedo-code before writing a functioning program. If you prefer an online experience, try all the easy problems on leetcode, don't get intimidated if you don't get the solutions, don't be afraid to peek at hints and solutions.

u/hawkbearpig · 1 pointr/cscareerquestions

No internships at any point in my college or post-college career. I had a modest amount of projects, mostly relating to my coursework in school. My senior year I designed and programmed a video game with a team of fellow classmates, which was my main project on my resume.

As far as independent study goes, mainly hunting down UC Berkeley / MIT comp sci lecture series videos on youtube and watching them, using resources like hacker rank to work through coding exercises. I also read through the Algorithm Design manual https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202

u/Ogi010 · 1 pointr/Python

can confirm, using this book in my MSCS program (my Uni doesn't have undergrad programs); I'm implementing a lot of the algorithms using custom objects in Python, so it's doing wonders for my object oriented game...

The book is also relatively straight forward to read (again, keep in mind I'm a graduate student), but other books such as the Algorithm Design Manual have been known to have easier to understand explanations and not be as theoretically deep.

Also lastly, for when I was testing my toes in the water, I flipped through Grokking Algorithms which for a short summary, and explanations on how things work is a great place to start (but of course you won't see this book in academic environments).

u/[deleted] · 1 pointr/IWantToLearn

You'll need programming background (basic stuff + data structures) to implement algorithms. You'll need mathematics background (Discrete Math) to analyze the algorithms, and in many cases, understand them.

Nice book: Skiena's The Algorithm Design Manual. These are in many cases pretty generic. Specialized interests come later!

u/SnailHunter · 1 pointr/compsci

>I highly, highly, highly recommend reading Skiena:

>http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1849967202/ref=sr_1_5?ie=UTF8&qid=1320821047&sr=8-5


>It's really readable, and is a really good refresher. I've actually reread it a couple times now (like, actually read like a novel, unlike what you do with CLRS), and each time I've been glad I've done so.

Just wanted to let you know that I checked this out online thanks to you and it looked good so I just bought it. I'm gonna read through it during my break.

u/plbogen · 1 pointr/compsci

CLRS is an awful book for learning or even gauging interest. Despite its love in AoA classes it is really more of a reference book than an instructional one. Not to mention not all of Computer Science is about algorithm analysis. I'd suggest reading Skiena instead, it is well presented and interesting. It will do much more for gauging his interest in AoA than wading through CLRS will.

In a way CLRS is like telling a kid thinking about going to grad school for Roman History to go read all of "The Decline and Fall of the Roman Empire" first. You are setting him up to be turned off.