Software Developer

Summary

I am currently completing my third year pursuing a Bachelor of Science in Computer Science at the University of Calgary, specializing in Theoretical Computer Science. I am a very ambitious and self-directed learner, and love learning new things and solving challenging problems.

In Spring 2022, I worked on a research project on computational number theory. The project was called Explicit Formulas for Divisor Arithmetic on Hyperelliptic Curves. Hyperelliptic curves are mathematical objects commonly used in cryptography, specifically in hash functions. Hyperelliptic curves have related mathematical objects called divisors, and a common mathematical operation used in hash functions is the addition and subtraction of these divisors. My responsibility was to produce explicit formulas that perform this arithmetic efficiently and implementing the explicit formulas into Sage Math, which is a large open-source computational algebra library. This project significantly improved my perseverance in the face of difficulty, as there were always new things to figure out and unforeseen challenges that cropped up. In these cases, I had no option but to keep trying and asking lots of questions to further my understanding until I found a suitable solution.

In Summer 2022, I also worked on a personal project called the habit matrix that utilizes the command-line as a means of communicating with the user. It has a wide variety of commands the user can type to create new habits, modify existing ones, and mark a habit as completed for the applicable time. One very interesting challenge I came across was allowing the user to customize how often the habits recur and when the user is reminded to complete them. For example, they may opt for something simple like a daily, weekly, or monthly habit as a simple option. More complicated examples include habits that occur on something like the 2nd Sunday of May for Mothers Day, or even the union of multiple custom recurrences. I learned many useful skills in software development such as when to use abstraction, the importance of planning code out beforehand, and I also significantly honed my version control skills.

In Fall 2022, I took a Computer Graphics course in which we used OpenGL to create a 3D ray-traced solar system, with all 3D projection done from scratch based on the affine transformations taught in the course. This included generating meshes for the planets and sun. Each vertex in a celestial bodys mesh stored a normal vector, a texture coordinate, and a location in 3D space. Using these primitive types allowed me to generate spherical geometry for each planet and apply 2D textures onto the surfaces of the celestial bodies. The normal vectors allowed for an iterative ray-tracing algorithm to be applied, which modelled basic specular reflections on the surface of objects, where the light source was the sun. Throughout this course, I learned many useful skills including the mathematics of affine transformations, rendering using OpenGL, rendering a large number of object primitives in parallel to boost performance, and of course improved my C++ skills along the way, and more.

Expectations

I'm looking for a software development internship that is a multiple of 4 months in length, up to a maximum of 12 months. I enjoy working in a team environment where we are constantly solving new problems and collaborating effectively. A few areas I'm currently most interested in are embedded systems, computer networks, and computer graphics. I am also open to many other types of software development as well, as I can quickly pick up new skills and start working on things once I am introduced to them.

Employment Preferences

Relocation destinations:

  • Edmonton, Alberta, Canada
  • Vancouver, British Columbia, Canada
  • Ottawa, Ontario, Canada
Expected Hourly Rate

** CAD/hr

Academic Degree
Experience

Total Professional Experience

1 year

Startup Experience

1 year

Big-Tech Companies

no experience

Enterprise Experience

no experience
Contact Candidate

Contacts are hidden

Send a connection request to the candidate to get their contact details.

Contact Candidate