Kartik Kannapur

A Gentle Introduction to Elasticsearch

What is Indexing and why do we need it?

Data is stored on disk as blocks of data. These blocks are accessed in their entirety, making them atomic reads and writes. The structure of these blocks of data is similar to that of a linked list - that contains a block of data and a pointer to the next data block. To find a piece of information, we would have to linearly search through the data which would be expensive, given that it is unsorted.

Indexing is the process of tagging or associating information with a document or a file, so that the process of search and retrieval could be faster. Therefore, creating an index on the data would significantly speed up the process of search and retrieval.

Competitive Programming

Wikipedia defines Competitive Programming as a ‘Mind Sport’.

Competitive programming revolves around the fundamental idea of hundreds of programmers trying to solve a set of problems, in a given amount of time. The problems themselves involve solving sets of mathematical and algorithmic questions in any programming language. Although the major criteria for judging is the correctness of the answer, some competitions also take into account the performance and elegance of the code written. The duration of these competitions can range from a couple of hours to weeks, sometimes even months and programmers who crack the challenging set of questions, are rewarded with(in order of importance)

Bragging rights

Goodies/Swags/Monetary benefits and in some cases job offers as well My journey with competitive programming began only a few months back and by no means do I consider myself a virtuoso, but here are a couple of reasons why I believe you must get started with competitive programming:

Challenge Yourself

In your day job or at your university, you could listen to your favorite song on Spotify and think about the solution to a problem at your own pace and code it line by line. No sweat. But, in a competitive programming scenario, you are pushing yourself - not only are your trying to come up with an algorithm to solve the question and code it in your language of choice, but you are also trying to create the most performance oriented solution, and all this with the timer counting down.

Knowledge

More often than not in a competitive programming competition, you realize that there could be a better way to solve the problem - an easier, more elegant solution. This helps you pick up new concepts and put them into practice so that you are constantly learning.

List of Competitive Programming Websites:

I started with the challenge - “Intro to Statistics” on HackerRank, where I completed the challenge in the top 15% and then moved on to “Simply SQL”, where I ended up in the top 25%. I have attached a link to the Jupyter Notebooks below: