algorithms illustration

in Algorithms

30 Days of Algorithms in JavaScript

I recently decided to re-enter the “real world” after freelancing for three years. My very first interview was at InVision. It did not go well, to say the least. The coding test focused on common algorithms in JavaScript, and I bombed. After receiving the polite rejection email, I asked the recruiter for feedback from the hiring team so I could improve.

Her feedback was not easy to hear : My code was overly complicated and hard to follow. I was indignant at first. I realized, however, after researching the solutions, that she was correct.

Algorithms Are About Simplicity

Software development was not my first career. I was 28 years old before I ever really wrote my first line of code. My degree is in graphic design, not computer science. This is a fact that has caused me quite a bit of self-doubt over the years.

Simplicity and elegance are unpopular because they require hard work and discipline to achieve and education to be appreciated.

Edsger W. Dijkstra

I am familiar with many of the most common software design patterns but I had not spent as much time focusing on fundamental algorithms. I know them intuitively but not enough in-depth knowledge to necessarily find the simplest solution to common problems.

Follow Along on Github

My solution was to create a challenge for myself to learn a new algorithm every day for thirty days. The result is “30 Days of Algorithms” – which you can follow on my Github page. As a result of the challenge, I hope to not only have a better understanding of common algorithms, but also have a better understanding of common alternatives as well as when to use them.

The algorithms are written in JavaScript since that is the language I spend most of my time writing these days. JavaScript is also easy to understand and to employ if you want to follow along. You can also grab the code from the daily Gists I will post for each algorithm. Feel free to submit your own suggestions via the Contact Page.

Table of Contents:

  1. Euclid’s Algorithm to find Greatest Common Divisor
  2. Find Missing Number 1 … N
  3. Bubble Sort
  4. List Intersection (on Github – blog post coming)
  5. Array to Tree (on Github – blog post coming)
  6. Merge Sort (on Github – blog post coming)
  7. Quick Sort (on Github – blog post coming)
  8. Binary Search (on Github – blog post coming)

Write a Comment

Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.