Get ahead of the game—make your own Android app.


or a lot of people, the hardest part of programming is getting started—especially in high school, where only a few lucky students can take programming classes. How do you do something when you’ve never learned how to do it, right?

Try this: learn on your own!

Here's one model of the software development cycle. Google it to learn more about what it means!

It can be hard at times, especially when you’re already going through hours of school every day. But the rewards are great—imagine being able to make money by selling your app on the market—and it doesn’t take as long as you might think.

In fact, if you dedicate just an hour a day (not even counting weekends) you can have your first basic app done in less than two weeks. And you can have something substantial—a real app with some functionality—in just a few months! Here’s how to get started:

  1. Pick a language and install it. There’s a wide selection of language to choose from, but if you want to make an Android app you ought to install Java. (Before doing so, check if your computer already has it.)
  2. Download an IDE. To make a program, you need a couple things besides the language:  a text editor to write the code (like how you can use notepad or Word to write a paper for school); and a compiler to translate the code you write into “machine code,” the language your computer works in. An “integrated development environment” is something which combines an editor and compiler, and also adds some really handy features to help programmers out. A good IDE can suggest code, help you find bugs (holes in your code that will make a program malfunction), and keep you organized. We recommend using Eclipse because it’s powerful, works well with Java, and is free. Here’s a link to Eclipse’s Java IDE.
  3. An older version of Eclipse, with the Android plugin, running an Android VM.

    Install the Android plugin for Eclipse. Follow the instructions on this page; they’re pretty simple. This plugin gives you a few cool things: first, it adds basic functionality for working with Android apps; second, it has a UI editor, so you can edit the app visually rather than just with code; and third (perhaps coolest) it lets you make a virtual machine. (A virtual machine is just like it sounds: a virtual computer inside your real computer. They’re great for testing programs because they’re conveniently right there on your computer (meaning you don’t even need an actual Android phone!), and no matter how catastrophically your program fails you can clean up the mess by just making a new virtual machine.)

  4. Arguably the best book on beginning Java programming, written by Kathy Sierra and Bert Bates, has plenty of examples and explanations, and is written for someone who isn't an expert yet.

    Learn to code as you do it! The best way to learn is by doing, so having a book (or online tutorial) opened while you program  is the best way to learn how to program! We recommend these books to get you started: Head First Java to learn how to code in Java; and Hello, Android to learn how to program an Android app. If you can’t find those ones, don’t worry! Just check your local libraries for similar books, and don’t forget to check thrift stores like Goodwill or Salvation Army for used copies as well! Follow the examples in your books, and check out Google’s online classes to make some simple apps for practice.

  5. Look for an idea for your own program. If programming is your job, you often have a project assigned to you, but having an idea is at the heart of all self-driven programming. Let the question, “What should I program?” simmer in the back of your mind. When you find a problem in your life that could be solved with a simple app—whether it’s the problem of boredom (make a game), or a new handy way to share photos, or whatever—then you’ve got your idea! Take what you’ve learned and start coding!

Computer science: then and now, Chess computing.


ast week we told you about Alan Turing, one of history’s most notable computer scientists, who would be 100 as of last Saturday. We also gave a brief overview of how times are changing in the world of computer science, and why now’s the greatest time ever to get into the field.

This week, we’re going to show you, rather than just tell you, why that is. In the video below, you can watch Chess grandmaster Gary Kasparov play against Alan Turing’s chess algorithm, Turochamp. At the time, this was a revolutionary algorithm, using groundbreaking concepts to think two steps ahead of the game…

…and it can be beaten in just 16 moves. A big step for computer science
back then, but now we’re way ahead! 

We’re not saying the code isn’t impressive. In fact, Turing didn’t even code it on a computer. It was all coded by hand. (Read more about Turing’s chess algorithm.)

But today, we’ve had Deep Blue and other chess computers which are so intelligent they can beat chess grandmasters. Watch this short, 6 minute documentary on Deep Blue vs Kasparov—the same grandmaster in the video above.

Kasparov later accused IBM of ‘cheating’ by having humans make some
of the moves. That means IBM’s Deep Blue passed the Turing Test for AI.

And this is in just the world of chess. In the 90s. In the almost 20 years since Deep Blue, AI technology has grown into such a big field that MIT offers free online AI classes*, and it’s used in basically every videogame made today—as well as fields like diagnostic medicine.

Artificial intelligence, and therefore computer science, is one of the biggest and fastest growing fields around today. Fast growth means high demand for workers, and good pay. If designing artificial brains and teaching computers to think sounds interesting to you, check out that MIT class linked to above, and see if your high school offers anything like it—and pick a college based on their computer science program!


*The class is over, but the content is still up for people to use.

Programming advice straight from OGPC.


he Oregon Game Project Challenge (OGPC) takes place every year, and we’ve given it coverage in the past. This year, another group called Getting Smart went and interviewed Wilson High School teacher Chris Bartlow, who teaches math and programming in Portland.

Chris said that these three things are really important for good programming:

  1. The first is that students need to work on sizeable projects in teams at some point in their learning
  2. The second is that computer science is really a special kind of problem solving and that the specific programming language didn’t matter all that much, and
  3. Finally you actually need to sit down and use the programming language to learn it (practice to gain proficiency).

So what do these three things mean for you? Let’s look at them in order.

Working on sizeable projects: Obviously taking programming and computer science classes will help, but there’s more to it than that. A one-term programming class probably won’t be long enough for a huge project, similar in scale to what you’d do in the professional world.

That’s why you need to work on your own projects. Working on independent projects, like smartphone games or custom applications, will help you develop the project-management skills you need for life as a professional programmer.

Computer science as problem solving: Because programming is basically the craft of taking a huge problem and breaking it down into little problems, logic and thinking classes will be very useful for you.

Things like IB Theory of Knowledge or, if your school doesn’t offer that, even just regular math classes will help. But you can take it a step further. Hunt down logic puzzles, riddles, mazes, and strategy games and play them nonstop.

Learning a programming language: While they’re a little different since they’re designed to give a computer instructions, programming languages are much the same as real-world languages. After all, they have grammar (syntax) and vocabulary (statements).

What that means is that if you want to get ahead of everyone else, you need to go out of your way to learn new programming statements, and practice using correct programming syntax. So you need to program. A lot. That’s going to help you more than anything. Try to make one new program every week, even if it’s simple. And try to learn something new every time!


These tips come straight from a great programming teacher at Wilson High School, whose team competed at OGPC, so this advice comes backed up by a lot of experience. Get Real recommends you do these as well to become a great programmer. And we also think you should read our ever-growing Teach Yourself Programming series.

Kinect for Halloween scares and beyond

You may have heard some of what we have to say about the Xbox Kinect. It’s a pretty outstanding device for a lot of reasons, one of which is that it allows for awesome pranks like this:

A clever idea, but it might be squandering the Kinect’s potential.

But there’s something going on deeper down that makes the Kinect a truly awesome thing. And it has less to do with it being the Xbox Kinect and more to do with the way it’s being used. Those clever white-hat hackers who have been finding creative ways to use the Kinect have kind of become famous for some of their ideas.

In fact they’ve gotten so famous that Microsoft decided to give the whole thing a name (which also happens to be good for their marketing department): The Kinect Effect.

All of the scenes in this video are depictions of things that people really did.
Check out the Kinect Effect website

It’s really just because the device offers good (if rudimentary) motion tracking at a really low price. Have a listen to this while you keep reading:

Because the Kinect effectively makes motion tracking widespread, it makes it accessible to a lot of places and people which normally would have to have a less-awesome solution to their problem. And you can be one of those people if you have the drive to get into some programming. Check out the official software development kit (Microsoft’s Kinect SDK) as well as the official Kinect projects repository, good places to start if you want to see what’s being done right now.

You can also check out the OpenKinect Google group (OpenKinect is how the hackers played with Kinect before Microsoft released their SDK) for ideas and support, and even the OpenKinect wiki.

Computer Science: The neurons of the future

Human society is often likened to human anatomy. You may have heard someone say that the US interstate highway system is like our own circulatory system. And some people say that the electric power grid is the nervous system.

Not hard to imagine why they call it a 'circulatory system.'

Well that just doesn’t seem right to us. The electric power grid sends power around the country to make things go, and to keep everything functional and moving. Maybe it’s like the muscular system, because it actually does the heavy lifting.

So think about this: though the nervous system might work through electrical signals, its job is to receive data, process it, and send commands to the rest of the body. What do we know in our world which does that?

Short answer: the internet. So if the internet, this giant tunnel of data flying through space, is the nervous system, what constitutes the neurons–those individual pieces which make the internet go?

Computers. Computers transmit data to each other, interact with just about everything these days… and it’s going to interact with even more in the future:

The real future probably won’t be made of little clear glass tablets,
but everything else? Probably.

If you want to work with computers, you have to know the science behind them. That’s the science of programming them, of connecting that one neuron you’re working on to the rest of the nervous system and turning it into a brain. For info on how to get into CS and programming, check out our Teach Yourself Programming series, or just start on Part One.

Computers are our future—Computer Science is yours

As you may have heard, one of the founding fathers of computing technology died recently.

That’s right: Dennis Ritchie, creator of the programming language C and a founding father of UNIX, died at age 70. What, did you think we were talking about someone else? Don’t confuse a computer entrepreneur with a computer scientist. Dennis Ritchie was a computer scientist and a great one at that. Read more about the man known as dmr.

Time goes on, and there’s now even more room for some new names to work their way into the history of computer science. Names of people like you, who have ideas, brains, and an opinion on how they want things to be. There are tons of fields someone with those traits can go into, but consider this:

Is the baby wrong, or are magazines really just broken tablet computers?

It’s both scary and exhilarating to think about the fact that computers are just so intrinsically a part of our lives, that a whole generation of people are going to grow up considering tablet computers the thing, and magazines the spinoff, rather than the other way around. This is what happens when innovation is successful: it becomes the standard.

Network speeds are increasing to the point where we can transfer huge files (for research, of course) in seconds, which makes research, programming and knowledge transfer extremely easy for everyone.

The whole world is changing beneath our feet and, honestly, it’s all wet cement right now. You can get stuck in it because it’s kind of mucky and tough, or you can just try to mold it to your liking—hopefully something you can walk on. Maybe get to work on developing AI for the moon-mining-robot expedition which is sure to happen someday, now that titanium has been discovered on it.

They once were blind but now can touch-screen—Engineering to help the blind ‘see.’

Something like one person for every 250 is blind. It might be small if you’re doing Where’s Waldo, but in the grand scheme of things it’s a pretty significant figure. And every day, the blind have to deal with lame problems like this:

This video is supposed to be funny, but only because comedy is a good way
of bringing attention to something that’s actually not so funny.

Now imagine using a computer. How can it interface with a blind person? There are some solutions out there already, but they’re clunky, not ergonomic, and are expensive. They really only start to chip away at the problem. Think about this: there are now more wireless connections in the US than there are people. What if a blind person wants to use one of those wireless touch-screen phones or tablets? Well, this happens:

If you think about it, this wouldn’t be too difficult to make.
But now that it’s made, the touch-screen world is accessible to
the visually impaired.

All it took was for one engineer to sit down for a minute and spot the real problem, now suddenly a huge problem is solved. Now, that 250th person can use his or her touch-screen phone, and they can get back into the world of wireless communication.