Please Note: FCC algorithms are not "REAL" algorithms

Now I love FreeCodeCamp, I really do. I’m extremely passionate about the movement and believe in it with all my heart(I even support FCC financially by buying stuff from our store)… but it’s come to my attention that some people on this awesome platform think that the “algorithm scripting” challenges are real algorithms.

Let me please make it clear:

> There is a HUGE difference between what real “algorithms” are and FCC’s “algorithm scripting”

That I think we should all be aware of. Please let me make it clear in my fellow campers mind the difference…

Algorithms are things like:

  • Object Orientated Design and Programming, how to test your code
  • sorting (plus searching and binary search), divide-and-conquer, dynamic
    programming/memoization, greediness, recursion or algorithms linked to a specific data structure. Big-O notations (e.g. run time) and complex algorithms like Dijkstra and A*.
  • insertion-sort or radix-sort and the generic QuickSort/MergeSort/HeapSort
  • implementing data structures such as arrays, linked lists, stacks, queues, hash-sets, hash-maps, hash-tables, dictionary, trees and binary trees, heaps and graphs.
  • Mathematics: Some interviewers ask basic discrete math questions. This is more prevalent at Google than at other companies because counting problems, probability problems and other Discrete Math 101
    situations surround us. Spend some time before the interview refreshing your memory on (or teaching
    yourself) the essentials of elementary probability theory and combinatorics. You should be familiar with
    n-choose-k problems and their ilk.
  • Graphs algorithms like distance, search, connectivity,cycle-detection, etc. There are three basic ways to represent a graph in memory (objects and pointers,matrix, and adjacency list) — familiarize yourself with each representation and its pros and cons. You should know the basic graph traversal algorithms, breadth-first search and depth-first search. Know their computational complexity, their tradeoffs and how to implement them in real code.
  • And the plethora of recursive algorithms that can replace iterative solutions.

> This is all taken straight out of the Preparation Guide Google sent me.

So yeah. Fellow coders, campers, please understand the differences.

Here are some resources to learn about REAL algorithms.

Introduction To Algorithms, CLRS… just Google it.

And any Google search will provide an overwhelming amount of additional resources to learn.

~Happy coding :slight_smile:

6 Likes

Algorithms are defined as:

“A finite set of unambiguous instructions that, given some set of initial conditions, can be performed in a prescribed sequence to achieve a certain goal and that has a recognizable set of end conditions.”

Which makes most every function or program an algorithm. Perhaps not a shiny, wonderful, world shaking algorithm. Perhaps not an algorithm that redefines fundamentally how a problem or category of problems is solved. Perhaps not elegant or especially insightful or bolt from the blue genius … But, an algorithm all the same.

A real one even. :slight_smile:

By that definition, it also makes a recipe for blueberry muffins an algorithm, or a chemistry formula an algorithm.

7 Likes

I totally agree with you. My goal here is to simply inform my brethren here at FCC that there is
a huge difference between

Computer Science type Algorithms you’ll probably get asked about at technical interviews

and

FCC’s “algorithm scripting” challenges… Which are awesome by the way! :slight_smile:

Both a plane and a car is a vehicle, just as FCC’s algorithm’s and Computer Science / Software Engineering algorithm’s are both algorithms, but there is a huge difference between their types of the same class that I think we ought to be aware of.

There is no such thing as “real algorithms”. There isn’t even a generally valid definition of the term algorithm.

1 Like

Well god help me then…I thought I was a master programmer when I passed Missing Letters :scream:

12 Likes

that is hilarious. I am a beginner and I know that feeling… after completing some of the basic and intermediated algorithms I felt like I was on top of the world… only to realize there is a whole lot more…:joy:

4 Likes

And the translation for us real gamers is -

like playng Sionic the arctic fox, err i mean Hedgehog, and it being over at the end of Green Hill!

More is good anyway, any technical career is a constant learning experience because tech changes daily. I think most of us are well aware that FCC algo’s are a gentle introduction to a vast part of programming theory. I think we need it that way too.

1 Like

P1xt - want to thank you for your solid advice on the forums. I take part in the weekly challenges… I’m typically unable to meet the weekly deadlines but I still take part as it advances my knowledge.

3 Likes

@P1xt haha glorious eh?

I’m actually frantically searching the internet for a ninja double-hard looking Arctic fox picture right now… but there aren’t any!

A lot of the challenges are modeled after real world interview questions. FizzBuzz is classic.

Neither of these things are algorithms, though. They’re important topics for programmers, but they’re not algorithms.

I don’t disagree with the spirit of your post and I certainly don’t think it’s bad, but I think that it’s not the most productive warning for newcomers. People are already coming here with a lot of anxiety and feelings of inadequacy. For some, this gets much worse when they struggle with the algorithm challenges. They may read this and think, “Oh god, I thought I was learning the hard stuff, and this guy is saying that I haven’t even started it? Why bother…”. I know that’s not your intent, but that’s what comes across.

I’ve heard it argued before that all of programming boils down to manipulating data structures with algorithms. Algorithms can be pure, mathematical constructs, or they can be high level scripting using a robust API. Junior web developers aren’t likely to be tasked with balancing a binary tree or rigorously defining Big-O. The provided challenges are more in line with reality. I’m glad you’ve learned that there’s more to algorithm design and analysis than what’s in fCC, but it’s important to point out that these challenges aren’t easy.

3 Likes

Hi there burning-monk (I like your username btw lol :smile:)

What you say I think is true as well. “real” here is obviously being used subjectively by me because its my opinion, in the context of computer programming/coding:

real = computer science, Stanford University is among the greatest pioneers and contributors to computer science, and Stanfords’ Coursera course (which is what they teach to their students) seems to have defined “algorithms” according to the textbook:
https://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen-ebook/dp/B007CNRCAO/ref=cm_cr_arp_d_product_top?ie=UTF8

Therefore, this has become in my opinion what “real” algorithms are. That is my reasoning, and I think that is reasonable. Right?

After all, without computer science, we wouldn’t have a keyboard to type, a touch screen to touch, a cpu and ram to process software, certainly there would be no such thing as a browser, and the internet is the brainchild of computer scientists. So yeah.

What you say is perfectly described. I too, personally, know the sacrifice, pain, and immense effort to grasp coding concepts to become a “computer programmer” via full stack development. After the thousands of hours spent studying, practicing, building, and practicing… oh and by the way did I mention practicing? (lol :wink:) I emerged with the confidence that my knowledge was worth being paid for… so:

I applied for a job at Google.

The 1st interview went great, so they sent me the preparation guide for the technical phone screening (i.e. the 2nd interview)

Up to this point I thought FCC type algorithms, were algorithms, then I read what algorithms they were going to ask me to implement…

and I had never even heard of any of them (big omega, radix sort, cycle detection, hash tables/maps/sets, etc.) I was like what the heck?!? What is this stuff???

So I just don’t want that to happen to my fellow campers. That’s all. :smile: :blush:
~Happy studying everyone! :sunny: :slight_smile:

2 Likes

Personally, I would not apply for a job at Google if I didn’t consider myself a computer science expert, at least.Just like being a high school math teacher doesn’t automatically put you at the same level as top universities math professors.But I wouldn’t consider the latter a “real” thing as opposed to the former.

1 Like

I think what OP meant by “real” are the classical algorithms that CS degrees and big firms expect a developer to know. FCC algorithms are still technically algorithms, but just know that established companies expect higher theory that can be learned by digging deeper (e.g. OSS CS courses). This is why it’s important to treat FCC not as a complete CS education, which is a kind of wishful thinking. It is however, a great place to start your journey and start applying to JUNIOR developer jobs.

3 Likes

Oh. I’ve never heard of OSS CS. I’m checking them out right now. Hopefully they have stuff on Algorithms that I can comprehend because up to this point everything I’m studying is flying over my head, especially O(nlogn) stuff.

And I disagree, if you complete the full stack certification from FCC, you’re at least mid level.

So long as you could minify, test (unit, e2e, jasmine/karma), automate (via gulp/grunt), query your db from a terminal, and make your app responsive, you’re at least mid-level.

1 Like

My response to the subjective use of the word “REAL” and why I believe its’ merits are indeed valid.

Are you able to share that guide with the rest of us? It would be a really great resource to have and would help a lot of people prep for real world interviews.

LOL. You’re so naive. Applying to Google because you think you’re good at FCC algorithm challenges is like applying to play for Real Madrid just because you won a local neighborhood tournament with your Sunday football club.

1 Like

OP is pretty naive. FCC is a bootcamp for churning out WEB DEVELOPERS. Those are not the kind of engineers who are going to write UAV simulators, physics engines for games, or making animated movies using CGI. The “REAL” algorithms you mention are part of a typical university Computer Science curriculum. FCC does not teach computer science. Always remember, web development is not computer science.

1 Like

Seriously? Can you call yourself a mid-level developer when you’ve only been doing the FCC curriculum and haven’t even started a job?

2 Likes