How do you teach a computer to solve a problem on its own? That’s no big deal for Ravikiran Selvam, an avid programmer with a jaw-dropping competitive profile and a budding researcher in the field of machine learning. Machine learning is the science of getting computers to act without explicitly being told what to do and Ravikiran is very keen in specializing in this domain.
Interviewer: Thenuga (GT)
Interviewee: Ravikiran (RK)
GT: Hi! How has your time in college been so far?
RK: Hi, I'm Ravikiran, I'm currently in seventh semester at the Computer Science department. I like competitive programming. I used to attend a lot of programming competitions starting from my first semester. I've won a lot of competitions as such, both intra-collegiate and inter-collegiate. I've also participated in the ACM-ICPC (the ACP International Collegiate Programming Competition is a highly prestigious competition whose winners are high-ranking professionals in tech companies, consulting firms, financial institutions and many more) and secured a regional rank of 30, which I consider my biggest achievement yet.
GT: Where did the interest for competitive programming come from? How did you prepare for the ACM-ICPC?
RK: I actually didn't know much about programming before college. I had a friend in my first semester (who continues to be my teammate for programming events) who got me into programming. We'd always talk about it and it was really intriguing. We'd compete amongst ourselves, see who solved more problems and got a higher ranking (on online competitive settings). My friend's brother also motivated us to get into competitive programming. He would tell us about the benefits of programming and helped us become aware of such competitions. So, that's how we started practising.
For the ICPC, I would practise a lot on Code Chef (an online competitive programming environment). Code Chef has contests every month some of which are very similar to the ICPC format. If you can secure a high rank in these contests, you can be sure that you can get into the ICPC Regionals.
GT: Why do you think students aren't into competitive programming as much as they want to get internships?
RK: Honestly, I think the main reason is that students don't know about competitive programming. People almost always only start competitive programming during the third year to get internships or jobs, which is not enough because you need to prepare for the ACM-ICPC at least for a year to know what it's like. Some people are interested in programming but they simply don't know about competitive programming. I strongly feel that people should be made aware of it in the first year itself, so if some people are really interested, they will start practising for competitions.
GT: Let's first talk about your passions: deep learning and machine learning. Why this particular field?
RK: In my third year, I had a course on machine learning and that's where it all started. I was eager to find out more so I decided to do a machine learning course handled by Stanford University on Coursera. I was very interested, so I kept doing about five to six courses on deep learning. Till then, I'd only been solving problems using algorithms and data structures. But trying to make a machine solve a problem on its own was a whole new problem set and it attracted me very much.
GT: You have a website for yourself! Why did you make one?
RK: Actually, I only made the website two months ago! I made it to make online applications easier for me. So, online applications ask you either for your resume or a link. I used to provide my LinkedIn profile but it didn't cover everything I'd done and applications only asked for a single link, so I made a website where I could put in all links to my Code Chef, Code forces, ACM-ICPC profiles and more. And besides, you can't specify everything on your resume. So if someone's reviewing your resume and he or she's impressed with it, they'll surely take out time to look at your website. You can visit my profile here: https://www.sravikiran.com/index.html
GT: Did you ever lose interest in academics? If so, how did you get through it?
RK: Actually, yeah, many times! For the first two years I studied a bit diligently but in the third year, I only studied right before the exam because I did stuff I liked in my free time. I did like some of the subjects such as Machine Learning and I studied them well. I also liked PDS 1 & 2 (Programming and Data structures) and Algorithms. Apart from that, I didn't really like anything else.
I chose my area of interest as machine learning only in the third year. Before that, there were subjects like Operating Systems that interested me and I would devote time to that. But I finally decided that machine learning was my domain and that I would pursue it for my master's. As a result, I didn't really study subjects like Digital Signal Processing, The Theory of Computation and others much. Besides, because of the Amazon internship, I missed the first month of college and also the introduction classes to DSP! It was extremely harrowing but I pulled through.
GT: How did you get the internship at Amazon?
RK: I got summer internship for eight weeks at Amazon Development Center, Chennai in my second year. Amazon usually doesn't take second-year interns. Data structures and algorithms helped me to bag this internship. As to how I got it, I actually won it in a competitive programming contest at SSN College of Engineering. It was an open competition and anyone from any year could participate, so there were a lot of people! It was very challenging because only 20 teams would qualify for the second round and there must've been about 400! As for preparation, like I said, I've been coding since my first year and preparation for the ACM-ICPC made other competitions easier.
GT: What projects did you work on at Amazon?
RK: I worked in the Media Products department and specifically on the Fire TV Stick. The Fire TV Stick didn't have a notification feature. My first task was to get marketing notifications from Amazon's server and make sure the user got it. It wasn't a difficult task but it took me time to understand the code since it was written in Java. Network programming was very challenging but once I got the hang of it, I finished the task in about two weeks. This was the project I had for the first month.
For the second month, I worked on the Amazon Prime Video app on the Fire TV Stick. Movies and TV shows had ratings but they weren't user ratings; so I added a functionality that would allow users to give their rating. I also integrated IMDb ratings into the app. So those were the two projects I worked on.
GT: Did you face any insecurities during your time at Amazon? If so, how did you overcome it?
RK: I was in my second year when I got the internship! I was very nervous but also excited about what kind of projects I'd get. I didn't have any experience working on a project at that time, I didn't attend any interviews to get the internship, and even they didn't ask for my resume! So I was seriously doubting whether I was capable of doing my internship. But on the bright side, since I'd won the internship with my teammate, we both agreed to help each other since we were assigned to the same project.
GT: Did they give you a full-time offer?
RK: I actually rejected their offer in the third year because I got into the Google Summer of Code program. I didn't think I could manage the GSoC project and the internship together since both take up a considerable amount of time.
GT: Describe how and why you decided to apply for the Google Summer of Code.
RK: In my third year, I applied for the Google Summer of Code, which is a highly competitive global program for students to contribute to open source projects. Applications start around January and you can only apply if you're a college student. First, open source organizations apply to GSoC. After organizations apply and put up the list of projects available, students can choose which project to contribute to. You can only apply to three projects at a time and you will be chosen only for one. Google also offers stipend to increase interest in such projects.
You will have an advantage if you've contributed to the organization before, like fixing bugs in their projects because it's the organization that chooses not Google. If you've taken part in something similar before, like the Kharagpur Winter of Code (hosted by IIT Kharagpur) you have a better chance of getting selected. Some organizations will give you tasks. They're very careful with their selection process since it'll be a remote project. Their tasks will try to assess your understanding of the code and whether you will be capable enough to contribute to their project. You will also need to write proposals for the project you will be taking, which should detail your plan for the three months you'll be working on it. You should also propose ways in which you will implement your idea, what tools, frameworks or any other methods you will be using. If your mentor feels that your approach is good and that it's feasible, you will get selected. For me, the online courses I took helped a lot. The project I chose was purely about deep learning and since I'd already mastered the concepts from the series of courses I took on Coursera, the tasks that were given to me just tested my understanding of those concepts. I highly recommend doing online courses because the assignments given as part of the courses are extremely challenging and require a lot of research and interest. It's definitely worth the cost.
GT: So currently, you're doing an open source project for CERN. What exactly is your role? For how long will the project continue?
RK: CERN chose about 25 students from all over the world and I am one of them. CERN has multiple "modules" and I am working on the ROOT-TMVA (Toolkit for Multivariate Analysis) module. ROOT has been around for a while now, it's actually a statistical analysis tool and it's used by a lot of physicists at CERN. TMVA is just a module to integrate machine learning into the project. It's like a framework, just like how TensorFlow is used for machine learning. TMVA currently has all of the algorithms required for machine learning, but not deep learning, which is what I'm working on. I'm specifically working on deep learning optimization algorithms.
GT: Are you sitting for placements?
RK: No, I'm actually going to do my master's. I'm preparing for GRE. I'd like to publish a few research papers with my friends before I start applying to colleges. And I'm mostly going to apply to universities in the US.
GT: What tips do you have on how to find one's calling and true passion? And also how to prepare for placements?
RK: To recognize your true passion and domain, I'd say first, give everything a shot. There will be some subjects that'll leave you wanting to learn more, and for me, it was machine learning.
As for placements, it's never too late. Preparing for internships and placements is very different from preparing for competitive programming events. Usually, companies just test whether you've understood basic concepts like graphs and see if you can implement them. In competitions, you'll have to think more. You might even need to create new algorithms and data structures to solve problems in competitive programming. You don't need that level of preparation for placements. I highly recommend doing questions from GeeksForGeeks and it will usually suffice.
GT: Finally, what do you think of Intern Diaries?
RK: It’s a great initiative by you guys! Like I said before, awareness is the main thing and if first year students learn about competitive programming, its benefits and internship opportunities early on, it will greatly benefit them since they get more time to prepare.
GT: Thanks a lot and all the very best for your future!
RK: Thank you!
The Guindy Times wishes Ravikiran all the best for his future endeavors and thanks him for giving his time for the interview!