I am completely bilingual in English and German and am currently learning Spanish.
2. Programming Languages
As a personal project I have successfully finished a parallel implementation of the conjugate gradient algorithm (and the necessary BLAS math library) for sparse and non-sparse 3d vectors, also using TBB.
Apart from these two major projects I teach a weekly C++ workshop at UCL and am extremely interested in the evolution of standard C++, i.e. design of the language and its runtime environment.
In terms of APIs I have some experience with TBB, Boost, OpenGL, Qt, Maya and Nuke. While my experience with all of these is as yet limited, I am and have been actively studying to use all of them, especially Maya and OpenGL.
While I have never used Java on any personal projects, most university teaching and coursework relied upon it. I thus have a lot of experience with it, most of which derives from my knowledge of C++. The only aspect of the language I am interested in on a theoretical level is, as with C# below, garbage collection.
I have used C# a lot for ‘protoyping’ on my personal projects. Over the years I have implemented a Eulerian fluid simulator using both Jos Stam’s initial (‘stable fluids’) approach and then incorporating advanced techniques such as the variational pressure projection proposed by Bridson et al.
In terms of numerics solvers I have implemented an Incomplete Cholseky, Approximate Inverse and Multigrid preconditioner for conjugate gradient as well as a standalone implementation of the multi-grid method, the maths libraries for all of which I also wrote from scratch.
I am currently learning python and have found it very elegant so far.
I am currently learning CUDA with a view to using it to accelerate simulations.
Miranda is the only functional programming language I know, but its syntax is very similar to that of Haskell and F# which makes those skills transferable. I have used Miranda only on less complex, isolated problems of an academic nature so far but find its approach a valuable addition to the problem-solving skills of any programmer used to imperative languages.
I have used Matlab a lot, especially for image processing, and for prototyping implementations of algorithms. My projects include early versions of the numerics solvers outlined earlier, image stabilisation, deflickering, blotch-removal, tone-mapping and laplacian pyramid blending.
3. Personal Achievements
I was elected head boy of my school for 4 years and head of my year for the last two years of school, attended 13 MUN conferences (4 times as president of the security council) and represented my school in a national debating competition twice. My organisational and mediating duties for all of these taught me a lot about teamwork, leadership and presentation. At King’s College, I helped set up the now annual Human Rights Moot and at UCL I am teaching a small C++ workshop.