CompSci Trek: My Journey into Programming and beyond

Posted by Youssef Moawad on: 08/06/2017, in Computer Science

## Hello!

This will be a much needed break from the relatively intense physics blog posts from before. In this article, I will simply be writing about myself! Specifically, I will be telling you about how I came to start programming and what inspired me to do so. I'm also hoping this will be a much shorter blog post than before so without further ado, let's get started!

Enjoy!

## A little bit about myself

I'll start by telling you a bit about myself and what I'm really up to at the moment in case this is your first time on the website (in which case, welcome!).

I started learning to program when I was 9 and over the following few years, I became fluent in multiple programming languages. In 2012, I started learning about Objective-C and app development and since then, I've published 21 apps to Apple's App Store and so far have just over 40,000 downloads. I now study Computing Science and Physics at the University of Glasgow; going into my third year.

For summer, I'm currently working on my app regarding the Standard Model of particle physics, simply called The Standard Model. I'll provide a link to where you can read more about that, if you'd like, at the end of this post. I'm also planning on updating some of my apps that are already on the store, mainly Matrix Master 2, which is my most downloaded one.

What I'm working on at the moment. The first screenshot is from Matrix Master 2, the matrix calculator app I built. The second is from The Standard Model app, showing a charm quark and its properties.

That sums up the computer science related side of what I'm up to right now. On the other side, I'm also currently learning about Quantum Mechanics over summer and writing about topics that interest me in physics on this blog (mainly the Standard Model).

Right, let's go on!

## Inspirations

I must have been about 4 when I managed to crash the computer my family had at the time. I discovered this amazing thing that computers do that lets you create copies of files. Hush! Don't let anyone know! So I was just sat there, fascinated at the fact that I can so easily create two of the same file until, if I remember correctly, the hard disc filled up completely and the system crashed. That was probably when my curiousity about computers sparked!

### Video Games! (of course)

Some of the first video games that I played were Rise of Nations and Airstrike 3D. This was of course after the default Pinball that used to ship with Windows XP. I definitely think Rise of Nations was one of the most underrated real-time strategy games at the time; everyone was too busy playing Age of Empires and Command and Conquer (which of course I also played). I'd play them for hours on end and eventually, I started wondering how they worked!

Screenshot from Rise of Nations.

Screenshot from Airstrike 3D.

To be completely frank, this was really why I wanted to learn how to program. I wanted to start creating games of my own. As a matter of fact, I eventually started sketching out plans for individual elements of an RTS I had planned. I must have been 7 by then. Sadly I have no clue where those sketches are right now or if I still even have them, but it would be nice to see them again at some point.

## Early Beginnings

An important part of how I started learning to program was certainly my father. Indeed, he was the one to eventually put me on the track to start and I took it from there. My interest in programming started to catch his eye during that time when I started sketching out games I wanted to create.

At the time, and if I remember correctly, Microsoft was publishing courses (mainly articles) aimed at teaching kids about computer science. My father found these and set me up to start reading them.

I still remember the very first computer science article I read to this day. It was about this girl and this robot who were stuck on an island together and had to figure out a way to communicate with each other in order to work together to survive. I would have loved to include a link to that article here in this post, but unfortunately, I was not able to find it. I'm not even sure that it's still out there on the internet.

Sadly however, I only spent a limited time reading through that story, during which I got absolutely bored. I found it to be very mindnumbing, I'm afraid, as it progressed ever so slowly and really had very little to do with programming, which is what I really wanted to know about.

So I stopped there. And for about a year or so, did nothing really about programming.

## Real Beginnings

About a year or so later, it must have been around late 2006, was when I really started learning to program. I got home one day, and there was my father sat at my PC downloading what was back then called Visual C# 2005 Express (pronounced C sharp), in addition to this video course that was made by Microsoft. Now it was quite important that this course was in video format, as it meant that this was much more engaging than simply articles. It certainly was that for me at the time. In addition, I think that kind of engagement was part of what got me further excited about programming later on.

Screenshot showing Visual C# 2005 Express Edition, the integrated development environment (IDE) I used to learn programming in C#.

If I recall correctly, there were four different programmes I could have started: Visual C#, Visual Basic, Visual C++ and a Web Development course. I started the first one about Visual C# and began to learn about the C# programming language. I was nine years old then, as mentioned above. C# was a very up and coming language back then and I think it was a very good starting point for me.

C# is, of course, an object-oriented language. However, that video course I was watching back then did not introduce any object-oriented principles, which I think was quite good, for me at least, as that was my very first encounter with any programming whatsoever.

So I wrote my very first line of code that evening, simply printing out "Hello World!" to a console window, which is a very popular phrase in the programming world, and I think I will always remember that moment, much like most people will remember their first line of code.

Console.WriteLine("Hello World!"); // prints out Hello World!

### Side note: Feeling Programming

It's a really powerful feeling, writing your first line of code. You begin to understand just how much you can do with what you've started. And as you go on learning further, this feeling gets amplified and a massive world of possibilities is suddenly open for you to explore, some of which have the potential to really change the world. As you overcome challenges and use that knowledge to build something you thought was missing and that helps people, you're overtaken by this very unique serene feeling. It's absolutely brilliant, to say the least!

That video course was very important as it was not just an introduction to the C# programming language. For me, it was an introduction to the world of programming. I learned the most fundamental programming concepts while watching that course which is a big deal. At least, I will always see it as a big deal. That course put me on track to start thinking like a programmer.

Photo of me back when I was learning about C# in 2007.

Beyond that course, my father really had little intervention in what I was doing programming-wise. I was mature enough by then to be able to find resources on my own and to really take off into this amazing trek!

From there, I progressed fairly slowly while learning C# as I was also juggling school in addition to the plethora of video games I just absolutely had to get through!

After I finished the video course, I acquired this book that was titled Visual C# 2005 Demystified. I will always remember that book as it truly helped solidify the skills I had learned before. I also created my first "kinda sorta might be useful" application after reading it. It had a simple interface that would act as a restaurant menu. You could select the food you wanted through the application and it would calculate the amount of money you would need to pay as you selected food. It was quite simple and as I had not yet been introduced to OOP, it was written in a relatively primitive way. I was still quite proud of it at the time.

Front cover of the book I used after finishing the video course I started with.

In addition to learning it on my own, I used to discuss C# with my cousin, who is actually three years younger than me and is now quite the programmer himself. Through those discussions, I like to think that I set him on the track to learning to program, although he may or may not beg to differ. He eventually learned Visual Basic rather than C# and I recall we used to spend hours arguing about which language is better.

## Beyond C#

In the following years, up to perhaps 2011, I spent my time mastering C# and learning about object-oriented programming. I also picked up a bunch of other languages including Visual Basic and C.

Beyond that, I started turning towards what I can actually do with the skills that I've learned. It felt natural to pick up technologies like HTML, CSS and JavaScript and because things like Codecademy were really starting to catch on as ways to learn about computer science related topics, it was quite easy to do so. And I'm certainly glad I did, as I'm writing this in HTML right now!

It was also quite easy to learn about PHP and Python, which are what is called scripting languages. Those skills would come very handy in the following couple of years as I start to launch apps to the Apple App Store and want to showcase them on the web. I now knew how to start a server and write a website.

## Apple and App Development

There was a very critical point in 2011, without which I may not have been set on the track to start building my own apps at all. That point was actually being introduced to Apple really. I had little to no interest in them before this happened. There was one evening when my family and I were having dinner and my father happened to bring up Siri. Of course, back then, intelligent digital assistants were not as common as they are today and Siri was a big thing. My father described what Siri did and how it worked and I was quite intrigued, to say the least. I went on the Internet and read up more about it and I absolutely had to get my hands on an iPhone 4S (they were the only devices with Siri back then). You can almost say I became slightly obsessed.

Screenshots of the first version of Siri being used on an iPhone 4S running iOS 5.

I eventually did get one and I started playing around with Siri. However, it was not Apple's digital assistant which caught my attention; it was the apps and the App Store that did. Mind you, I do not mean the apps that ship with the phone, but rather the endless possibilities that are opened up through the App Store. I was very enchanted by this and started wondering if I can make something like this myself.

Surely enough, I could! I learned about the Apple Developer Program, a subscription in which would let developers publish their apps on Apple's App Store. Of course, before I could do that, I had to have an app ready to publish. And in order to do that I had to learn Objective-C and about using Xcode.

Shortly after, I got my first MacBook in mid 2012, which made me able to get Xcode and start learning about developing apps for iOS. Now, in addition to having to learn a brand new language, which had quite a different syntax to other languages with which I was more familiar, I had to learn about the framework and software development kits (SDK) that Apple provides to developers. All of this together presented a steep learning curve and it took me while to get to grips with it. However, much like the feeling described above, once I got the hang of it, it was amazing!

It took me about a year from there to have an app ready for release. So in June of 2013, I joined the Apple Developer Program and published iConvertMaster to the App Store. iConvertMaster was a rather simple unit conversion app, but back then, to me it was quite the accomplishment. And, of course, it opened the way for me to advance my app development skills and develop and publish more apps to the store.

Screenshot from iConvertMaster, the first app I released to the App Store.

I released my first game, Hungry the Monkey, to the store in early 2014. Now this is quite important as this brings it full circle to when I was daydreaming about creating my own video games when I was just seven years old. And while Hungry the Monkey is by no means a fully fledged RTS game, it felt quite nice to have achieved that dream of actually building and publishing a game.

Screenshot showing gameplay from Hungry the Monkey, the first game I published.

## Wrapping Up

This was my first post that is not about physics and it was fairly more personal. I covered what inspired me to want to learn to program, how I actually started and some of the steps I took before starting to publish apps to the App Store.

### Closing Remarks

I hope you have enjoyed reading about my programming trek! If you would like to see more of this kind of post or if there's something you'd like done better next time, please do let me know by leaving a comment below or by contacting me through the website. Feel free to also tweet me: @_devdude. Your feedback is very much appreciated and will go a long way to improve the blog.