Illinois ASE REU

Monday, August 1, 2016

Small to Big

Currently I am working on modifying the Codehunt data extractor code to automatically find the location of the Codehunt user directory. However, I keep on running into issues. The code used for the data extractor is almost three hundred lines, but there are only about ten lines which are needed to find the path to the user directory. Unfortunately though those ten lines of code affect all the other three hundred lines. Such a small section is somehow creating a bigger problem than anything else, and this is a consistent trend which I have noticed throughout all of the research I have done this summer.

Sergey Brin, Google co-founder and Russian-born American computer scientist, once said "Solving big problems is easier than solving little problems", and after having working on this research for this summer I understand what he meant. The most difficult problems to solve involve the smaller details which you originally dont consider when you are making goals for your research, and these small details which you often ignore eventually snowball together to create a big problem. Eventually I will solve the current minor issue that I am dealing with but until then it will continue to have all my attention.

Saturday, July 30, 2016

Asking The Right Questions

As of now we are focusing our efforts to dig deeper into the data that we currently have. So far we have investigated the user data in two categories. One set of the data made a comparison in the performance of both Java and C# users. The other set compared users based off of their declared experience. Users can be beginner, intermediate or advanced users. Our current findings on these two data sets do not say much right now, but we are just scratching the surface. By asking the right questions we can discover more about Code Hunt and how users learn to problem solve.

Possibly looking at other aspects of our data can give us insight to this. For example the data that we were able to analyze gave us some insight to where a programmer can usually struggle. We were able to pinpoint specific puzzles based on our data. Still not every question will lead us to good results, which makes this process difficult. However, it is still a great learning process and it all depends on one's curiosity. Research so far has helped me approach the same information in different angles. Still, more questions need to be asked in order to make a big discovery in terms of educational software engineering.

Saturday, July 16, 2016

Research as a Learning Experience

One of America's founding fathers, Benjamin Franklin, once said "Tell me and I forget. Teach me and I remember. Involve me and I learn". In my own personal academic experience, I have noticed that the majority of the time when I do not understand a subject it is because I have no interest in learning it because I have no part in it. If you attempt to teach me about a subject like art or history, I struggle to maintain interest because I had no part in developing the art ,and the history I am being taught about does not include me. I am able to remember the information but since I have no personal involvement in it I do not learn from it. This in my opinion is one of the major reasons why the mistakes of history are constantly repeated because history is not taught in a way that most people are able easily apply to themselves.

However, research is something that demands involvement in order to be successful. I cannot attempt to research about subject if I do not become enagaged in learning about the subject and drawing connections and conclusions from what I observe. This demand for involvement in turn makes me learn by making me think critically to recognize trends and patterns in my research.

Over this past summer, I have learned more about programming than I ever had in any of the programming classes I have taken in college. Instead of creating some random program which prints out a matrix of randomly generated numbers, I am learning how to use real life variables such as time, skill level, and user attempts to make conclusions on user experiences. This application of programming to analyze real life variables has allowed me to increase my ability to see statistical trends and has also improved my program troubleshooting ability.

Asking for help

One important thing I have really noticed so far from this summer is the importance of asking for help. In the beginning we weren't exactly sure of the end goal and desired results our professor required from looking at all the data. 

 I didn't always feel comfortable asking extra questions or saying I'm lost or don't understand in the beginning of our research because I didn't want to seem incompetent. 

Keeping in contact with the professor through emails and office meetings has helped out to make sure that the ideas we come up with are aligned with the goals of our overall research.

After working for some time now I understand that there will always be questions. Asking questions helps everyone work together to reach a better understanding and learn together. 

Group Experience

So far this is my first experience working with a large team to collaborate on research as a group. Accounting and other courses helps teach students how to collaborate  and delegate tasks from a rubric or assignment but it's not necessarily the same as research. 

Since this project is more of an ongoing research project we all have to work together and lean on each other to get different parts completed in a timely fashion. Unlike some group work in the classroom where either somebody does all of the work of each person does the same assignment on their own and then comes together as a group to discuss the findings. 

From our team so far each person is able to bring their own set of specialized skills and use them to help with our overall research project. I like being able to use what I'm learning in R to analyze our data and create statistical graphs to add for our research paper submission. 

When we are able to get together in the lab and work side by side it helps for brainstorming ideas and troubleshooting with minor coding errors or writers block. I'm excited to receive our first feedback from Microsoft. 

Admitting Ignorance

Often times while I was working on analyzing the dataset I came to a problem with my program which I was not sure how to solve, and since I had already taken a class about Python I was sure that I could find some way to fix the problem myself. However, eventually I realized that I did not know how to solve the problem. My pride in my own personal knowledge was impeding my ability to fulfill the job that I was supposed to do, and I noticed that this is not a problem that I only have.

I have only had the opportunity to take three computer programming classes in college, but in all those classes I have been able to meet students who have the same problem I have. They have previous experience programming in the language which is being emphasized in the class and because of that they refuse to listen to the professor because they beleive they know more than the professor. Because of this, they refuse to listen to the professor's advice and often are stuck in office hours with less experience programmers, like myself, scrambling to complete the weekly MPs. 

Bertrand Meyer, professor of software engineering at ETH Zurich, wrote a blog post about this topic and in his blog he wrote "The human mind is flexible; when taught well, many people can learn many subjects. But there is one case of absolute impossibility: you cannot learn something if you think you already know it -- and do not." In order to be succesful at some tasks, we first have to examine what we know and what we dont know and be willing to accept guidance from those who know more than us.

Friday, July 15, 2016

Experience with First Draft

Knowing your team members is the most important factor when being a part of a team. It is the link to better cooperation and to finishing tasks in a timely manner. Usually I find myself working alone, but I understand the importance of working with others. You are exposed to different perspectives on the same thing. None the least, you do not have to carry all of the weight. So far me and my research team have been working together to get a publication ready for Microsoft Research. The end goal required all of us to work together efficiently.

Each of my team members specialized in areas that I may lack experience in. For example, one of my members named Josh knows how to analyze and generate statistical data. Personally for me, it was difficult to figure out what kind of data we should create for our research. It was good to get his input on the concern. As for my other team member, Brandon he was of great help in assisting me in creating raw data for Josh to analyze. Together it was a team effort and we had a pipeline system intact.

After completing our first draft of the paper, I have learned two things. First one being that I have learned how one should write and format a research paper. Using LaTex to compile the paper was a challenge in terms of positioning tables and figures, but for the most part was easy to learn. The second thing that I learned is how to manage a team. This is a skill that hasn't had a lot of exposure. I have been teams of group projects, but this was different. This time I was going for a bigger picture, and it was my job to keep the team all together. So far research has nurtured me in becoming a better leader and a smarter worker. I know that there is much more to learn, but I am looking forward to what is in store for me.