Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

A Undergraduate's Journey into Research: Motivations and Experiences in Computer Science, Lecture notes of Computer Science

An insight into the experiences and motivations of a computer science undergraduate student as they navigate the world of research. The author discusses their initial exposure to research in high school, the challenges they faced during their first research project, and how their passion for research grew over time. They also touch upon the importance of publishing research in computer science and the unique aspects of research in this field. The document concludes with a reflection on the graduate school application process.

Typology: Lecture notes

2021/2022

Uploaded on 08/01/2022

hal_s95
hal_s95 🇵🇭

4.4

(620)

8.6K documents

1 / 10

Toggle sidebar

Related documents


Partial preview of the text

Download A Undergraduate's Journey into Research: Motivations and Experiences in Computer Science and more Lecture notes Computer Science in PDF only on Docsity! My Undergraduate Research Experience and Decision to Pursue a Ph.D. Frank Wang Introduction I would like to start by talking a little bit about my academic background to put this article into context. I received my B.S in Computer Science at Stanford, and I wrote this article the summer before I started my Ph.D. at MIT. I want to emphasize that this is not an editorial about whether computer science students should pursue a Ph.D., but rather, I describe my research experiences as a undergraduate and my motivations for pursuing a Ph.D. I also talk briefly about the projects that I worked on. If you want to learn more about these research projects, you can find more details along with my contact information on my home page http://mit.edu/frankw/www/. Let me start by discussing one of many decisions I have made in the past four years: writing this article. It was a random Sunday night in August 2012, two weeks before I had to head to Cambridge, Massachusetts where I will be starting my Ph.D. at MIT. I am anxiously flipping through my recent emails from CSAIL (MIT’s computer science department) to understand what I need to do before I arrive on campus to start my journey toward a Ph.D. At the same time, I am worried about the amount of work I have to do in the remainder of my internship at Google. I am surfing the web and come across Philip Guo’s The Ph.D. Grind, and I start reading. This is clearly an unproductive use of my time (among other things) when I have much to do. However, his memoir as well as his blog made me think about detailing my experiences. Much has been said about the Ph.D. student, but very little has been said about the undergraduate student and the choices he or she has after graduation. I thought I would write down some thoughts regarding my time at Stanford. The article is organized in similar way to The Ph.D. Grind where I go through each year of my undergraduate experience. Well, here goes nothing. 1 Freshman Year: The Beginnings I came to Stanford in Fall 2008 as the typical college student: confused but excited. I honestly didn’t have a worry in the world as the college experience was hyped up by my older friends from high school. College was meant to be fun, exciting, and intellectually stimulating. For the first two quarters, I did not do anything but take classes and meet people. For once, I did not have to worry about doing activities or aiming for some end goal like getting into college. I did do some research in high school, but nothing really significant. I was an Intel Semifinalist, doing research with a professor where he guided me most of the way through. The research was not even in computer science. It was in mechanical engineering where I looked at different oxygenates and how they affected the amount of soot and NOx it produced. I really enjoyed the experience of doing research, but it was nothing I was really serious about because I had no clue about my major. Two and a half quarters later, I had some direction, which became the first big decision of my undergraduate career. I decided to go more in-depth into computer science to see if I liked it. This was pretty normal for many Stanford students as we did not have to declare our major until the beginning of junior year, and switching between majors after that is just a matter of filing the right paperwork and fulfilling the requirements. To place things in perspective, I came into Stanford partially wanting to go into finance or law. I had done some computer science in high school, but like most things at that point in my life, I wasn’t particularly attached or passionate about it. I tried to advertise my basic computer science skills to companies for an internship, but by March, I was left without an internship or any plan for the summer. Then, one of the students I shared a research lab with for my Intel project contacted me. I had been in somewhat consistent contact with him since we had gone our separate ways two years ago after working in the same computer lab for about 3 months. He had decided to come to Stanford for his Ph.D. in mechanical engineering. He told me that he needed an undergraduate research assistant because he needed someone who could write computer code at a relatively fast pace. Without an internship, I decided it might be fun to work for him for the summer as well as improve my programming skills. So, the summer after my freshman year started. Initially, I was kind of bored as research is sometimes slow moving, and I knew nothing about the field I was working in – nanoparticles and electrocatalysis. I had no clue what I was doing, and I showed up the first day and spent most of the day in meetings trying to learn more about the project. I asked for papers to read and background information. Three weeks passed with very little progress with my writing many lines of code that didn’t really have any use but was meant to familiarize myself with the code. On the fifth week, we had a small breakthrough. Having a casual conversation with a postdoc in another lab, he gave us the idea for a new method. For the next 3 weeks, we went around talking about our idea as well as trying to find applications for it. We had a method with no application. That is the nature of research. Most of the time is spent 2 the cryptography, and I would say that this project is where I learned most of my basic cryptography. Whenever I was confused, I would read more about the concept in a textbook or online. I really developed a passion for research at this point because I really felt like I was learning and understanding concepts more deeply, which is the point of research. Many times in research, you only use a little bit of what you learn in class, but it allows you to apply it to real situations and understand much better. Sometimes, you have to learn something completely new from scratch. As I like to describe it, it challenges you to be mentally versatile and push yourself because research is about pushing the limits of knowledge. This was also the summer where I started to commit myself to more projects. During the middle of summer, I took on a new project where I looked at location based privacy. The basic problem we were trying to solve was the following: Alice can test if she is close to Bob without either party revealing any other information about their location. Although I did not participate in the main parts of the research because it was pretty far along, Kina, an undergraduate from UCLA, and I implemented it on the Android mobile phone platform. We were in charge of the whole process from design of interface to the systems details. I feel like from every project I learn one lesson. From this project, I learned that there is a huge gap between cryptography in theory and in practice. It took Kina and me basically the whole summer to implement this. I enjoyed the projects that I did this summer, and at this point, I was pretty convinced that I wanted to do research. As far as I know, a person could not do advanced research in industry or academia without a Ph.D. degree, so I started to think more seriously about going to graduate school. Junior Year: Adjustments With a new passion for research, I started my junior year. I knew this would be an impor- tant year because it was the last full year remaining before I applied for Ph.D. programs. However, I had no idea what I wanted to do. I was in a somewhat unique position to do an undergraduate thesis during my junior year because of units I had carried over from taking more rigorous classes during my first 2 years of undergraduate as well as from high school. Many times, research just becomes a second priority to classes and activities. At that time, I didn’t know why, but now, I realized that research is difficult and sometimes a bit undirected. There really isn’t any goal, and the project evolves over time, which makes it really difficult in an undergraduate setting where everything is very structured like classes. Also, research is frustrating at times because sometimes, you just feel like you make no progress and really have no definitive end goal. In fact, forcing yourself to make an end goal like a conference deadline or the desire to graduate actually forces you to make progress. At Stanford, the undergraduate thesis counts as about 1-2 classes based on how much time you wanted to spend on research. I knew that if I wanted any chance at a top tier graduate school, I had to focus on making progress in research. This also meant that I had to take fewer classes to have time to do research, which was another good way to make myself spend more time on 5 research. I wanted an end goal and something to push me to make progress, so I decided to write up a proposal to do an undergraduate thesis in my junior year. It was ambitious because I had not taken many advanced computer science classes, and I just started to do research in computer science without knowing too much about security or cryptography. For the first 3 months, I spent time discussing with Dan different project ideas. Dan was relatively busy, and research wasn’t really high on my priority list. However, one thing research did force me to do was to take classes that would help my fundamentals in computer science. Specifically, at Stanford, we had various tracks, but more or less, the same subset of classes fulfilled all the requirements because of the large number of electives available to us. Basically, we could define our own undergraduate curriculum. I chose to take systems and theory classes that would help me with research in security and cryptography. This was great because I never really struggled with class selection indecision one week before the quarter began like many students. I looked at the available class offerings and chose classes based both on interest and research necessity. Many people will say that classes sometimes help with research, but most of the time, it is better to learn the material on your own. I agree to a certain extent, but at this point in my research career, I had no idea how to do research and did not even have the basic computer science fundamentals. Finally, after a few discussions, we decided on a rather ambitious topic. Many security operations are being offloaded to the graphics processing unit (GPU) because the GPU has many more threads than a CPU, which makes it perfect for security operations because they were mostly computations. However, a GPU was designed for graphics use not for security, so we were wondering if the offloading of security sensitive data is actually secure. The question was pretty broad but straightforward. I tried for months to find design flaws in the GPU architecture and the languages surrounding it. To cut a long story short, I didn’t make significant progress by the thesis due date but learned a lot in the process. The GPU project was not the only project I worked on during junior year. In fact, there will be a theme of my working on multiple projects simultaneously. I recommend that all researchers, regardless how early or late in their career, work on at least 3 projects at any given time. Ideally, each one would be in a different stage of progress. I feel like everyone has his or her magic number. I usually think 4-5 is ideal (tailored to the number of conferences in a year), but it really depends on how many you can handle. If one project fails, there are backup plans so that they are making progress in research instead of working on one project for a year and have nothing to show for it at the end. I was working on two other projects on the side. I was trying to publish my work on fuel cells and nanoparticles, but we kept on having philosophical arguments with the professor over the best way to write the paper. It was a frustrating project, and many times, we just lost hope that it will make any progress. We kept on delaying this project until we had a better idea what to do with it. We finally decided to submit the paper and see what happened. We would not hear back from the journal until the summer. The other project I was working on was in preparation for my summer project on securing medical records effectively using advanced cryptographic 6 techniques. I was trying to learn more about the background and progress of the project. This project was with Professor John Mitchell, who I would continue to work with later on. I wanted the experience of working with a different professor and getting a different perspective on different research in the field. I think this is a good place to take a quick detour before I talk about my summer. I have to explain the difference in publishing research in computer science compared to other engineering fields. Computer science research is usually published in conferences. There are many conferences during a year, but there are a few (usually 3-4) top ones. Usually, you submit a paper to a conference by a certain deadline, and you get reviews back. Sometimes, you get to respond to these reviews without including new work in case the reviewers misunderstood parts of your paper. Other times, you receive an accept, accept but fix some parts, or reject. The program committee, an assembled group of top scientists in the field, decide which papers are accepted or rejected. At top conferences, usually under 20 percent of submitted papers are accepted, so there is stiff competition and your research has to be very top notch to get in. If your paper is rejected, you can submit it to a less competitive conference or go back to the drawing board. Sometimes, it takes a couple of conferences before the work is accepted. In other fields, like mechanical engineering, you submit a paper to a journal at any time and get a response, which varies based on journal. Most of the time, it involves some revision. You revise and respond to the reviewers’ comments. Then, these revisions and comments are returned to the reviewers. Then, you will get a second round of responses. Usually, by the second response, you will only have to make minor revisions, which do not go back to the reviewers, and the editor makes a final judgment call on whether the paper can be accepted or not. It usually takes a few months after the paper is accepted before it shows up in the journal. This whole process usually takes around 6-8 months. Like conferences, journals are also based on quality. The main differences I would say between journals and conferences are the lack of deadlines for journals and the ability to make changes to your paper as a result of reviewer feedback. The summer was more of the same. I received an intern offer at Microsoft, which paid pretty well, but I turned it down to focus on research in preparation for graduate school. I went to research talks, and I worked on the 3 projects I talked about above but with focus on the securing medical records project. The basic project was that the HIPAA law is difficult to enforce, so we wanted to build a system that would do this automatically using advanced cryptographic techniques. This work eventually was published with me as one of the authors at a conference. I basically finished my project on GPUs by finding a couple of flaws, but none were significant enough to write a paper. Our paper on computational methodologies to analyze nanoparticles finally was accepted (published in 2012) after a couple rounds of tough review. This gave us momentum to start our next paper where we used this method to analyze various nanoparticles. This paper I did on the side mostly in the month of August. I will talk more about the progress of this paper in the next section. My summer was basically routine, but senior year was a relatively chaotic but strong year for me. 7
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved