Programming and web site designing have been my hobbies right from high school. Taking up Computer Science and Engineering at the undergraduate level was therefore but a natural choice. Although I did not have to spend any time deciding which undergraduate program to follow, I was not as certain of the university to join. I enrolled at the Birla Institute of Technology & Science, Pilani – Dubai Campus. The Dubai Campus, being relatively new at the time, had not acquired the fully-fledged campus that it boasts of now and their first students, like me, largely comprised of those born and brought up in Dubai. Not content with the environment, which in many ways resembled the one at school, I decided to pursue the program elsewhere and joined National Institute of Technology, Calicut, India the next year.
My undergraduate study at NIT-Calicut has enabled me to appreciate the various areas of Computer Science and imbibe their underlying fundamentals. The courses that I have found particularly intriguing are Computer Networks, Operating Systems, Probability and Statistics (Mathematics III) and Computer Architecture. Apart from these, I have always enjoyed the programming lab courses of the curriculum.
My interest in the field of probability and its applications in computer science prompted me to take up Probabilistic Cache Replacement Algorithms as my mini project during the sixth semester under Dr. Priya Chandran. The simple yet powerful principle of randomization and its far-reaching applications appealed to me. My mini project entailed a study of existing randomized cache replacement algorithms, coding one and simulation of its running. Given the relevance of caching algorithms today in reducing escalating network bandwidth usage and congestion by buffering data from the Internet, I would like to work on web caching algorithms in future with a view to utilizing the Internet more effectively.
The Computer Networks course in the sixth semester sparked my interest in the field of networking. A novice in the field, I sought to learn more about the subject through extensive reading. The Internetworking Technologies Handbook by Cisco Press proved to be an invaluable reference for understanding the essentials of various technologies in use today and familiarizing myself with basic network terminology. The networks lab during the same semester served to sustain my interest and with the aid of network simulation tools such as ns-2 and nam, I was able to obtain a better picture by visualizing the protocols, routing algorithms and queueing schemes in action. I wish to know more about how to build high-fidelity simulators.
As part of the same course, I also experimented with client-server socket programming where an interesting lab assignment was the development of a single-server multiple-client chat system. The assignment, albeit not a complicated one, helped me recognise the finer aspects involved in the design of communication protocols. The first issue that arose was security: as per my simple implementation, chat messages could be intercepted by an eavesdropper, tampered with or forged. Another question that came to mind was scalability: if the chat system were extended to many servers instead of just one, how would I ensure delivery of messages in the same order...