Tuesday, February 08, 2005

Adventures in Programming

I am a terrible programmer. Some sort of law should be made against me writing a program. Luckily, I have smart officemates who actually majored in computer science in college, and therefore know how to do computer-related things like programming. Thanks to my vastly intelligent officemate, I was able to get this Monte Carlo integration program working.

I shouldn't be so hard on myself, because most of my poor programming is due to inexperience and insufficient background. I was reminiscing a couple of weeks ago about my programming accomplishments. I majored in Physics with a specialization in Computational Physics, which meant that I took three computation-related courses. I believe those were: 1. FORTRAN programming, 2. Numerical Analysis, and 3. Computational Physics.

(It was in my Numerical Analysis class that I got the first inkling that I might be interested in switching fields. Evidently I did quite well in that class, although the only lesson I got out of it at the time was that "subtraction is bad." On one of my homework papers, my professor wrote me a little note, saying something to the effect of "Have you considered graduate school in Computer Science? I would love to have a grad student like you!" That gave me the idea that maybe I could switch fields without too much trouble.)

That, folks, along with the C programming and Discrete Math courses that I took my fifth year of undergrad, were ALL the preparation I had for graduate study in Computer Science. Oh, well, that and the vast programming experience I had acquired working with Physicists.

For a Physicist (no offense to those reading!) I was actually quite computer-savvy. Once for a summer REU program, I actually wrote a FORTRAN program that had some subroutine calls (gasp!) and used some numerical algorithms from Numerical Recipes, which, I was told, was the Bible of numerical computation for Physicists. (Nowadays, as a true numerical analyst, I cringe at Numerical Recipes, which is actually riddled with errors.)

I had never even heard of parallel computing, MPI, or Linux. I had used some flavor of Unix during my studies at the University of Kentucky, but didn't know much more than a few basic commands. I didn't know of any good text editors, that's for sure.

The learning curve was pretty steep when I came here. But over the years, I have become very computer-savvy for a Physicist, and maybe even average for a numerical analyst.

No comments: