Introduction of real algorithms and real data structures into the curriculum

There’s a curriculum module called “Javascript Algorithms and Data Structures”, but it’s a bit misleading since there’s no emphasis on the use of classic data structures such as Stacks, Queues and/or Binary Search Trees to name a few, nor on the use of well-known sort and string algorithms. Raw and/or naive approaches to problem solving is fine when starting out, but in the long run any solid programmer/developer should approach problem solving in terms of well-known, studied and tested data structures and algorithms.
Any (and every) computer science / programming curriculum covers at least these basic data structures and algoritms. It should be good to have them in FCC, as I think, it would give a more serious and solid curriculae build up.
Perhaps adding these in a “Advanced DS and Algs” module…?

They are in the FCC curriculum, in the Coding interview prep section. https://www.freecodecamp.org/learn/coding-interview-prep/data-structures/

The point of the section you mention (and this is just the opinion of a user and humble student, not someone in any position of authority) is to get new coders familiar with the idea behind algorithms, and the basic (core) javascript data structures: Arrays and Objects. Not that stacks, queues and btrees are in any way irrelevant, but hardly useful for someone who hasn’t yet tackled arrays/objects.

When the basics are sound, and the budding coder is ready for further challenges beyond the core tracks, that’s when the Coding Interview Prep questions come in REALLY handy.

2 Likes

In the case of that course, “data structures” really just means “data types built in to javascript”, which get used to create ad-hoc collections and structs. It’s foundational knowledge for building other data structures on, such as Sets, Stacks, and Queues.

Personally, I would love to see a true CS curriculum on FCC, not just programming instruction. I’m 80% certain Javascript isn’t the language to teach it in though.

Sorry for the delay, had login issues. They’re not in the FCC curriculum. The curriculum covers 6 modules, and “Coding Interview Prep” is not one of them, you can’t get a certification for that module.
Array and Objects are indeed data structures, but not the data structures you will learn in computer science or programming course. Saying that an Object is a data structure is like saying we live in the universe, it’s true, but misses the point by a wide margin. The same goes for an Array, a Binary Search Tree when is complete, has an easy and efficient representation using an array, will you say a BST is an Array? Of course not.

Sorry for the delay, had login issues.
Certainly, JavaScript seems a bit off at first to teach these raw CS concepts. But, thinking again, if we go for more a more strongly and explicit typed language like C/C++, C# or Java, then for a beginner, all of the typedness could be hard to digest at first, it would be like noise. With JavaScript, he/she could focus more on the concept of the DS or Alg. However, an alternative could be Python.

I agree that that JS’s data types aren’t the same sort of data structures, which is why I would call it a programming course like the others, not a CS course. I’m not a fan of any “practical” language for teaching CS: I agree Python would be slightly better choice in many respects, JS could be made to work too, I suppose. Still, I’d prefer a mythical language with a rich type system and comprehensible error messages, BUT…

Arguments over the specifics like choice of languages can be bandied about til the cows come home. What it boils down to is that someone does have to write the curriculum, and a CS course would without a doubt be the most challenging one to write.

1 Like

I don’t dispute that there are very good reasons to consider more advanced data structures, simply that the lesson you’re pointing to is very introductory.

My suggestion to you might be, have you considered asking to join the curriculum crew and writing an advanced data structures and algorithms course? Whether based in Javascript, or Python, or Ruby, or simply algorithms and pseudocode, it might be a very worthwhile endeavour.

Everybody talks about the weather, sounds to me like you might have both the skills and the desire to do something about it.

I too prefer a mythical language. In fact that’s my backround, C/C++/C#. But, considering the fact that people in fCC exclusively work with JS, then maybe something JS-like could be the right choice in order to lower the learning curve. Perhaps a pseudo-code language with much simpler semantics than JS (no let, no const, only var with matched scope visibility, and fixing the unintuitive shift and unshift, and several other minor changes…)
I would be most pleased to write down the curriculum for peer reviewing by the community, any ideas who I need to contact?

Of course the lesson I’m pointing to is very introductory, I thought that was the point in fCC: to have 2-minute long lessons that build on each past one. Besides, it would be an “Introduction to Agorithms and Data Structures”, which would be followed by “Intermediate…”, “Advanced…” and (perhaps) “Expert…”, in those levels you can throw in the rest: Ukkonen’s, Graph search, Skiplist, Brodal lists, and many many other concepts out there…
I’m definetely not a person that just sits and talks (about the weather or anything else :smile:), I like to get involved, and in this particular case I’d love to get involved head on, hands on. Do you know who do I need to contact for that?

I’d like to add that in many of the coding interview prep (specially in the Project Euler section) you need to know your algs and DSs because the point is to tame computational complexity.

Hey @jsilvao, fcc is an open source project - you can fork fcc on github, add module locally and then do a pull request. Submitting github issue that explains the reason for your contribution would definitely help with approval of your PR.

1 Like

Will do @snigo, thank you.

1 Like

I’d love to be part of curriculum design, and while I don’t exactly have a hectic schedule, I’ve been recovering from a year of “life happening” and just haven’t had the spare attention that such an undertaking would deserve. So for now I throw out opinions from the peanut gallery, but don’t want to otherwise put myself in anyone else’s way.

I do have a web-based teaching project percolating in my head lately (on teaching HTML5, not computer science), one I hope I soon get the spare mental cycles to start working on. Basically it’s a combination of “minimalist” and “continuous”, hard to otherwise describe. I imagine one could possibly use the same approach for teaching CS too.

Naturally I’ll contribute whatever part of it I can to FCC, so I can be a bit less “all hat, no cattle” :slight_smile:

1 Like

I look at the JavaScript Algorithms and Data structures. The basic Data Structure, Algorithms and Intermediate Alogorthims seems more coding interview questions. When I look at Coding Interview prep section. The Algorithms and Data structures has the computer science topics. It seems both sections are organized reverse.

The Coding Interview Prep section has some of these CS topics, but still lack a lot. Plus, it only provides a shallow treatment. I’ve sucessfully set up fCC locally for developing and contributing. I’m currently mid-way on an “Introduction to Algorithms and Data Structures” proposal for the curriculum. Let’s see how it’s received. Cheers!

Will do, thanks for the info!