5 ms·
as someone who doesn't know much about this and is trying to join the tech community, what will I achieve through this?
by Kimalsi 10y ago
as someone who doesn't know much about this and is trying to join the tech community, what will I achieve through this?
- ludicast 10y agoYou will learn more about this, and that will make it easier to join the tech community. -------------------------------------------- Also, to add some signal to my noise, Tom Cormen is apparently one of the designers of the course. He wrote the gigantic encyclopedia of algorithms, as well as a shorter, more-entry-level book on the subject. You'd be in good hands to learn the topic. And the topic is one that teaches you how to reason about your programs in a way that works across languages and disciplines.
- lebanon_tn 10y agoData structures and algorithms are foundational topics in computer science. While they can seem daunting to beginning programmers, they become very important as you progress into writing more advanced programs. Also, the interview process for software engineers at most companies ask about them almost exclusively.
- throwaway2016a 10y ago> they become very important as you progress into writing more advanced programs As someone with a Computer Science degree I can say that the only times I have ever used any of the algorithms I learned directly was when writing low level C and GoLang. I'm willing to bet 90% of programmers... even those that right "advanced" programs do not use them day to day. Every algorithm and data structure worth anything has been abstracted out into easy to use libraries years ago.
- ashark 10y agoAny time I make the effort to learn more or brush up on CS fundamentals I end up forgetting most of it in short order because I so rarely use any of it at work. Ditto mathematics past roughly Algebra 1. Every now and then I try to brush up on calculus or linear algebra or something, but it takes so much time to keep those skills up when you're not using them at work. Like keeping up foreign language skills while living somewhere you rarely encounter native speakers.
- stale2002 10y agoOf course! But how are you going to know WHICH library function to use if you don't know what to look for in the first place? Knowing that a problem at hand requires a certain solution is important.
- throwaway2016a 10y agoYou use the one labeled "sort" and trust the standard library chose reasonable defaults. It's not like the standard lib is going to use bubble sort. If the reasonable defaults aren't good enough... you're in the 10%.
- stale2002 10y agoIt is not about choosing "sort" it is about knowing if you need your data sorted in the first place. Sure, in some situations it might be obvious, but maybe not obvious for others. And things that are immediately, blindingly obvious to a 5 year experience programmer may not be obvious to a newbie. Ex: imagine if you didn't know what a hashtable or a dictionary was and just used single variables for everything.
- jhomedall 10y agoThere's a lot more to data structures and algorithms than sorting. For example, just knowing that bloom filters or interval trees exist opens up a ton of options, even if you don't implement them yourself. For that matter, the choice of sorting algorithm can have security implications. QuickSort on user-facing data can easily become a DoS vulnerability.
- ecnahc515 10y agoSure, they'll already exist, but you need to know the performance characteristics of each, so you know when to use one algorithm/data structure vs the alternatives.
- nkozyra 10y agoYou use them every day, you probably just don't formulate it into a "is this an algorithms problem?" Very few days do I avoid evaluating what kind of/depth of loop (if any at all!) is needed to generate an output.
- caconym_ 10y agoI'm a self-taught software engineer and learning about data structures and algorithms has made a huge difference in my ability to deliver solid code. The basics of graph data structures and algorithms (DAGs, topological sort, BFS, connected components, etc) seem especially helpful, and it's good to have a constant awareness of the time complexity of the code I'm writing. I'm not talking about implementing my own sorting algorithms every time I need to sort things; I'm talking about recognizing that a particular problem can be efficiently represented by data structure X and solved with algorithm Y. Hopefully I'm writing none of this code myself, but a programmer who doesn't in theory know how it all works is never going to be able to compose pre-written code into an optimal solution. I know, because I've been that programmer. I don't know what you mean by "advanced" programs. I guess I fall within your 10% by definition, since I can anecdotally say that having and using this knowledge has made a big difference for me. I would say that I use this stuff 5% or less of my time, but for that 5% it can make the difference between run time of under a second vs. multiple days, and between a brittle, defective solution and a rock solid one. Not to mention that it's extremely handy for getting hired in the first place, and it's just plain fun.
- n4r9 10y agoI suspect that's untrue for many modern areas of development that are still "worth" something. When it comes to road routing I don't know of any .Net libraries providing modern functionality (hierarchy pre-processing, landmarks, arc flags etc...).
- jeron 10y agoyou will learn algorithms and data structures in all seriousness, algorithms and data structures are essential to computer science theory. When trying to get a job as a software engineer, technical interviews will mainly be problems about algos and data structures.
- jingwen 10y agoIDEs help you write correct syntaxes. Algorithms and data structures help you write correct programs.
- happy-go-lucky 10y agoData structures are ways of organizing and storing data. Algorithms are recipes or instructions. Usually it's learning algorithmic techniques for solving various computational problems and implementing algorithmic coding problems in a programming language. Hope that helps.
- SEJeff 10y agoDatastructures are akin to tools, and Algorithms are like plans. You need to use the tools to implement the plans for building your desired result. Each "tool" you learn inside and out allows you to build something new. The better you learn them, the more you can build.
- happy-go-lucky 10y agoIt's a better explanation than mine.
- SEJeff 10y agoI played with legos far more than is healthy as a child, and grew up to be a software engineer :) Can't help but think of it in literal lego terms.
- mirekrusin 10y agoSomewhere between 2-5x salary.
- gspetr 10y agoProgramming is essentially working with data to solve some kind of real world problem. When working with algorithms, you’re trying to solve problems efficiently. Your programs should be fast, the wait for a solution should be short.
- a3n 10y agoAt some point the performance of your code (in time and or space) will really matter. Solid knowledge of algorithms and data structures are essential to getting that right. Early in my career, actually before my career, I taught myself the available language on our department's mini-computer (don't remember the language or the computer), so I could automate parts of my and my colleagues' job. I had to sort something, and I innocently "invented" bubble sort to do it. The system administrator visited me the day I first ran it, and told me to stop doing that. Soon after, I quit and went to school. :)
- stale2002 10y agoYou basically HAVE to learn this stuff, because it is all anyone every asks about in interviews. So the answer is "you will become good at tech interviews and be able to get a job"
- itsmemattchung 10y agoLet's say you are writing a python program, and you want to simply check if an element is in a list. So, you build a list and then check if 'd' is in the list: mylist = ['a','b','c','d']. if 'd' in mylist: ... This works just fine, however, the time it takes, to find the item, grows proportional to the number of items in the list. If your list grows to 1000 items, and the item you are searching for is positioned last, python will check 1000 times. This is known as O(N). Now, how does the performance compare, when using a set data structure? myset = ('a','b','c','d') if 'd' in myset: ... Well, underneath the hood, the set stores the data in what's known as a hash. The time it takes to check if an item is (or isn't) in a list does not grow proportional to the number of items in the list—it's always constant: O(1).
- ojr 10y agoexposure to more solution techniques into programming problems that you might run into most likely in an interview session. A lot will say learn this as it is the "core" of programming, but in industry practice I've seen using pure functions (functions that return the same result when the same parameter is passed in) is becoming more commonplace than having a trickier function that mutates a variable differently during each iteration, making it harder to reason about program state. Algorithmic problem solutions usually involve non-pure functions that are not intuitive until you've seen them before. Front-end UI is better built using several pure functions.