Thursday, April 16, 2009

A Programmer's Youth

So let me start by giving a brief description of where I have been and how I got into programming. 

It all starts at about the age of 12, I got a toy laptop that had simple number and guessing games. At the very back of the instruction book was this description of BASIC and how you could program the laptop! Well I jumped in head first and had a blast writing programs that would ask the user for their name and then say hello to them by name and other trivial programs. But I had been bitten by the bug! 

So for the next few years I continued writing simple and trivial programs on my laptop as well as on our ancient AT&T desktop. I loved trying new things but had no access to the information I needed to continue advancing. I eventually grew bored with it and stopped programming for several years during middle school where the only computer skills I used were word processing, instant messaging and web browsing. Finally I got to high school. 

Our high school runs from 10th grade to 12th grade as opposed to 9th to 12th like some other schools. This meant I only had three years to learn programming here but it turned out to be more than enough. In 10th grade I took the intro course. We learned C++ with basic ideas like input/output, file I/O, sorting, arithmetic, and other small instructive pieces. I loved it at this point so I decided to take AP Computer Programming. Looking back now I am extremely lucky that my school offered this and it was my first big learning experience in computer science. I learned about object oriented programming. I blew through the course as well as the AP test and was still hungry for more so in my senior year I took an independent study in computer programming. 

My interest has always lied in AI so for my independent study I decided to work on a program simulating a mouse finding its way out of a maze. It was a really great experience, though it never paid off in grades. I was able to develop a system to generate a maze from a text file, put in the mouse and have the mouse find its way out. It of course wasn’t optimized and I used a simple trick of recording the number of times the mouse visited each square and would simply choose the one it had been to the least. I also was able to create a program that would generate a word search from a given list of words. 

At this point I was heading off to Drexel with confidence in my programming abilities and ready to learn more. This was when I hit my first road block. Before this I simply had not considered the scope of a computer science degree. I did well in my programming courses but due to a lack of interest left over from high school calculus, I struggled with my calculus classes. To add to this I had gone through some personal problems and had lost all focus on my career and on growing as a programmer. 

After a year of classes and a semester of trying to find a paid co-op, which I was never successful at, I left Drexel to live at home. I lived at home for a year working for a small company owned by a family friend. I didn’t get to work in actual programming but I was working with computers and got some nice experience working with spreadsheets and exposure to databases through Microsoft Access. But this was all the motivation I needed to know I need to work in actual programming! 

So I enrolled at West Chester University, as a computer science student again, and got much better results. I was able to breeze through the first 2 courses in the track since I had prior knowledge of the material in C++ and just had to learn the syntax in Java. I then got to the good stuff like Data Structures, Computer Architecture, User Interface, Database Management, and finally AI! Of course there were other courses involved both CS and non-CS and I managed to do well in all of them! 

In fact within my first year I had to take a discrete mathematics course and with my previous failings in math (granted Discrete and Calculus are two VERY different beasts) I was nervous about it. I did EXTREMELY well in this class and it encouraged me to pursue a Mathematics minor. This meant Linear Algebra and Calculus 3 (since I had already taken, and barely passed, Calc 1 and 2 at Drexel) as well as some other math electives. Having done so poorly in calculus at Drexel I was understandably nervous about these courses, particularly Calc 3 since it had been 2+ years since I took Calc 2.

So I bought an extra Calculus helper book and I studied for that class rigorously and it all paid off! 

I am now just a few weeks away from graduating with a 3.7 GPA, magna cum laude, and couldn’t be happier. I have grown my programming knowledge so much in my time at West Chester both in and out of the classroom. During my time at school I was an intern for the Web Team. That is where I got my true exposure to web development and learned HTML better than I thought I ever could. I also was introduced to ASP technology using VBScript which I was able to learn even more about in my current internship at QVC. 

As well as working experience I have begun to explore game development as well. This has been a particularly rewarding endeavor for me! I first wanted to learn about game programming immediately after leaving Drexel. Unfortunately I tried and failed miserably. There were several factors to this including lack of necessary knowledge and lack of motivation to learn it just for the sake of learning it. However, recently I was able to get back into game programming and have successfully completed my first game (well almost completed), a simple Pong clone in XNA 3.0. 

So that is how I got where I am now. Where I will be going in the future…

No comments:

Post a Comment