Most Computer Science students and working professionals tend to skip learning DSA, especially in India, because they find it quite complicated and also because they do not understand the benefits of it fully. What they fail to understand is that DSA has profound uses in various walks of life and not just in making an application more efficient.
Popular programming competitions like IOI (International Olympiad in Informatics) and ICPC (International Collegiate Programming Contest) have not had many winners from India due to various reasons. For instance, it is common knowledge that Indian students are not exposed to core programming skills or the concepts of DSA during their high schools. They are forced to prepare for competitive exams instead. This means when these students represent India in IOI or ICPC they are put against participants from other countries who have nearly 4-5 years more programming and DSA experience than their Indian counterparts.
Go for Gold is an initiative by CodeChef, which is a not-for-profit organization helping Indian programmers to become world-class in the future. This initiative is an effort in reversing the dubious record that India has in such global competitions. Through this initiative CodeChef supports Indian programmers by providing scholarships, incentives, promotions, and training. The efforts of CodeChef was aptly rewarded in 2012 when two Indian teams with the help of training from CodeChef broke into the top 20 in ICPC coding contest finals. This was a feat that no Indian had achieved previously.
However, programmers need to realize the importance of DSA as early as possible in their career to be not just a better programmer but to contribute significantly to your company by solving their problems.
Reasons to learn DSA
Many people consider DSA as just a mere subject in computer science. This is where they get it wrong. DSA is much more than that. It teaches you a way to be a better programmer and a way to think better. It is a skill that will help you all through your life and is not a skill to learn just to pass a subject. Let us dive deeper into various reasons why one should learn DSA –
1. Role of DSA in Solving Real-World Problems
You will be surprised to know that DSA has quite an important role to play even in solving real-world problems. Real-world problems that take months can be solved in minutes using the knowledge of DSA.
Let us say you want to find a set of people in the same age group within a large collection of data. Assuming this data is sorted, you can solve this issue easily with the binary search algorithm which works on the principle of DSA. The binary search algorithm is considered a logarithmically scalable algorithm, unlike traditional methods that are just linearly scalable. This means, if the number of data points in the database is squared, the time taken to do the same task in the binary search will only be doubled.
Another real-world problem that could be solved by DSA is the Rubik cube. Most of you would have used or at least seen this colorful playing object at home. But do you know a simple object like Rubik cube has flustered even the greatest of the mathematicians? It is known that a Rubik’s cube has a whopping 43,252,003,274,489,856,000 positions. Then imagine the total number of paths to reach all these positions. Thankfully they found the solution to solve it through Djikstra’s algorithm, which is based on the concept of DSA. It helps to solve the problem in linear time, which means you can reach the solved position in the minimum number of states.
2. Role of DSA in Machine Learning
Can you imagine, a concept as advanced and futuristic as Machine Learning (ML) needs Engineers with knowledge of DSA? Apart from solving real-world problems, these engineers can design amazing products using the combination of their ML and DSA knowledge. The knowledge of DSA is the basic building block of algorithmic thinking, and logical capabilities in any field of computer science, and ML is no exception. An ML engineer spends a considerable part of his time collecting data which can lead to various complex challenges that can be solved easily using the knowledge of DSA. Let us assume you are creating an ML product that has a dataset with the address as one of its columns. Now suppose you want to retrieve a portion of this data, say the street name, then ML cannot work on the string directly. You would need the help of DSA by implementing an algorithm based on a string to retrieve the required data.
3. Role of DSA in Technical Hiring Process
The knowledge of DSA is tested significantly in the technical hiring process of many companies. This is because the problems that these companies encounter daily are quite huge and complex, and they want to hire smart people who will solve these tasks within minimal time and the least number of resources. Advanced knowledge of Data Structures and Algorithms is a clear indicator of the person’s capabilities in solving complex problems in minimal time.
Interviewers are not worried about the ultimate solution to the problem in the developer hiring process. They want to see the tools that the candidates use to reach that solution. Top companies across the world like Google and Facebook spend only 20-30% of their time in implementing the code. The rest of the time is spent on formulating the solution using algorithms to save millions of dollars spent on various resources like servers. That is the reason they are at the top of the table and also the reason why they value the knowledge of DSA so much in their interviews. The hiring managers of these top companies spend more time on programming contests and programming sites than job portals to hire the top talents because in these portals they can find techies who have suggested unique solutions to problems.
4. The core of computer science
Data Structures and Algorithms are often considered to be the root or the foundation of computer science. With advancements in the computer science field, more and more data is getting stored and processed. These huge data can slow down the processing time of the systems. This is where DSA helps by improving the processing power of the systems due to the effective utilization of the stored data. DSA also helps in tasks like data search, which plays an important role in any application. The DSA typically shifts the focus of programming from the syntax to the approach. If you notice, most of the computer science books in any curriculum will have a chapter or a course on DSA. The learners can use the concepts of DSA in any programming language of their choice and also learn how to store and manipulate the data in it to get the desired outcome.
It is quite easy to learn new programming languages while using them in your projects. However, it is not the case with DSA. If you don’t know DSA well, you will find it challenging to optimize the code and solution for a problem. The profound uses of DSA have made it imperative for all those budding programmers and students to start learning it and succeed in their computer science career. It is also important for the employees already working in DSA to upskill themselves to keep abreast of the advancements in it.