When your program runs slowly, the first thought that comes to your mind is to blame the slow machine. More often than not, the speed of a program is more determined by the data structure used and the algorithm employed to solve the problem. The creator of Linux, Linus Torvalds, echoed this when he said “I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships.”
Great algorithms are the poetry of computation and Niklaus Wirth, the designer of Pascal among several other computing languages, said it all in the title of his book “Algorithms + Data structures = Programs”.
From the days of Euclid – who designed the first algorithm for finding the greatest common divisor (GCD) of two integers, to date, algorithm research has been a very fertile area. We have all been amazed at the skill of designers of these famous algorithms – Quicksort, Binary search, Page Rank (that launched Google) and the natural language processing algorithms used by IBM’s WATSON to win at Jeopardy, America’s favorite quiz show.
And these are just a few examples of how algorithms make their presence felt, although behind the scenes.
At TCS, our CTO urges us to stay dissatisfied with status quo. In ways, this philosophy also drives me and my team to stay aware of and abreast with algorithms. Most of what we do in our Innovation Labs has some algorithmic content. Armed with a vision to establish a comprehensive research focus on algorithms, we are presently developing a video course on Algorithmic Thinking. I will talk about it here once we launch it in the next few weeks.
Like the resounding yet muted presence algorithms have in our world, communities of algorithm research contribute to several walks of life, in ways big and small; and they do so in their own quiet ways. The streaming videos you see on your smart phones, the search you perform locating your old friend on Facebook, the secure online purchase you make using your credit card and the iris identification scheme that might make passwords redundant (in future) are all made possible by complicated mathematical algorithms behind the scenes.
Conferences are one way to connect with this community of algorithm researchers. Some of the top tier symposiums/conferences in this area include ACM-SIAM Symposium on Discrete Algorithms, European Symposium on Algorithms, the annual conference on Foundations of Software Technology and Theoretical Computer Science and WALCOM – International Workshop on Algorithms and Computation.
The Indian Association for Research in Computing Science (IARCS) conducts an annual conference on Foundations of Software Technology and Theoretical Computer Science (FSTTCS). The 33rd conference will be conducted at IIT Guwahati, India, between 12th December and 14th December, 2013. The FSTTCS conference is a forum for presenting original results in foundational aspects of Computer Science and Software Technology. The scope of this conference includes algorithms and data structures, including randomized, approximations, distributed, geometric, online, streaming, fixed-parameter and graph algorithms, computational complexity, automata and formal languages and several other topics. Key note speakers include leading researchers in the field. You can find more on the FSTTCS site.
The conference promises to be interesting. I for one am looking forward to it. Meanwhile, what is your view on algorithms and how is their role changing in computational sciences?
More from the conference and on the video course later…While you wait, here is a problem (from Professor Jeff Ullman, our research advisory board member) for you to think: You have 16 million sentences with each sentence having 10 words. You need to identify all pairs of sentences that differ at exactly one word!