Who am I?
Philosophical implications aside, my name is Corey Pennycuff, and I am an addict... to Computer Science! I just finished my Masters in CS and am on my way to getting a PhD (hopefully!) at the University of Notre Dame. I love CS, I love sharing my excitement about CS with others, and I plan to teach in a University some day.
You can contact me through the Contact page of this website.
- MS in Computer Science, Midwestern State University, Wichita Falls, TX. Graduated Fall 2012, 3.91 GPA.
- BMus in Piano Performance, Midwestern State University, Wichita Falls, TX. Graduated Fall 2011, 3.97 GPA, President's Medal recipient.
- Drupal. I have been a Drupal developer and active in the Drupal community for over 7 years. I have spoken at meetups and conferences about Drupal and I put myself through college as a Drupal freelancer.
- Android. Freedom... what better word can be used to describe Android programming of mobile devices? No, it's not perfect, but I love the flexibility that I find as I delve deeper into the Android APIs.
- AndEngine. A 2D game engine for Android. I found this little gem when trying to design a lawn irrigation CAD system in my software engineering class, and I love it. It's not documented as well as I would hope, but real programmers don't need documentation, they read code in real time!
As far as general Computer Science topics go, it would be hard to pick a subject that I do not like. Everything has interesting problems that are begging for exploration and research. If I had to enumerate a few, I think it would be these:
- Algorithms. You do not truly understand what is happening in a system unless you understand the underlying algorithms. Furthermore, if you do not know about existing algorithms then you will spend half of your time re-inventing the wheel instead of doing proper research! Algorithms are the meat of Computer Science, and they are a powerful tool in every part of programming. I love studying and developing algorithms!
- Artificial Intelligence. Computers are not smart, but they can definitely put on a good front (like politicians). That being said, AI is fascinating, from issues such as Emergence to Natural Language Processing, from Learning to Creativity. The possibilities of AI are staggering, and the benefits (or dangers) have yet to be fully realized.
- Bioinformatics. The integration of the digital and the organic is wondrous to contemplate. From modeling and understanding how diseases spread to interfacing a living organism with an electronic circuit, bioinformatics is filled with amazing possibilities.
- Concurrency and Distributed systems. From simple semaphores in a multi-threaded environment, to complex clusters of systems, the issues surrounding concurrency and shared resources is as interesting as it is immediate to today's world.
- Graphics. Both in generation and in processing, the field of computer graphics is filled with new challenges and problems to solve, especially as computing power grows and users demand more from the field.
A bit of background
I began programming in Junior High, only I didn't know that it was programming. It was BASIC on an old Apple IIe that we had in a keyboarding class. I remember the teacher told us that we could give the computer instructions and showed us a few. I thought it was cool and so I checked out a book from the library and wrote a program to help study for the final exam. We didn't have a computer at home, so I wrote the program out in paper, complete with line numbers. I remember how I felt when I typed the program in at school and it actually worked!
I forgot about programming until High School. By then, we had an old 386SX, 33mhz and 120 meg hard drive which the person we bought it from told us that we would never fill up. I was in a general computer class that taught us how to use Word, and the teacher saw that I caught on quickly and then would help the others when they had problems. One day, she gave me a big yellow box and said "Corey, I don't know much about this, but you might be able to use it." It was a Borland Turbo Pascal compiler. The library didn't have any books about Pascal, so all that I had was the function reference book that came with it. Each function had a few lines of example code, and it is from this that I learned how to read and understand code. I learned object-oriented concepts and pointers, and I delved into Assembly in order to write faster graphics routines. I liked word searches, so I wrote a program to generate them and print them out on the tractor-feed printer. Later that year, I wrote a self-contained database of customers for a local company using my own doubly-linked lists and text files.
After high school, I kind of forgot about programming. I was studying for religious work and was learning how to play the piano (on my own because I could not afford lessons). I figured out how improvisation worked based on chords (which I had learned in band in high school) and used my piano playing in church. I was also on staff at several churches. Since the Internet was growing in popularity and everyone had a website, I began to create websites for churches, and discovered PHP. To my surprise, aside from the syntax difference, the basic concepts were the same. I tried several different CMSes, but when I found Drupal, the elegance of the structure called to me, and I began writing modules and helping in the forums.
I decided to pursue a music degree, thinking that I would be working in churches, but I found that I couldn't make a living playing the piano. I could, however, get paid for doing freelance work with Drupal, and so that is what I did. Eventually, I was also able to work remotely for a company in Dallas for two and one half years, which is where I learned important programming skills such as Agile development and CVS management with SVN and Git. I finished my music degree, but since I did so much work with computers and I loved it, I decided to pursue a Master's in Computer Science. I began doing the leveling classes as I finished my Bachelor's, and had several CS Graduate-level classes done when I finished the music degree. I was able to finish my Master's degree exactly one year later, with the support and encouragement of my family and friends.
I am thankful that, despite the stress and busy schedule, my programming jobs allowed me to graduate with both my Bachelor's and my Master's degrees without any student loans.
Computer Science is a true love of mine, and I do hope to teach one day. This blog is part of that, for it is where I plan to share some of the tricks and discoveries that I make as I work and prepare for a PhD. Hopefully you, too, will find it helpful as you enjoy the marvelous world of Computer Science!