This website contains information supplement to my résumé.

I actively create programs in my spare time. Some show graphical results of mathematics, some are solvers or macros for small games, and some are games themselves. I also create tools to help myself with images and files. The programs below are ones with something interesting to show in screenshots.

C++

- Tetris

- Ray tracer

- Turing is a programming language designed for teaching. I learned Turing in grade 10 Exploring Computer Technology and was quickly hooked on programming. It also helped that I had a great teacher, Mr. Muir!

I am currently creating a Mandelbrot/Julia zoomer in C++ and CUDA. It is the successor to my current largest program, the Mandelbrot/Julia set image generator. My GPU is extremely fast with 32-bit floating-point operations, but you can only zoom so deep. My next step is to experiment with different multiple precision arithmetic libraries to see which one works best on my GPU. I will have to use CUDA libraries or attempt to port CPU libraries to CUDA.

This is the coolest project I plan to tackle. I will have to learn the math behind some 3D fractals like the Mandelbulb, but I already have experience with ray tracing, which you need to generate these fractals.

I already created a word search generator, but I would like to make an "extreme" one that tries to fit as many words as it can onto the grid using a genetic algorithm. I got this idea when a speaker who was invited to Citigroup (my third co-op/internship) talked about genetic algorithms. They can be used to find near-optimal solutions to difficult problems (e.g. the Travelling salesman problem). I also learned about them in my Introduction to Artificial Intelligence class!

I don't like many photo viewers because they cover parts of the image with translucent panels, make GUI elements appear whenever you move the mouse, or simple things like not allowing you to move between the first and last images... so I'll make my own! I'll also be able to add any custom features I want.

Bachelor of Mathematics, University of Waterloo

Major in Computer Science

Minor in Combinatorics and Optimization

Minor in Computational Mathematics

Co-operative Education Program

- Concurrent and Parallel Programming CS 343
- Introduction to the Theory of Computing CS 360
- Numerical Computation CS 370
- Computer Networks CS 456
- Computer Security and Privacy CS 458
- Algorithm Design and Analysis CS 466
- Introduction to Artificial Intelligence CS 486
- Introduction to Computer Graphics CS 488
- Microeconomic Theory 2 ECON 301
- Linear Algebra 2 MATH 235
- Calculus 3 MATH 237
- Introduction to Optimization CO 250
- Computational Discrete Optimization CO 353
- Scheduling CO 454
- Introduction to Game Theory CO 456