Hacker News Comments on
University of California San Diego, National Research University Higher School of Economics
Data Structures and Algorithms
Hacker News Stories and CommentsAll the comments and stories posted to Hacker News that reference this url.
Data Structures and Algorithms from UCSD on Coursera: https://www.coursera.org/specializations/data-structures-alg...
I did the first three in this series of online Coursera courses from UC San Diego and I thought they were quite good: https://www.coursera.org/specializations/data-structures-alg...
You end up implementing the algorithms and data structures yourself in your language of choice, which I find is a good way to learn.
I'm new to data structures and algorithms. Saw this fairly new course from UCSD+HSE mentioned in one of the comments here. I'm finding it pretty interesting.
I’d recommend trying the graded exercises in https://www.coursera.org/specializations/data-structures-alg... or https://www.edx.org/course/data-structures-an-active-learnin... — unfortunately, for the most benefit (online automatic grading), you’ll have to pay either EdX or Coursera, but EdX offers a small sample of exercises to start, if I recall correctly. And there are a few more courses after those.
If you’re anything like me, you’ll learn better if someone doesn’t ask you to do the impossible, but instead leads you through enough solutions that you can get an immediate confidence boost from the first few easy ones, then the intermediate ones require more thought, and if you really get stuck, there are discussions about how to solve some of the problems. Usually you have to think algorithmically, not just write code, and some problems might just be harder for you to understand because you haven’t done as much work in that area. I won’t say it’s a complete look at algorithms—there’s a whole other course on strings if I recall, but it’s a good start.
Also, here’s my cheat to pass those employer questions — if they let you use JS, do EVERYTHING you can with ES6 Map and Set classes. Folks rarely look at the code and don’t care if you’re using for loops or advanced classes, but it’s way easier to use a Set than to worry about how many times you have to loop over some result to reduce duplication, or sort things, or what have you. If you need a unique sorted set, there are faster algorithms, but a simple (new Set(arr.sort())) gets the job done, because Set is insertion-ordered by default and any native JS function is generally faster than you writing your own code, so it’s impossible to mark this solution as wrong unless you exclude native functions (but who does that?). A bonus tip, if you need to figure out the difference between sets, just get creative with .filter and .map. There’s not much to memorize beyond that because there’s not much advanced functionality, just building blocks flexible enough to do anything, relatively expressively. https://exploringjs.com/impatient-js/ch_sets.html#missing-se...
⬐ jpeg_heroAgreed, but as OP was alluding to lots of people need solid business logic written that doesn’t have to hyperscale. Just lame that all the shovel-sharing apps interview as if they want to process petabytes of requests :)⬐ toop43I'm taking the princeton algorithms 1 course now, and it is proving helpful. It has automatic online grading and is free.
The only gripe I have is that at the end of the day, the litmus test for whether or not I'll pass an interview really is leetcode.com
While the coursera course is great, and provides fundamentals I'm clearly lacking ... It's tangential to the actual solving of these riddles.⬐ lstamourA follow up, if ES6 JS doesn’t come easy to you — pick a language you like best and look for its equivalents to Set, Map, .filter (or select) and .map (or collect). Bonus tip, look for .find or .first, to short circuit looping and stop at the first thing that matches. Yes, you can memorize for loops or why one thing is more efficient than another, but if you start with Set and Map where each makes sense, you’ll solve 80-90% of algorithm questions pretty easily and usually in a way that’s straightforward to read and understand later, especially if you start naming some of your functions to make them a bit easier to read. (Like naming selectors in Redux...)
If writing SQL as part of a quiz, learn the different joins because usually the question is worded in a way where picking the correct join will deliver huge performance benefits by reducing how much data you’re going through or making things more efficient than looping through multiple subqueries. Left vs Inner vs Right vs Outer vs Cross... remember that the less data the server has to go through (the fewer records in the earliest sub query), the faster everything will run, in these quiz scenarios. Yes, in real life how you store data matters, what you index, but it’s rare you’ve any control over the index or schema in these tests.
Best thing you can do is to enhance your skills in data structures and algorithms so you have a strong base in them. The interviews normally start here for most of these companies because their software deals with a large amount of data structures and/or algorithms and is essential to understand to be a productive contributor there.
If your previous work did not actually require you to know them, they probably where not building algorithms from scratch or optimizing parsing/processing of data very much. As without the essential basics of data structures and algorithms it is very hard to build scalable applications that rely on them.
As you grow in your career you will have to learn things outside of your base knowledge as you move up the ranks on the technical skills ladder. This will be standard requirements for senior level positions which you are probably seeing now. At the junior and mid level you are normally not responsible for building the core pieces of data processing software engines or massively scalable applications that run custom in house algorithms.
If you go through some of the below resources they should help fill that skills gap and make you an overall stronger engineer so you can feel confident applying for senior level positions.
I would recommend taking the following course: https://www.coursera.org/specializations/data-structures-alg... https://www.edx.org/course/algorithms-and-data-structures https://in.udacity.com/course/data-structures-and-algorithms...
and reading the following book: https://www.amazon.com/Introduction-Algorithms-Press-Thomas-...
The best one is HSE & Yandex & Computer Science Club & UC San Diego 6 course specialization on coursera
⬐ chillytoesI agree. This sequence of courses is the best I've found.
Here's a link to that series: https://www.coursera.org/specializations/data-structures-alg...
What's impressive about it (to me) is that, unlike other Coursera series & courses I've looked at, there is a set schedule for when each course in the series will be offered, allowing you to better plan how the courses might fit into your schedule.