Tuesday, April 28, 2009

Now What

So here I am about to graduate from West Chester University with a Bachelors of Science in Computer Science. I am also on the job hunt as my internship with QVC is about to end. So where do I go from here… 

Well that’s a good question. I am sending out my resume to any positions I feel qualified and interested in. I have been focusing on software or web development and would love to get a government position or something in security or defense. These of course would be leaning towards ideal positions, but in these times beggars can’t be choosers as the saying goes. So far I have sent my resume to 7 different companies the past 2 weeks and have heard back from one.

So what am I doing to help myself get a job? Another good question and one that I have considered extensively. For starters I wanted to be sure that my resume was up to par. I have had it reviewed by professionals and made sure that I have many activities to include. My resume is rather strong with a strong education (GPA), significant list of skills, independent work, internships, tutoring experience, and awards. In fact there were enough things to list that I can easily go over one full page, so that I have to selectively choose what portions to include to which job applications. 

I know that just a list of my qualifications may not be enough to lift me over the other candidates though and so I am still pursuing some independent work. For starters my work with game development has allowed me to add C# to my list of skills as well as provide with a demonstrable product (well almost there!). I also am creating my own website to showcase some of my abilities and design methods. It also is a great place to host any demo projects that I may have created in C++, Java, or XNA (C#). 

My other pursuit is in the mobile development field. I feel that this field will be growing very large, and in fact has already started. I feel that ultimately with the expanding use of smart phones and netbooks, the call for programmers able to work with mobile devices will increase as well. So I am interested in developing for the Blackberry (since I need MacOSX for iPhone). As well as possibly learning to develop for Android. Though Android still has yet to really take off, the experience of learning at least two different methods of mobile development will be beneficial to me. And of course this can add to my list of demos! 

My list of current/short term projects: 

-          Finish a polished pong game

-          Create a Tetris clone

-          Create my first original idea game (already have some design done)

-          Learn to program in python

-          Learn to develop for the blackberry

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…