Aman Shekhar
5 min readDec 8, 2019

--

Master your <Coding> Skills…

In this blog, rather than explaining coding concepts, I’ll share the tips and resources I’ve found helpful in improving my coding skills. I’ll cover coding sites, video tutorials, and books that have been instrumental in my journey.

Lets talk about Coding Sites:

There are numerous platforms like hackerearth, hacerrank, topcoder, leetcode, codechef and more. If you find yourself at an average level in coding and are considering platforms like HackerEarth or HackerRank, it’s important to consider the potential for frustration if you encounter difficulties solving problems. In such cases, it might be beneficial to explore alternative resources rather than diving straight into these platforms. One such helpful site for improving coding skills from scratch is CodingBat. It offers a structured approach with categorised questions, providing a more manageable starting point for those beginning their coding journey.

  1. CodingBat: This site is indeed very useful for beginners starting from scratch. It offers questions categorised by difficulty level, allowing learners to progress gradually. While the initial questions may seem easy, the complexity increases as you move through each category, providing a solid learning curve. However, it’s worth noting that the site has one limitation: it only supports solving problems in two languages, Java and Python. Despite this drawback, I’ve personally found it beneficial and have even solved all the problems myself. If you’re interested, you can find my solutions posted on my GitHub repository. Here’s the link.
  2. LeetCode: I completely agree that this site is an excellent resource for advancing your coding skills from a moderate to an expert level. With over 1000 problems, many of which have been asked in interviews at major companies like Google and Amazon, it provides a comprehensive platform for practice and skill development. While some problems and their solutions are locked behind a premium account, I believe that for most learners, a premium account is not necessary initially. It’s essential to build confidence and proficiency with the available free content first. Later, if you feel the need for more targeted practice, you can consider upgrading to a premium account, which offers access to company-specific questions.
  3. HackerRank: This site is the third platform I recommend, following LeetCode. It offers valuable features such as the ability to select difficulty levels and track your progress. This allows you to tailor your practice sessions to your skill level and monitor your improvement over time.
  4. HackerEarth: By this stage, you’ll likely have gained considerable confidence in your coding abilities. I’ve found this site to be particularly useful for two reasons. Firstly, it hosts numerous ongoing competitions that provide excellent opportunities for practical application of your skills. Additionally, you can also view upcoming competitions, allowing you to plan your participation accordingly. I highly recommend exploring these coding competitions as they offer valuable experience and insights.
  5. GeeksForGeeks: Last but certainly not least, there’s GeeksForGeeks, an all-time favorite among coding enthusiasts. It serves as an encyclopedia for a wide range of coding problems, offering comprehensive coverage and detailed explanations. Whether you’re a beginner or an experienced coder, GeeksForGeeks is an invaluable resource for honing your skills and expanding your knowledge base.

Moving on to Video Tutorials: Youtube on the rescue.

This tutorial is, by far, one of the best I’ve come across. The instructor excels in explaining LeetCode problems and their solutions with remarkable clarity. I highly recommend going through this video for anyone looking to enhance their problem-solving skills on LeetCode.

Introduction to Algorithm: While there are countless video tutorials available on data structures and algorithms, I chose to start from the very basics. This foundational approach has been instrumental in building a strong understanding of core concepts, providing a solid framework for more advanced topics. By mastering the fundamentals first, I’ve been able to approach more complex algorithms with confidence and clarity. One of my favorite resources is the playlist by Abdul Bari. Comprising a total of 84 videos, this playlist delves deep into each algorithm, meticulously explaining them while keeping time and space complexity in mind. Abdul Bari’s clear explanations and thorough coverage make it an invaluable resource for understanding algorithms comprehensively.

Algorithms and Data Structures: This playlist is from Ravindrababu Ravula, renowned for his Gate Lectures. It offers a variety of video tutorials covering a wide range of topics. Ravindrababu Ravula’s expertise shines through in his detailed explanations and comprehensive coverage. If you’re looking for high-quality tutorials, I highly recommend exploring this playlist.

1. Algorithms and Data Structures
2. Computer Networks.
3. Machine Learning Course.
4. Theory of Computation or Automata Theory.
5. Compiler Design.
6. Operating Systems, and a lot more

Technical Interview Study Guide: This individual has several playlists that include solutions for LeetCode problems. In these videos, he solves and explains the problems in a clear and detailed manner. I highly recommend checking out his other playlists as well for valuable insights and learning opportunities.

MIT 6.851 Advanced Data Structures, Spring 2012: Now, here’s the bonus part: access to tutorials from MIT Lectures. While these lectures may proceed at a slower pace, they are widely regarded as some of the best available. However, I advise against jumping right into these lectures. It’s essential to build a strong foundation first before delving into more advanced topics.

System Design:
This is a crucial topic that often arises in interviews at major companies such as Amazon and Uber.

System Designing of different companies: This YouTube playlist showcases examples of system designs from various companies such as CrickInfo, Twitter, Instagram, and more.

I strongly recommend exploring the concept of System Designing for everyone interested in advancing their skills. While there are numerous other tutorials available, I’m currently prioritising completing the playlists mentioned above.

Last but not the least, The Books.

I’ve chosen to focus on two books for my learning journey: “Introduction to Algorithm” by Cormen and “Cracking the Coding Interview” by Gayle Laakmann McDowell. This systematic approach has been instrumental in improving my coding and technical skills. However, it’s important to recognise that everyone has their own unique learning methods. If you have any comments or suggestions to add to the list, please feel free to share.

Here are a few ways you can reach out to me:

--

--

Aman Shekhar

Mobile App Developer by profession, a Chess Player by heart, and an Aspiring Author by ambition.