Software Developer Intern – Desire2Learn
I was very fortunate to be hired as a Software Developer at Desire2Learn on my first work term. It was an exciting experience that saw me exposed to tons of new languages (C#, JavaScript, CSS, SQL, XML) as well new design processes such as Agile Development. I was given plenty of opportunities to explore my interests in areas like performance, security, and design. Below are some brief blurbs about some of what I worked on:
I worked with my mentor to develop a calculation engine utilizing object oriented principals (OOP) in C#. I taught myself algorithms such as the Median of Medians and implemented them in order to make the engine as performant as possible. I created a custom fraction class to combat issues with loss of precision (according to the decimal class, (1/3)*3 was equal to 0.9999…). I developed a suite of tests to accompany this class to ensure its integrity was maintained as it was used throughout the system. Along with these new developments I also redesigned the existing user formula parsing to be more type safe and use recursive descent parsing.
I redesigned the menu tool used in the User Progress tracking to be more visually appealing using CSS and Javascript. I completely redid the JavaScript from the ground up to adhere to OOP, squishing a number of bugs in the process. I thoroughly tested the changes across all major browsers to ensure a proper viewing experience for all users.
On my spare time, and during our company wide testing days, I assessed the product for security vulnerabilities. I discovered and reported vulnerabilities including Reflected and Stored Cross Site Scripting (XSS), Cross Site Request Forgery (XSRF), SQL Injection, and Click Jacking. I used black box testing (testing through the UI), third party tools, and analysis of the source code to discover whole classes of vulnerabilities. I was asked to create a presentation of my finding and how to mitigate them to our team of developers.