One of the most prominent question raised by today’s Engineering students is: Why should I learn several papers of Math when I’m not even going to use it in my future? (PS: I’m an Engineering Student too!)
Recent conversation with my Professor Dr. RV Nataraj inspired me to write this blog post. The two hours which I spent talking with him was one of my most productive hours ever. He is the head of the Software Development Cell(SDC) at Bannari Amman Institute of Technology. SDC has developed a ERP Application from scratch called Camps, it’s one of the most amazing piece of software which I have ever seen. I had the opportunity to do a case study on the Camps application and read the core parts of its source code. It’s used literally everywhere inside my college campus. He was working on optimization the queries which was used in the application because on analysing the queries performances, they found a report generation query took 17 minutes and few seconds to completely execute the query in its worst case. The database contains several tables with tens of millions of records. One query used in the application was more than 3 A3pages in length, with several joins and group concats. After careful analysis of the queries structure and optimization techniques he brought down the worst case execution time of the query to 8 seconds. That’s a drastic difference, I was amazed by the results. I wanted to learn how he accomplished that, so I along with my friend(Alumni) went to meet him, and then we had the amazing conversation.
He had the hard copy of the query which he optimized, both the old and the new version. The query was more than 3 pages in length, comprising of dozens of joins and concats. I was wondering how could one possibly type this big query without getting confused! Then he said that they don’t usually write the Query, They have created a program in Java, which generates this query for them, they have created their own framework to accomplish that. A Program creates queries, the queries is then executed and the corresponding view is generated! This is not it, they have added another layer to this stack, a program which creates a program which in-turn creates a query. This is just an abstract overview of the system which they have built. Coming to the optimization part, they have optimized the query in such a way that they have significantly reduced joins and effectively used Group concats, the resulting Query was one and a half page long, which is nearly half the size of previous query and more than hundred times faster. That’s amazing transformation! I asked how much time did it take to device the program to come up with such solution? With proper understanding of the schema and the problem, he built it in one night. Me and my friend were awestruck with awesomeness! He could do this all within one night?
Then he started explaining, It all begins with the understanding of the problem in hand. Unless you know what problem you have to solve, even if you spend 6 months trying to solve it, there will be no progress. When you clearly understand the problem and the Database schema, it becomes very easy to approach. This doesn’t apply for database alone, it can applied in any other domains too. You should have the basic understanding of what you are learning. Break it down until you know the bits and pieces of it. Today’s student generation are mostly inclined towards the abstraction layer, they do not know the basic understanding of the system underneath the abstraction layer. Whenever you learn a subject or a concept you should have a deep understanding of what it is, how does it perform, how is it built, what does it use and so on. Learn the core, you can build on that base.
Do not learn various technologies instead, pick one topic, go deep, boil it down into fundamental parts and try to understand what it is. When you do it, you will be have greater understanding of the technology than most others. It’s not about how many varieties you know, it’s about how well you know.
Don’t be a Jack of all trades and a Master of none
At the base everything is Math. Eleventh and Twelfth grade math are the basics to every concepts of computer science starting from Google’s page rank algorithm to today’s popular neural networks.
People who do not know the fundamentals and core of the subject think Neural Network is hard concept, its a great new introduction to today’s technologies. But the truth is all the technologies that are available today were already introduced during the nineties and eighties. Some say Neural network is similar to human brains neurons, it resembles axon, body etc. but at the base it is nothing but Analytical Geometry. Then just showed us the google sites which he created for Data Mining laboratory academic works. He broke down every hard concepts and explained them as simple components and math equations. He has an amazing article in his Google-Sites which explains from scratch on how the page rank algorithm works, from where it got the inspiration(Markov Theory) from and so on.
He then asked us how good are we in fundamentals? We said we were pretty good. What is the meaning of Differentiation? He said not to say any formulas. I couldn’t find a satisfying answer, my friend came up with a somewhat correct description. He immediately drew a image like the following and asked to differentiate it. He asked what will happen if we differentiate it, represent the differentiation of this diagram as another diagram.
We tried several different diagrams, we drew a line passing along it’s course, and several other diagrams. But none where correct, we have up and asked him what’s the answer?
He took the pen, drew this diagram on the paper, and said the rate of change. The diagram at the start doesn’t change much, but as it approaches the origin, the rate of change increases drastically, after getting past the origin the rate decreases and gradually becomes flat where no changes takes place.
The conversation with him has changed my complete perception on learning, he just thought me an interesting way to learn. Getting to the basics is the key, from there we can build on anything else. I’m very much excited to try this! Boiling it down to fundamentals and mastering over the subject!