Thursday, March 22, 2012

Transformers

You know the transformers, the alien robots called Autobots and Decepticons from the planet of Cybetron that fight each other in an epic battle that will determine the fate of the Earth? My son is a fan. He loves watching a giant robot transform into a truck and then into an airplane. The idea that the things he loves---trucks, robots, planes---share a common essence and can morph from one to another must be appealing to him.

My daughter, on the other hand, is not a big transformers fan. She will play with them sometimes if she is really bored, but not very much. Her favorite game is something else. It is not a particular game actually, but a style of play. She likes "make believe", she likes to pretend to be somebody else. Recently, she is really into pretending to be a teacher and teaching my son how to read (my son will look like a genius in kindergarden thanks to her). Her other pretend game favorites are being a pastry chef and a pop singer.

Sometimes while watching my kids, my brain inadvertently switches from the father mode to the computer scientist/academician mode. I look at them and think, there is something common to a lot of their play. It seems like they are fascinated by transformation! Maybe this is a genetic condition, because I am also fascinated my transformation. In fact, that is what I work on---I study the most successful transformers of all time. But I do not call them transformers, I call them computers.

Yes, that is what computers are, transformers. Computers can transform to many things: a music player, a phone, a typewriter, a chess game, a TV---too many to name. In fact, computers have been so successful in transforming into things, in many cases they completely eliminated the devices that they transform into. I am sure hundred years from now a well educated adult will ask the following question while reading an early 20th century novel "What exactly is a typewriter?"

Their ability to transform is the reason I find computers exciting. Using a computer is like driving a transformer truck. Actually, if you are a computer person (also known as a programmer) it is even more exciting than that. It is like driving a transformer truck that you also know how to transform to new things.

The "ability to transform to something" is the most essential quality of computers. In fact one could argue that we should call all the things that have "the ability to transform to something" computers. So, by this reasoning the Transformers and my daughter are also computers! And, yes, I believe in a way they are. I have a rather inclusive view of computing. You might say "Well everything changes in one way or another and transforms, so do you mean everything is a computer?" No, that is not what I mean. The "ability to transform to something" is not the same thing as changing in time.

If that sounds cryptic, here is what I mean. The "ability to transform to something" is interesting because it means that the computer is able to transform to many things, not just one thing. Actually, it is more than that. The "something" in the "ability to transform to something" is the input of the transformation process. The computer takes this input and transforms based on that input. I tell the computer, "Here is 'something', go ahead and become that," and it does it.

How does it do it? Well, the "something" that is the input to the transformation is actually a set of instructions explaining to the computer how to transform itself. This set of instructions is called "a program" (or sometimes "code"). It is like an instruction manual for a transformation. Each transformation has its own instruction manual.

Writing these instruction manuals could be a lot of work. In order to transform a computer to a typewriter, you need to tell it everything about being a typewriter in the transformation instruction manual. Here is the good news. If someone writes an instruction manual for transforming a computer to a typewriter, you do not need to write it again. You can ask that person if you can get a copy of the transformation instruction manual, and if you get it, then you can use it to transform your computer to a typewriter. The transformation instruction manual just has to be written once by somebody and then it can be reused by anybody who has a copy.

In computer science, we call the process of writing the instruction manual for a transformation "programming". When you need to transform the computer to something new, you tell the computer to read the instruction manual for that transformation (also known as executing or running a program) and the computer becomes the thing you want it to be.

Programming is telling the computer what you want it to be. It is a pretty powerful skill and it is definitely fun. It requires creativity, imagination and attention to detail. You think about what exactly you want the computer to become. You think about every little detail, how it should look, how it should behave, how it should interact with its environment. Then you write the instructions: the program. And then when you execute the program, the computer becomes the thing you told it to become. You create something by pure thought. You tell the computer to become a typewriter and it becomes one.

At this point you might be getting a little suspicious about my reasoning. You might say "That is not exactly right because to be a typewriter the computer needs a keyboard, and it could not have become a typewriter if it did not have a keyboard." Not true. When you look at an iPad you do not see a keyboard, but when you tell it to transform itself to become a typewriter, all of a sudden a keyboard appears on the screen. Then, you might say "Well, that works because Apple figured out how to make a touch screen that actually works, if the screen was not touch sensitive then it would not have worked." Yes, that is true. There is a little detail that I avoided so far. When a computer transforms from one thing to another its physical shape does not change like the Transformer robots. The computer's transformation is more like my daughter's transformation when she transforms from being a cute little girl to a pretend teacher, the physical shape does not change but the behavior changes.

Let's call the "ability to transform to something" that I have been discussing programmability. Programmability is the most essential quality of computers (which is why I decided to discuss it first). It is the thing that makes a computer a computer. It is the thing that gives a computer its power. It enables computer to become anything we tell it to become as long as we provide the computer with instructions for how to become that thing.  

But not every part of a computer is trasnformable/programmable. For example, its mechanical features (such as a physical keyboard) are typically not programmable. I say typically, because it is conceivable that one day we will develop the technology to build programmable mechanical devices like the Transformer robots. Maybe the computer keyboard will suddenly transform into a piano keyboard when I ask the computer to become a piano. Alas, typical computers that are built today with our current technology do not have mechanical features that are programmable. The programmable parts of modern day computers are all related to movements of electrons actually, which is a good topic for a future discussion.

Since programmability is so important for computing, it is no surprise that computer scientists spend a lot of time thinking about it. For example, computer scientists thought a lot about how to make programming easier. They have developed languages (many of them!) to write programs in. Mastering one or more of these languages makes you a programmer. Gives you the power to transform the computer to anything you can specify as a program.

I hope that after you read this and go back and google some of the things I mentioned, or post something on your Facebook page about this essay, or send a text message from your smartphone about it, you can look at those devices you use with a fresh pair of eyes knowing that they are transformers. They are transformers that can become infinitely many things, not just what you have been using them for. They just need you to give them the instructions on how to transform.

So, enjoy your transformers---not the ones from Cybetron but the ones from Earth!

Tuesday, March 20, 2012

A Freshman Seminar on Computing

As a professor of computer science I get to teach many courses on computing. I love teaching them because they cover very interesting topics. But they tend to be specialized and technical. Sometimes I feel like I could motivate my students better and get them more excited about computer science if I were to discuss some "big picture" questions about computing. Questions such as: What is the essence of computing? What is its future potential? Unfortunately, one has limited opportunities for integrating such discussions to specialized technical courses. 


So, I decided to offer a freshman seminar! 


The title of the seminar is "What is Computing?" and here is how I describe it:
"Computer technology has produced many impressive gadgets that surround us every day. However, its foundations are still a mystery to many. The purpose of this seminar is to discuss what computing is, with the hope of getting some insights about its essence and its future potential."
The seminar is not exclusively targeting students who plan to get a computer science degree. It is open to everyone who is interested in computing.

I will prepare a post for each topic I plan to discuss in class. I hope to make my posts as readable and as entertaining as I can. No formulas, no graphs, just plain English.

I hope it will be a fun seminar.