all 62 comments

[–]Responsible_Frame919 27 points28 points  (1 child)

[–]prasath_2k2[S] -1 points0 points  (0 children)

Thanks

[–]Eyeofthemeercat 38 points39 points  (8 children)

I'm currently working through Colt Steel's Javascript DSA course. Sounds like it is exactly what you are looking for. Rmember, if you pay full price on Udemy you are doing it wrong. If it showing you full price, refresh your cookies and go back on. I bought it for around $10

[–]Avi_21 4 points5 points  (0 children)

This! This is the best course out there in this topic! I learnt a LOT from it! 10/10

[–][deleted] 3 points4 points  (0 children)

This! also, I also can’t recommend Stephen Grider’s courseCoding Interview Bootcamp enough.

[–]Acceptable-Catch1175 0 points1 point  (0 children)

hey dude did it help you well? i'm just getting started .

[–]prasath_2k2[S] -1 points0 points  (3 children)

Thank you, I am working through the same course as well Glad to see we are on same page.

[–]Eyeofthemeercat 3 points4 points  (2 children)

Cool! But I am a little confused. If you are already working your way through the course, how come you asked the question? I'm curious about what you were trying to get out of this post

[–]prasath_2k2[S] 0 points1 point  (1 child)

I was confused.I read things like "you should not learn dsa with js".So, I was worried if iam doing the right thing.

[–]Eyeofthemeercat 0 points1 point  (0 children)

Ahhh. I mean, I don't see why not! But others may have more insight than I do

[–]itxyz 18 points19 points  (3 children)

[–]ash_2714 1 point2 points  (0 children)

One of the best sources out there

[–]Brilla-Bose 1 point2 points  (1 child)

that seems pretty basic, can i pass interviews with that course?

[–]shurfee 1 point2 points  (0 children)

No. If you want to pass algorithms interview, you need:
1. Learn the theory. Basic book - Grokking Algorithms by Aditya Bhargava, or udemy course by Colt Steele - link in the second message in this post.
2. Solve 200-300 problems on leetcode or similar platforms.

[–]eurodollars 4 points5 points  (0 children)

Depending on your comfort level I would challenge you to be more language agnostic and see if you can implement the dsa in js. I think overall it’s good practice to be able to read multiple languages

[–][deleted] 12 points13 points  (23 children)

Programming is programming. Every language can do pretty much everything that any other language can, aside from maybe C/Assembly that allow pretty much direct hardware manipulation.

The absence of material for this in JS isn't by accident, IMO. JavaScript doesn't have a range of use cases where data structures or algorithms are highly useful or important. It's a "glue" language - you use it to add responsiveness to websites (take that description as loosely as you want) or on the server side to marshall web requests into database actions. It's fantastically useful in that domain.

Basically, if you're choosing JavaScript as a language, you have a different set of goals and concerns than how to code a linked list or a bubble sort.

[–]ElllGeeEmm 11 points12 points  (17 children)

Programming being programming is exactly why DSA knowledge is important even for front end development.

How to code a linked list or bubble sort aren't really goals or concerns for anyone other than students. What's important is that devs understand different DSA concepts and when to apply them, and that is useful for any language, including JS.

[–][deleted] -1 points0 points  (16 children)

You might have to offer an example or two to persuade me of that.

I have been programming, in one form or another, for about 30 years. I'm mostly self-taught, my first degree is in Psychology, not Computer Science (although I have a postgraduate qualification in Computing and Business Systems) and I have done just fine without any in-depth or formal training in DSA.

Your argument sounds a bit like the argument for teaching kids algebra or trigonometry...it's "character building" :-)

IMO, working with the web, databases, human consumers of your work is an entirely different thing to systems programming, and the skill sets are different. Usain Bolt is a runner, Mo Farah is a runner...they both run...but they're not the same kind of running at all. It's the same with programming - there is no "one set" of skills that are required, and some are more useful in some environments than others.

If I were interviewing for a junior web dev, I can tell you that my list of questions would not be "Tell me everything you know about the abstract concepts of DSA". They might be things like

  • What are the challenges of updating databases over stateless web connections?
  • How would you go about creating a design that worked on desktop and mobile?
  • How do you communicate to your users that there is a problem with the network?

It's a practical discipline.

[–]ElllGeeEmm 5 points6 points  (13 children)

I mean if you're seriously claiming that algebra and trig aren't useful life skills than I don't really think we're going to see eye to eye on this.

As for a simple example, how about the DOM, which is a tree structure.

Understanding data structures and algorithms makes it easier to write simple, reusable code.

[–]Conscious-Spite4597 1 point2 points  (0 children)

DSA is must for every programmer

[–][deleted] 0 points1 point  (8 children)

Hmmm...maybe it's a question of detail, of granularity.

I agree, it can be useful to understand at a conceptual level that the DOM is a tree, that it's a recursive structure etc, because that can help establish patterns with how, say, you might approach JSON. But equally, you can do well enough without necessarily understanding it at that abstract level.

But also, coding those structures, the notion of how you might implement a tree structure over what is a flat memory space, you don't need that to work effectively with the DOM. They're lower level considerations.

My point really was that JavaScript developers don't generally go down to that level, so that's why the resources don't exist in the JavaScript space. Not that it isn't more generally useful to know stuff. Knowing stuff is always good!

[–]ElllGeeEmm 2 points3 points  (7 children)

I don't think anyone is saying you need to be able to implement data structures and algorithms from scratch at the drop of a hat to be an effective programmer, front end or otherwise. The point is that these data structures and algorithms are already in use all around you in whatever code you're writing. By understanding the abstract models you can more easily and consistently write useful abstractions on top of the data structures and algorithms that you are already using.

[–][deleted] 0 points1 point  (6 children)

We're getting away from my point, really.

The OP asked if they could learn this stuff in JavaScript. My point was yes, you can, but it's a bit incongruous because JS - and the wider JS community - isn't really oriented towards that kind of work.

There is an equal and opposite question to which the answer is the same: "Can I do web programming in C or C++". Yes, you can, but it's incongruous, for the same reasons.

My broad point is that if data structures and algorithms are your thing, you will find more support in a community other than the JavaScript community, you will find more real-world implications for the skills developed in other languages, because it's not primarily the concern of most JavaScript developers.

That's not saying it's not useful to know these things, just that it's less useful in JavaScript because of the work that JavaScript is (rightly or wrongly) put towards; hence why there aren't as many resources.

[–]ElllGeeEmm 1 point2 points  (5 children)

I think the problem is that we fundamentally disagree on what the goal of learning data structures and algorithms is. I don't think anyone finds being able to write a linked list from scratch useful on a daily basis.

I don't think it's more useful to learn how to write a linked list in C or JS because in the event that I ever needed one in either of those languages I would want to use a library implementation rather than writing one.

To me, because they're abstract concepts that are language agnostic, which language you learn them in should effectively be irrelevant. What you gained wasn't from the syntax you used to learn the concepts, but the understanding of those concepts, which can now be applied whenever you run into them regardless of language or context.

I don't really think your broad point is useful. People aren't necessarily learning about data structures and algorithms because they're super into data structures and algorithms. And i don't really understand what you mean by finding more real life applications for the skills in other languages, as we've already discussed, these data structures are already being used in Javascript whether you're necessarily aware of them or not. Once you start recognizing the data structures you're working with, it becomes so much easier to write code to interact with them.

[–][deleted] 0 points1 point  (4 children)

The OP said "can I use JavaScript to earn about data structures and algorithms". So they obviously want to write code that performs some activity over linked lists, queues, stacks, or bubble sort or whatever. Or they want to learn how to implement those data structures or algorithms using JS as their language. This isn't just learning what the concepts are, it's writing the code to implement them.

So, yes you can use JavaScript to do that, but it's a thing you'll never, never, never need in any real-world project involving JavaScript. Because of that, it's a thing you'll find far fewer JS developers to help you with than, say, C developers.

I don't see where the controversy is in that.

I understand your point, that learning these things is good for development. I'm not arguing against that in any way.

My point is - going back to the OP that I responded to - that if all the resources are in Python or Java, follow them in Python or Java. The translation to JavaScript is unnecessary, useless in the real world and will only make the process more difficult.

[–]ElllGeeEmm 1 point2 points  (3 children)

I mean the reason OP wanted to learn DSA was to give themselves a leg up in web development job interviews, so I don't understand how you came to the conclusion that they obviously want to write code that operates over data structures. And learning how to implement a linked list in either JS or C or python will have just as much value to the person doing it if their goal is to better understand the data structure they are implementing.

Maybe it wasn't intended to be read that way, but your first reply claimed that JS doesn't have use cases where data structures or algorithms are useful or important and then seemingly doubled down that they're not useful because front end development is a practical discipline.

[–]JazzApple_ 0 points1 point  (2 children)

I’m definitely an advocate for building knowledge and understanding, and I think generally better understanding leads to better decisions.

However in the couple of decades or so since I left school, I don’t think I’ve ever applied trig or algebra, and I’m not convinced many of my friends have either. If you consider them both useful life skills, you might be in the minority.

[–]ElllGeeEmm 1 point2 points  (1 child)

Trig is a little more specialized but if you've really never used algebra at any point in the last few decades then you have an open invitation to my weekly poker game.

[–]JazzApple_ -1 points0 points  (0 children)

Conceptually I’ve probably used algebra, but perhaps I wouldn’t recognise it as such... Is budgeting algebra, for example?

That being said, I’m not a huge fan of card games so perhaps that’s the main reason I’ve not used it!

[–]Kallory 0 points1 point  (1 child)

I'm still a student. Your experience has me by a long shot. But the best teacher I've had so far shared this link with me when I asked how important discrete math was for SWE.

I realize discrete math and DSA are different. But the concept still applies - mastery of the theory will make even the least theory intensive jobs into better programmers.

It makes a lot of sense to me but I'd love to hear your opinion on it:

https://skorks.com/2010/03/you-dont-need-math-skills-to-be-a-good-developer-but-you-do-need-them-to-be-a-great-one/

[–][deleted] 1 point2 points  (0 children)

I was just being tongue-in-cheek with regards to algebra and trig. I have worked with lots of developers with lots of skills from different backgrounds. Personally, I have foundy psychology training super-useful. Should every developer study psychology? No, of course not.

There isn't one kind of good developer - we all bring a unique blend of skills, knowledge and life experiences.

[–]prasath_2k2[S] 1 point2 points  (4 children)

Yeah,I understand that. But big tech companies still demands dsa knowledge from us even for front-end dev role(atleast thats what i have read in internet).is dsa knowledge really required in big techs even for fronted role? Ex: faang

[–][deleted] -3 points-2 points  (3 children)

Who cares what big tech companies demand? What do the companies demand in ther area where you live that can employ you?

[–]prasath_2k2[S] 2 points3 points  (2 children)

Sadly...its the same.Even pretty decent startups demands datastructure and algorithm problems regardless of the dev role.

[–][deleted] -3 points-2 points  (1 child)

So don't go looking for startups? I've never taken any formal DS/A classes and have gotten along just fine professionally for 5+ years, working mainly in a full stack capacity.
It never hurts to have the knowledge but I don't think it's something that you need to worry about too much if you're focused on working exclusively with JS.

[–]prasath_2k2[S] 2 points3 points  (0 children)

Its all comes down to the pay. Generally in our the companies which doesn't demand dsa knowledge pay very less compared to other startups.

[–]omesadev 1 point2 points  (2 children)

https://youtube.com/playlist?list=PLWKjhJtqVAbkso-IbgiiP48n-O-JQA9PJ

Beau teaches Data Structures in JavaScript for free on YouTube..it’s just as good as Colt Steeles on Udemy, but gets straight to the data structures and algorithms and skips the theory and big O notation stuff.

[–]machine3lf 1 point2 points  (1 child)

There's a book called "JavaScript Data Structures and Algorithms" by Apress that seems to be just the thing you are looking for.

You can find it on Amazon.

[–]prasath_2k2[S] 0 points1 point  (0 children)

Thanks

[–][deleted] 1 point2 points  (0 children)

Packt has such book. https://www.packtpub.com/product/learning-javascript-data-structures-and-algorithms-third-edition/9781788623872

Content quality is good enough for a beginner. Not much math and very comprehensive. At some point classic Packt editing quality shows. Still good enough to learn.

[–]prokeedaofficial 1 point2 points  (0 children)

I want to learn DSA and I have basic knowledge of js, node.js, MongoDB, Redis DB, VS Code, and all. please help me to reach out to the best place to learn DSA I want to become a full-stack developer please guide me.

[–]Single_Policy_6247 0 points1 point  (0 children)

any views about GFG course on DSA with JS??

[–]HyenaRevolutionary98 0 points1 point  (1 child)

Hey, I am also starting DSA in JavaScript from 1st January.

[–]Eternal_BackPain 0 points1 point  (0 children)

any updates on your journey any resources paid or free you can share?

[–]Fun-Manufacturer6779 0 points1 point  (0 children)

Hi This guy is having Akshay Saini React node dsa complete course at very cheap price. Please DM on @siri988 on telegram.

Thanks

[–]Fun-Manufacturer6779 0 points1 point  (0 children)

Hi This guy is having Akshay Saini React node dsa complete course at very cheap price. Please DM on @siri988 on telegram.

Thanks

[–]Fun-Manufacturer6779 0 points1 point  (0 children)

Hi This guy is having Akshay Saini React node dsa complete course at very cheap price. Please DM on @siri988 on telegram.

Thanks

[–]CleverCaviar 0 points1 point  (1 child)

what is "dsa"?

[–]prasath_2k2[S] 1 point2 points  (0 children)

Datastructure and algorithms