loading...

Algorithms for learning algorithms

rattanakchea profile image Rattanak Chea ・3 min read

Step 1: Learn the fundamental data structures and algorithms

First, pick a favorite language to focus on and stick with it. Try to learn the core concepts of data structures because they are fundamentally almost the same from one language to another.

  • Basic data structures: Array, String, Boolean, LinkedList, Stack, Queue, 2-dimensional Array, Set, Binary Trees, etc.
  • Conditional logic (If)
  • Control flow statement (for, while, do loops, etc...)
  • Sorting Algorithms: Insertion Sort, Bubble Sort, Selection Sort, Merge Sort, Quick Sort, Radix Sort. From here you will pick up different approaches Brute Force, Divide and Conquer
  • Understanding Big O Notation, runtime complexity, and space complexity help you write efficient algorithms.

Grasping these concepts are so important because they serve as the building blocks to understanding advanced concepts and solving complex problems.

Resources

Here are a few relevant resources

Top 8 Data Structures

Sorting Algorithms beginners guide

Udemy's class: JS Algorithms and Data Structures Masterclass

Step 2: Learn advanced concepts, data structures, and algorithms

You may skip Step 1 if you are already familiar with most of the concepts and start learning more advanced topics:

  • Heap, HashTable, Variations of Tree, Graph (DFS, BFS)
  • Recursions
  • Dynamic Programming
  • Backtracking (for example, solving the N-Queen problem, sudoku)
  • Bit Manipulation
  • Object-oriented programming
  • System design
  • Medium to hard coding problems on Leetcode

Resources

Free System Design Primer on Github

Python's interactive coding challenges

Udemy's Advanced algorithm in Java

Step 1+2: Practice

Practice makes perfect. While we are learning all the data structures and algorithms, it is important to do a lot of practicing in the meantime to reinforce what we learned.

  • LeetCode is a free platform to practice coding

  • Mock Interview

PRAMP is a great platform to practice mock interview. It is a two-way learning process for being both interviewer and interviewee.

  • I subscribe to Daily Coding Problem to receive daily hand-picked coding problems.

  • I subscribe to Interview Cake to receive weekly coding problems. I find their explanation is detailed and easy to understand.

Step 3: Lots of reading + writing

Reading a receptive skill from which we (inactively) learn from others' through their writing. We can gain a lot of knowledge by reading textbooks, blog articles, others' code, readme files, etc.

I occasionally write blog articles. Writing requires more time than reading as I need put some efforts into researching, formatting, spell checking, proofreading, etc. However, (I think) it forces me to use a different part of the brain and to be more articulative so that our readers could understand.

Books

  • Cracking the coding interview
  • Elements of Programming interviews

Blog

Step 4: Contribute to open-source projects

Find your favorite open-source project and make some contribution. It is a great way to learn using real-world projects. Dev has weekly open-source thread discussion.

Step 5: Take a break

Last but not least, don't forget to take a break from your connected computer and phone. Reward yourself for accomplishing a milestone you set out to do. Finally, I want to leave with a favorite quote below.

Enjoying the journey, not just the destination.

Happy learning.

Discussion

pic
Editor guide
Collapse
blessdarah profile image
Bless Darah Gah

I love this short article of yours. It is brief but can take years to completely absorb its content.

Collapse
rattanakchea profile image
Rattanak Chea Author

Thank you for reading

Collapse
aroaming profile image
Aroaming

it's very good