Sunday, September 11, 2016

The Balance between School and Research

Over the past two weeks, I have noticed that finding the time to do research along with my schoolwork is a sometimes difficult task. My main priority of course has to be my schoolwork but at the same time as a member of a team I still have the responsibility to put in the necessary work for our team accomplish our goal. As I started the school year, I immediately noticed that I have to manage my time more efficiently to be able to fulfill all my responsibilities. During my research over the summer, I was mainly focused on just doing my research so managing my time was not an issue but when you have lectures to go to, homework to do, quizzes and exams to study for, and RSO meetings to attend along with doing your research;finding time becomes much more challenging. In order to achieve the delicate balance needed to be successful I have had to plan out each day in order to ensure that I am able to not only get good grades but also accomplish my research goals. At times I will admit it does become a pain having to live on a daily schedule but as famous author,Victor Hugo, says "He who every morning plans the transaction of the day and follows out that plan, carries a thread that will guide him through the maze of the most busy life. But where no plan is laid, where the disposal of time is surrendered merely to the chance of incidence, chaos will soon reign."

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.

Young Scholars Advice for Networking

    When I think back to my times in high school after taking the ACT and applying for colleges, I remember asking for advice and what to expect when actually in college. Everyone would mention things like "make sure you pick your dorm early so you get the nice ones" or "enjoy the meal plan but watch out for the freshman 15", or tell me to pick a nice schedule to avoid 8am classes. However, one thing I've noticed is that no one ever mentioned the term networking.

    I didn't hear the word networking very often until I got into college and didn't really understand what it meant. If I could talk to students from my high school, I would tell them that when they get to college don't be afraid to step out of their natural comfort zone, and try to make the most out of every opportunity. Networking is something that happens all the time whether if it is a business event, research presentation, or just talking to people around the office, there is always an opportunity to put your best foot forward and represent yourself.

    An important key to networking is to do your research on the person or company (sometimes both) that your interested in. For example, as a sophomore or junior student trying to earn an internship for the summer, I would recommend going online and browsing the company's website and looking for any interesting news articles they may have been mentioned in, learning about their products, and how the company operates as a whole aside from just the specific position of interest. Being familiar with the CEO and the organizations goals will give you a way to ease into the conversation at the next event or or interview.

    Finally I would express the importance of staying humble while speaking about your current or past experiences. Instead of bragging about your accomplishments and what makes you so great, it might be better to talk about what you have done in the past and how it has been a benefit to others around you, or what you have learned from those experiences and new people.

Investing in Education in Developing Countries

  Luckily, in the United States as with most developed countries almost everywhere in our society people have access to necessary tools to learn how to code and improve their programming skills. However, that is not the case with most developing countries. For two weeks, I was able to spend sometime in Ghana and I got to experience what it is like to live in a developing country and the struggles that exist there for someone who is learning to code. While I was in Ghana, I was attempting to learn more about Python in order to work on the data analysis for Codehunt but the problem was I was unable to get any access to anything which could help me. The main reason for this was because of the fact that the electricity would be turned on and off at arbitrary times, and even when you could get access to electricity because of the lack of good wireless connectivity in many areas even with electricity internet was inaccessible.

  After coming back to America, I talked about my experience with some of my friends and learned that this is not only a problem in Ghana but also a problem in the a large majority of Africa, the Philippines, and many countries in South and Central America. The reason I find that this is a problem is because the people in those countries may have talents and abilities in computer science which they are unable to capitalize on because of their lack of access to knowledge about computer science, and that not only hurts them but also hurts us here in the United States also. According to a report by the Wall Street Journal, 2.5 million STEM jobs are not filled every year in the United States because of a lack of people who have the ability to fulfill those jobs. This same report also states that the majority of people who are studying science and technology in the United States are not Americans but instead Chinese and South Koreans, and although that type of diversity is appreciated what if we could get more diversity allowing for a wider ranger of ideas and thoughts.

Individuals from different cultures all see things in different ways and this diversity of though allows for the creation of broad perspective which is important not only in academics but also in the corporate world. There are many opportunities for business in numerous countries around the world which live in a different culture than our own and as such need different products than we use in our culture. I feel that it would be beneficial for not only universities but also companies to take a greater look at the potential of individuals in foreign countries to help make their universities and companies more diverse. I believe that these companies and universities should invest in improving the situation in those countries to allow the people more access to useful knowledge about science and technology which would allow them to then help educate those people to bring them to the United States to fill jobs and help turn companies into more globalized brands.

Tuesday, July 5, 2016

Inclusion: Choice of Words

     After taking 100+ credit hours at the University of Illinois I have experienced many different classroom atmospheres. To begin with, most entry level undergrad courses range from weed out classes and general ed required courses with class sizes of about 300+ students to upper level major courses with only 15-30 students per section. Clearly, the professors cannot honestly make an attempt to allocate their time to all 300 students during the lecture time, but in the smaller class sizes I feel it is important for each student to feel comfortable with their peers and the professor when it comes to asking for help, working together, and learning.

     I hardly ever think it's a good feeling to be left out, unheard, excluded, or singled out in the classroom or other learning environments. I really think that even the changes in tone, mannerisms, or choice of language can make all the difference in a students learning experience.

     For example, in both my accounting and business technical writing courses I've experienced group based work and discussion based participation throughout the regular course schedule. One of the most frustrating times as a student is feeling like you're the only person who doesn't understand or constantly has questions in the class when everyone else sort of just gets it or understands the materials.

     I had a professor who would sort of rush through the lecture and stop to ask "who doesn't get it?" or "who doesn't understand?" as a way to ask if any students have questions. In this instance, a few students usually have lingering questions but do not raise their hands or say anything because they do not want to feel isolated under the rhetoric of someone who "doesn't get it".

     I'm not exactly sure what caused the change, but later in the semester the professor made a point to correct his choice of words when pausing for questions to ask in less isolating way by changing his words to "Do you have any questions?" or "Is there anything you want to go over that might have been unclear?". I would notice 3-4 hands go up (including my own). I feel like that simple change made my entire learning environment more comfortable to ask questions as well as simply participate when I felt I had the right answer or something valuable to say to add in the discussion.

Saturday, July 2, 2016

Broadening My Skillset

     As of lately, a lot of people have been asking about my summer plans and what I want to do after completing my last year of undergrad. I begin explaining my Code Hunt research position and explain how I'm learning computer programming. "Well aren't you an accounting major?" is typically the first response I receive. Yes I am, however, learning computer programming software has helped sharpen my "beginning-to-end" thinking process, which is critical in the accounting field.

    Seeing as most accountants actively use excel spreadsheets and other financial related software and programs for accounting measures, it is important to understand the step-by-step decision making process that is also derived from learning and executing computer code. Learning R has gotten me familiar with troubleshooting errors line by line and that same skill transfers over when working on my accounting related course work in cost accounting and other upper level courses I have taken.

    Recent articles from AICPA, explain that graduating accounting students pursuing the Big Four public accounting firms [E&Y, Deloitte, KPMG, and PwC] should pursue Certified Public Accountant (CPA) license and students should also consider learning how to code. The combined range of skills makes students highly competitive in their field and very marketable as technology continues to carry on. I am excited to continue learning about code and see how I can take these skills with me once I enter the work force. Initially, I never would have thought about combining the two, until the opportunity presented itself after a quick discussion with Dr. Xie and I am glad I took the chance.

Joshua Reed
July 2nd, 2016

Friday, July 1, 2016

Moving Forward

As I start writing our research paper, a question came to mind. What is next? After my meeting with Dr. Xie yesterday, we started discussing future plans after the research paper. One of the suggestions was working with one of my research partners to create APIs that could expand on what Code Hunt is. Since I have been programming in Python, it was mentioned that we try to get a feature where users could play Code Hunt by coding in Python. I actually like this idea, because I believe that it will also build my programming foundation and give myself another challenge. Doing this task would be very enjoyable since it is much more different than assorting and processing data.What I have come to realize about research is that you are given more freedom in what you can explore. When working in the corporate world, all of your efforts are directed towards a specific mission that the company has set for themselves. This what I am liking about research; the freedom to explore. As I continue to do research this summer, more questions will be asked and more finding will come from it. I am looking forward to where research is going to take me for the next four weeks.

Website for CodeHunt

Being able to use the skill that I learned over 2 summers ago is  kind of cool because I was previously using this skill from time to time. Now that I am able to use my web development skills to help display data that was extracted from CodeHunt Data. From that I have set up a website that will display the raw data for each Sector. Within each Sector there is levels and there is the Raw Data for each level. I am still a little rusty so somethings are taking much longer to work than I thought. It is still a work in progress, but I am thinking positive for the completion of this site.

Research Opportunity

I started Research for the first time this summer and it wasn't much like how I thought it would be and its not necessarily a bad or good thing. It is all what you make it and if you want to truly receive the most of the opportunity you will give it a lot of energy. Since it is the summer time you should be able to do so unless you are like me and are taking multiple classes during this time as well. I encourage others to do research and take the opportunity to create a solution for others.

Adjusting to a Research Environment

   More often then not when you are working in a class setting whether it be in a computer programming class or any class in general; you always have a set list of problems with a set list of solutions and there are teaching aids and professors who are there to help and guide you to the soultion to every step. However, I have learned that in research this is not the case. In research, there are a multitude of different problems which happens to arise when you are trying to achieve your overall goal. Before this summer, I had prior research before coming to Illinois as a freshman but that research had nothing to do with computer programming and more often than not when I had a problem it was easy to solve.

    As I have learned in many of my computer programming classes programming always brings about some minor problems which you had not planned for. You cannot just write a huge amount of code without testing it constantly or you will finish writing all of your code and realize that it will not compile. Even with prior experience using Python, I encountered multiple problems while doing tasks which in my mind should have been easy to accomplish. However, I find the challenge of solving these problems and making something which I hope can be useful for our research team to be very fulfilling. I enjoy the idea that when I overcome these minor challenges and tasks I will hopefully have made something worthwhile with my time.

Thursday, June 30, 2016

Back to Square One: Conducting Experiments

       Programmers strive in understanding and applying math and algorithms to make their jobs and lives of other around them easier. I myself feel this way, however there is one skill that majority of programmers lack in as they become more proficient in coding. Writing is something that everyone should be experienced in, but this is not the case for programmers. Our jobs usually have us sitting in front of a computer revising code or creating programs or new processes. Since we are exposed to this lifestyle, we tend to have sudden decrease in writing proficiency. I have fallen victim to this stereotype myself. I even took an advance composition class, and even though I have regained my writing skills, it is far more different than writing a research paper.
        After my meeting with Joshua and Dr. Xie, I realized that all of the work that I drafted for the research paper is not the right direction. Dr. Xie mentioned that we had to approach this paper in a more scientific fashion. This means that we needed to create a paper that revolved around the concept of formulating a hypothesis and then carry out an experiment. I believe the last time that I have written a paper in this manner had to be my senior year of high school. Other than that, I have been writing papers in an essay format. Getting myself accustomed to writing in this format has been rather tough for me, but at the same time it has made me more curious and interested in my research. I actually have more enthusiasm in my work because it is forcing me to become more of a critical thinker. With that being said, my research does not stop when a hypothesis turns out to be incorrect, it only goes forward from there by asking the question, "Why?". With deadlines coming up, this will be a challenging few days, but will all be worth it in the end.

Sunday, June 26, 2016

From Accountancy to CS: Code Hunt Research and R Programming


Codehunt Research and R programming
From Accountancy to CS

This is the end of my third year at Illinois and coming from a guided accounting background, I initially had little experience in computer coding aside from experience in visual basic in excel. My background consists of economics, accounting, and statistical analysis. However, this was not a barrier when it came down to learning about my first computer programming language R.

After being introduced to current progress of Code Hunt and the direction in which our research would be headed I began to self teach the basics of R using a program called R Studio. I began watching videos on youtube, Khan Academy, and Lynda to learn about the basics of coding and the functionality of R. My first main task in Code Hunt was to understand the structure of the game and analyze the raw user data to produce statistical analysis based on last years 48 hour player competition.

At first glance R seemed very complex and impossible to figure out without any prior computer programming or coding knowledge. I began testing it out by running simple lines of code to import data sets from .csv files, sorting and creating subsets, learning about building matrices. Next I felt comfortable moving on to plotting data by creating bar plots, and box plots. This took a fair amount of time to grasp the concepts of placing each variable within the code and troubleshooting error messages but nonetheless it was worth figuring out. Now I have created a range of graphs and multitude of R scripts to be used for further analyzing our data.

One of my latest challenges was exploring gitHub and bitBucket for cloning source codes and producing commits, which seem to be common in the realm of computer science. With the help of my team I was able to figure how to use the command terminal to git pull and git push files to finally upload into our team repository. Overall, I feel like every time I open R and begin digging through the data or clocking into the lab and meeting with our team I find more things to learn about which is the exciting part of research.

  • Joshua Reed

Monday, June 20, 2016

Learning from Code Hunt

In the early stages of research, I devoted my time to learn Python programming. To my surprise, the language was rather intuitive and user-friendly. Learning how to program in that language was not difficult at all. The only interesting thing about the language is declaring data types for variables is ambiguous. After learning how to code in Python, my first task was to take a look into the metadata extraction program that a student previously wrote. Originally, this program would iterate throughout all user data in the data release and write certain information about each level into a text file. The only user data that each level consisted of was the amount of attempts the person had on each level. This program does not differentiate between if the submission was in the Java or C# language. After making some modifications and multiple revisions of the data extraction program, the program was able to give us more information about each player's submission. It can also create two data sets; one in Java and one in C#.

For the past few weeks, the research that I have been conducting with my team has been a valuable learning experience. Engineers usually have to implement critical thinking in order to solve problems or decipher data that is presented to them. So far Dr. Xie has helped me and the research team utilize our thinking and problem solving skills to understand what we can learn from Code Hunt users, based off of their submissions. Currently, we are in the phase of gathering materials to write a research paper on our Code Hunt users. There is already a research paper that has been published. What we plan to do is try to draw up conclusions that would be useful to more than one group of people. Those stakeholders include professors in computer science, game designers for Code Hunt, companies that seek to teach their employees how to program, and even the users themselves. There is much more to accomplish in these next 10 days before our first deadline.