Friday, May 2, 2014

Closing Thoughts

Most people enter into an endeavor expecting a finished product – something quantifiable to show for their weeks, months, or years worth of labor.  Even those observing them, whether casually or professionally, look for tangible results.  We live in a society where output is praised and admired, but the lack thereof is met with confusion or disdain.  One of the most significant lessons I’ve learned during the course of this internship is that, while the destination can be important - finishing a product or meeting your goals - often the journey there is more lastingly valuable.



My mentor and I set out to design and implement an interactive application in the Canvas learning system that creates customizable practice quizzes and exercises for college intro-level Math students.  Right now, a professor can create a test bank in Canvas and upload his/her own hand-made problem sets of any given size.  Canvas then generates “random” quizzes from these test banks, but there’s no real student input or feedback as to what they need more practice in.  We wanted to give the student the option to select a topic, range of difficulty, number of problems, and specific features regarding those problems.  For instance, a student could say, “I really need more practice factoring polynomials.”  They could log into Canvas and select easy, medium, or hard factoring problems, whether they wanted single or multi-variable polynomials, and how many problems they wanted to practice.  This application would act as a supplement to their current coursework – a way to catch up if they were behind, review their weakest areas for exams, or look ahead if they were nervous about upcoming material.  

It's easy to bite off more than you can chew


I’ve been told by several of my friends and colleagues that setting realistic goals and outlines for a programming project is one of the most difficult factors.  Often software developer teams are initially too ambitious and will have to significantly scale back their project features halfway through in order to meet their deadlines.  But, we were optimistic.  We figured that our concept was challenging but workable in the span of a five-month internship.  Our first step was to download the proper software and register for developer permissions in order to edit and submit code in Canvas.  This took two weeks.  Our next step was to work through some learning modules provided by Canvas developers to teach others how to create interactive LTI applications that could be hooked up to Canvas.  


This involved implementing security checks for parameters sent from the user, signature verification, and finding or creating a library to carry out all these functions.  This process lasted over two months.  We had reached the point where the semester was drawing to a close and we had no tangible product to show for our efforts.  By the end we developed a simple piece of code to generate random single-variable polynomials, print them to the web browser, and check the user’s input of their roots against SymPy’s factoring method to spit out a result, but it was nothing close to what we had envisioned at the beginning of the semester.


At first our project seemed like a failure – we had worked so hard and yet were unable to meet any of our previous goals.  But then I looked back on the entirety of the semester and realized how valuable my work would be going forward.  I’ve learned how to create simple programs in three new languages.  I know how to get a local server running and mount files to that server to display on a web browser.  I have access to a plethora of resources to seek help when faced with a seemingly insurmountable obstacle or daunting error message, and I’ve learned the basic techniques of gathering and processing user input from a web form.  These all may seem like trivial concepts on their face, but they have taken months to learn and implement in their most basic form, giving me a much more realistic perspective and deeper understanding of what is involved in web development. 

 


Even though our finished product is not at all what we expected, I have walked away with programming skills that will be invaluable to me in the future – skills that I could only pick up through direct, hands-on experience in the field.  Working with my graduate mentor, Itamar Gal, has also made the world of academia and the people associated with it more accessible – not just in the context of potential graduate school opportunities, but also to mold my undergraduate career into a more worthwhile experience.  If I am interested in a particular topic, want to learn more about a given field of study, or just want to discuss some concept that I’ve recently discovered, I know now that there are professors, graduate students, and even some undergraduates that would enjoy a lively discussion.  I feel more at ease interacting in the academic sphere.  Through this internship I’ve gained a sense of belonging and right – a sense that I am worthy of the knowledge I have gained and the encouragement to share that knowledge with any willing ear, which to me is the most valuable piece of all.  

No comments:

Post a Comment