Saturday, April 24, 2010

Beauty in Computer Science

4 years back when I was chosing which IIT to go to, which department to choose, I had no idea what computer science is.

Primary reasons to join Computer Science:
1) I like Maths. CS is more mathematical.
2) Hacking
3) Gaming
4) Scope of Research :P
5) How Windows work? How can I make Microsoft Excel?
Looking back. All the above reasons were "wrong". Yes CS is great. Its because of the great professors and some really really smart people it has got.

Computers are amazing. I used to think how does it store information? Isn't it amazing that memory is nothing but a flip-flop. I used to ask myself what is windows? What is it exactly? Now I get it. How beautiful is the idea that windows is just allowing the other processes to happen smoothly. Its just helping our computer. How can someone learn so many things in 4 years? If you don't understand one course, you will not understand computers and so failure!! But everything in computer science is abstraction. This is a great idea. I see something more than computer science in this idea. If we see one problem at a time and keep the other problems/events as a blackbox as we do in a computer science course, wouldn't life be great?

One problem that I have been obsessed with since last 4 years is finding patterns. I try to see patterns in all numbers. I try to put things in a function so that it can be represented in a crisp and artistic way. When I was first told in my first year that its not done in case of prime numbers, I spent nights and days writing prime numbers and calculating each next prime by hand trying to see some patterns. I still believe infinite information can be stored in finite space. The probability courses that I have done this semester make me happy when I see that infinite information made approximate can be stored in a finite space.

Other problems that I have been interested are primality testing and factorization. The beauty of the problem is that even 4 years back, I could explain the problem in 5 minutes to my sister 4 years younger to me (So, 13 years old then). So simple is the problem description that I feel somehow its a challenge by the god to mankind. Its perhaps the simplest unsolved problem. People have been trying to solve it since 1000s of years. And so the thrill and excitement when you attempt to solve these problems.

The idea of Red-Black Trees, Circular Stacks, Strassen's Algorithm, FFT, Union-Find Data Structure, Chudnovsky and Chudnovsky Algorithm, has brought and will bring smiles to many faces. It feels awesome to be in the time when we have developed beautiful solutions to difficult problems.

Of course, my topic is cryptography (Tujhme Rab Dikhta Hai Yaara main kya karoon?). The reason is that it merges so well with number theory, calculus, probability and combinatorics that learning cryptography would imply learning all the above topics. I am lucky to have been introduced to this topic in my first year itself and due to constant encouragement by Prof. Kapil Paranjape (IMSc Chennai), Prof. Ajit Diwan (IITB), Prof. Bernard Menezes (IITB), Prof. Angela Yingjun Zhang (CUHK), Prof. Bruno Salvy (INRIA Rocq), Prof. Frederic Chyzak (INRIA Rocq), my interest in the topic has always grown.

Thank You Computer Science. Thank You Mathematics. I had a great time.

P.S. I hate OS, POPL, Databases, Architecture, Engineering Drawing, Mechanical Workshop, Chemistry :P