Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Possible Duplicate:
What is the best Java programming book out there for starters?

I am 14 years old and I want to learn computer programming. I've decided to start with Java as I can use it to make an Android App. At my age there are not many resources available so I've been searching around for books and watching video tutorials posted on YouTube.

I desperately want to get to the actual programming and making software but I am finding that learning the basics is very tedious and slow. I am getting bored watching 10 minute tutorials that describe how to create a variable and assign a value to it. On top of this I still have no idea how to actual create a piece of software that actually has a graphical interface.

Can anyone recommend a book or course that is available in the UK that teaches Java and XML

share|improve this question
    
Are you London based? –  Martijn Verburg Aug 30 '11 at 14:24
1  
Programming can be boring, they wouldn't pay us blokes to do it if it were fun. If you are finding that programming doesn't interest you and are more fascinated by GUI's and graphics, then you can look into graphic design and game design. Some of the best games and apps I have ever used were pair projects with one guy programming and the other providing graphics. –  maple_shaft Aug 30 '11 at 14:32
11  
@maple_shaft rubbish. Programming is fun, at least for me and I would expect most people on the site. They pay us to do it because they cant. –  Tom Squires Aug 30 '11 at 15:27
1  
@Tom, Good point, I guess what I meant to say was "Programming CAN be boring (sometimes), they wouldn't pay us blokes to do it if it were fun all the time." –  maple_shaft Aug 30 '11 at 15:49
2  
I am puzzled that "at your age there arent many resources". I've never had a programming book or a tutorial website card me before. On the internet no one knows you are 14. Unless you tell them. –  drxzcl Aug 30 '11 at 19:48
show 2 more comments

marked as duplicate by Mark Trapp Sep 7 '11 at 0:07

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

9 Answers

I would recomend you start with a book. There is a lot of noise on the internet and if your just starting out its hard to filter the good stuff from the bad. Books also tend to be more holistic

The head first series is nice because its much less dry than most text books. Here is also a thread full of other recomendations.

Once you have read up on the basics then have a play and make a pet project. Good luck and have fun!

share|improve this answer
5  
I agree, if you are new to programming, a book is very valuable, and the Head First series is a good solid introduction. –  Eric Wilson Aug 30 '11 at 13:54
1  
android development is quite far away, though, don't try to skip steps... btw I'm also 14, but, I've been programming since I was 9. –  Dhaivat Pandya Aug 30 '11 at 16:24
    
+1 for the Head First Series –  mclark1129 Aug 30 '11 at 16:42
add comment

The Oracle tutorials are good, you can start here:

http://download.oracle.com/javase/tutorial/getStarted/index.html

I would recommend getting somewhat proficient with Java before adding the complexity of programming for Android.

share|improve this answer
    
The Oracle tutorials? Could have sworn I saw the exact same thing someplace else not too long ago. I really like them too though. –  Captain Giraffe Aug 30 '11 at 18:10
    
Yes, I still think of them as the Sun tutorials, with a friendlier color scheme. But Oracle has totally reworked Sun's badly broken JDBC tutorial, so credit where due. –  Eric Wilson Aug 30 '11 at 20:00
add comment

The initial learning curve is the hardest to overcome. It takes patience and time. Building a basic GUI is taught in the second semester of Java at universities. Don't get too caught up in graphical interfaces as there is plenty more to programming than the look of an application.

I recommend you start by planning something simple that you can build. This way you learn the tools with a goal of having a finished product. For example, you can build a calculator that adds two numbers. Try not to get too fancy by adding much more than that.

As far as books I enjoy

http://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208/ref=sr_1_1?ie=UTF8&qid=1314712276&sr=8-1

Finally, spend at least a semester (3 months) learning to code without a GUI. I mean intense studying, at least 10-20 hrs a week. This is how it works in college.

share|improve this answer
add comment

To add to the HF answers, there is also www.coderanch.com (which is a forum site aimed at beginners) which was in part founded by Kathy Sierra (Paul Wheaton is largely responsible) and still has Bert Bates moderating there. Disclaimer: I'm a mod there.

share|improve this answer
add comment

If you plan to actually become a programmer (and not necessarily only write some Android apps) I would also recommend getting started on a book/course covering the basics of programming (e.g., variables, loops, algorithms, recursion, data structures, etc), regardless of the language of said book/course.

I recommend "Introduction to Computer Science and Programming" from the MIT Open Curseware -> http://academicearth.org/courses/introduction-to-computer-science-and-programming

The material is solid (though it will require some effort from your part).

share|improve this answer
add comment

I started coding in my late 20s with no prior experience of programming anything. My path was like this:

Idiot's Guide to Java -> Sam's Teach Yourself J. in 21 Days -> Java: How to Program (Dietel & Dietel) -> Java The Complete Reference.

Along with various web resources including:

The Java API Reference (it was hosted at java.sun.com in my day) Bruce Eckel's Thinking in Java

I've been a developer for well over a decade now and I have encountered many geek-snobs who look down their noses at the Idiots and Sam's series. To them I say 'Nonsense'. IMO they're perfect for getting a jargon and b.s-free introduction to a complex subject.

I code C# nowadays, but I still have them on my shelf and regard them with much affection.

Once you've picked up Java (and I don't mean to make this bit sound trivial), learning Android is a case of learning about its libraries, not about learning an object-orientated programming language (which is the hardest and most important bit).

HTH. Good luck with it.

share|improve this answer
add comment

I am a java programmer who also programs for android. The way I learned was by going through books. The way I learned java was by reading two separate books. The first was Beginning Programming with Java For Dummies, this book was great, and without it, I wouldn't have been able to understand the fundamentals of java, every other book seemed to complicated at the time (and / or long and tedius / boring). Beginning Programming with Java For Dummies on the other hand makes things appear simple, while keeping humor in it, so you don't get too board. The only thing is that it only teaches the fundamentals. The second book I read was Sams Teach Yourself Java in 24 Hours. This book was amazing. It might as well have been a "sequel" to Beginning Programming with Java For Dummies, it takes what you know from that, and expands it so that you can understand much more of the java syntax (like the whole idea of GUIs, it is only slightly touched on in Beginning Programming with Java For Dummies, but it goes into detail with Sams Teach Yourself Java in 24 Hours.) In terms of android, I would recommend Android Application Development For Dummies. That one you have to learn last, but in terms of XML, Android Application Development For Dummies teaches you as you go through it (because the android layout is written in XML), It's not as hard as it seems. Those books are how I learned, to get into more complicated things, the best way is just to use the knowledge you learned from them, and just give yourself a programming project to do. for the little details, search google.

share|improve this answer
add comment

This may be completely irrelevant given your age, but here it is for what it's worth. The first job where I used Java, I had been hired for other skills and drifted into Java as the company's needs changed. The important thing is that I had the very great good luck to be working among people who knew it a heck of a lot better than I did, people who had followed the language's design process, kept up with developments, knew about design patterns, got interested in some new ideas (at the time, that was extreme programming), etc.

If you can manage to create a situation like that for yourself and get a chance to learn from such folks, it will be of enormous benefit.

And as others have mentioned, the Head First books are very good.

share|improve this answer
add comment

If you are keen to make something that works quickly, you can try running through the Android Hello World tutorial:

It might take a bit of work to get the environment set up (Eclipse + Android SDK) but the Java code itself for the Android "Hello World" is very simple as follows:

package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloAndroid extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       TextView tv = new TextView(this);
       tv.setText("Hello, Android");
       setContentView(tv);
   }
}

Note that most of the lines are just used to pull in the necessary components from the framework so you don't need to pay much attention to them initially - the only lines which actually do anything are the three at the bottom which:

  • Create a new TextView
  • Set the text on the TextView
  • Display the TextView as the main content of the app

When I taught myself programming many many years ago, I did it by getting something simple working and then experimenting with it..... back then it was simple games in Atari 800XL BASIC but you might as well start with an Android App :-)

share|improve this answer
1  
That would add an additional complexity of how the Android OS works, and may obfuscate the basic OO principles and techniques used in standard Java programming. It may also be difficult for a beginner to differentiate Android-specific objects from those in the standard Java framework. –  mclark1129 Aug 30 '11 at 16:27
2  
This will give you half-assed understanding of everything. Don't do it. –  Dhaivat Pandya Aug 30 '11 at 16:28
1  
@mclark1129/Dhaivat - I think it is important to start interacting with a real, working program if you want to learn. Whether that is in Android or a REPL or a Swing GUI doesn't make much difference IMHO. You need to see real code, and see what happens when you change it..... that's the right way to learn at the start, not worry too much about "OO principles and techniques" –  mikera Aug 30 '11 at 16:46
    
"Hello Android" is no more of a real program than "Hello World" as a console app. The only difference is that 90% of the code you posted is Android-specific and does not go a long way towards learning Java in general. While I agree that hands on experience is just as if not more important than learning concepts in a book or class, beginning within a context of a framework built on top of the actual technology you are trying to learn typically will not help you build the fundamentals to actually be any good. –  mclark1129 Aug 30 '11 at 18:42
1  
I vote up for Android. The question was from person bored with GUI-less coding, asking if there is some single consistent high quality way to learn Java. The Android Java package footprint is one nice very restricted environment with zero risk of contaminating the knowlege with unnecessary junk. Google spent billions to make it very clean. –  user7071 Aug 30 '11 at 20:09
show 1 more comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.