I have absolutely no programming experience but need to learn Java - enough to take a J2ME fasttrack course. I only have 10 weeks. Can I do this? What's your advice about the best resources I can use ?(currently using Sun's Java Tutorials).
The main question is whether you've done any programming in the past since that may be the main effort. I would suspect that if you had not, you could get by but not necessarily do well. You indicate that you didn't have any programming experience, so this is where you are going to have most problems and spend most of your time. Java would not necessarily be faster or slower to learn than other similar languages.
Sun's Java tutorials are great, but unfortunately programming is one of the things where practice is necessary, and that depends on your free time. It's also necessary to stop and practice frequently rather than after reading half a book. If you devoted 10 weeks full time to it - yes, it's quite doable for some people. After all, college students become passable developers in one academic year where they take other unrelated courses.
I would focus on figuring out Java fully first without trying for J2ME. Then you can make the switch.
In addition, realize that there's a big difference between the language and the standard library. The important thing is to learn the language. There are certain standard library calls that everyone uses and are critical to learn, but they're not part of the language. However, you'll never really know the entire library (Though you'll learn from exprience). It's more important to learn how to find the functionality that you're looking for then to know exactly what it is or where to find it. The important thing is to avoid reinventing the wheel.
Also, realize that you may only be a passable developer at the end. Experience takes time and often can't be hastened.
In addition, even if you learn to program you will miss some of the critical general CS knowledge like data structures and algorithms. Programming books rarely teach that, you will have to learn that yourself (see, for example, the TopCoder tutorials).
I don't see why you couldn't do it. I am a book person, so pick a book and run through it. Set up some small projects and finish them. 10 weeks is longer then I usually get to learn a new language.
Have fun and hope you learn a lot.
I would post the books I learned java with but they are at home and I ain't.
It depends on how hard you want to work, but yes it's possible. The problem you are going to have is that you have to learn to program along with learning java. These are two very different things. Programming is knowing how to read and write logic and Java is a language you write it in. If you have a math or physics background, this is going to be a lot easier, as you are already exposed to thinking in such a manner.
If you don't have books on beginning Java I would go buy one of those.
I would also pick up the book Code (I would try and get through this in a few days, if not over the weekend if possible). Actually with 10 weeks I would do this first as it will be a foundation for what you'll need to know to program Java.
With 10 weeks, you are going to have to pretty much study every night to get the hang of it by the time you go to class. My best advice is that when you take the class, take lots of notes, and don't expect to understand everything. Most of what gets thrown at you there will probably go over your head at first and you'll forget. That's ok. After the class if over, go back and review the notes etc until it starts to make sense.
Doable, yes. But you'd missing out on a lot of theory behind programming so even though you may know the language well enough to code in it, you won't know how to program well. I'd suggest picking up a few beginner's books on object oriented design while you're at it. The best (for me at least) teaching and helping tools for a new language are tutorials and forums like this (don't forget to google first though, there are a lot of beginner questions answered with a simple search).
Good luck!
The main problem you're having is that you're learning programming for the first time with Java and I think Java isn't the best language to start.
I suppose that you're addressing a work project, Is this the case? That pressure might make things worse. Depending on how complex the project is you might success but learning Java in 10 weeks without background knowledge is another issue.
You can definitely get a good understanding of Java in 10 weeks, but as mentioned before, practice makes perfect (or at least better...). A couple of starting places:
The Java API will be your friend: http://java.sun.com/j2se/1.5.0/docs/api/
Java has a lot of built-in functionality so try not to duplicate it (String functions and whatnot).
Also, an IDE might make some things a little more complicated, but it'll also help you find your way around the API. Eclipse is a good place to start (and it's free) http://www.eclipse.org/
Hope that helps a little..
Can you learn to draw, sculpt, or paint in ten weeks? Anyone can learn to punch the keys to program, just as anyone can pick up a brush, but it takes time and talent to cultivate the artistry to develop. Do yourself a favor and put the time and effort in to learning, not cramming. The lessons you learn by a concerted effort to know how to develop will serve you much better than binging on it to meet some arbitrary date.
10 weeks? Apparently you can do it in 24 hours!
http://www.amazon.com/Sams-Teach-Yourself-Programming-Hours/dp/0672328445
EDIT:
Okay, so only 1 person found my answer amusing, but not amusing enough to upvote. The real question is how good do you need to be in 10 weeks?
If you get yourself a good book (the one linked above has some good reviews on Amazon), then in 10 weeks you might be proficient enough to do something useful in Java, but it takes years to become expert. Any time spent between 10 weeks and several years will move you from beginner towards expert.
Oh and read Teach Yourself Programming in Ten Years.
Learning to program for the first time is kind of like learning a foreign language. You will easily be able to recreate the phrases you are taught, but you will lack the understanding of the context for why it is done that way, and will thus be unable to solve new problems effectively. It simply takes time.
If you're a first-time programmer, I really can't recommend Java. Python would be much better (disclaimer: Python fan-boy, but for good reasons).
However, I don't think a beginner could do much better than Head First Java
I can sympathise... having once been in a similar predicament, though I did at least have some background. I concur with @ShawnMilo regarding Head Fist Java. Also recommend Sams Teach Yourself Java in 21 Days and, given that you say you have no programming background, I strongly urge you to look at The Oject Oriented Thought Process by Matt Weisfeld. I also concur with all the people on this thread who say that there's WAY more to programming than 'simply' learning one language (especially if it's Java). Having said that, good luck and god speed.
PS I'd +1 @Patrick McDonald for sense of humour, but I don't have enough rep!
PPS And another virtual +1 for @Robin. I was wondering when the Four Yorkshiremen would get in on this thread...
Okay, there are a lot of people here saying, "yes" and "yes, but it will be hard" so I'll differ.
No.
The problem isn't "learning Java" in 10 weeks, because I think that by the time 10 weeks is up, you'll be able to program some things and have an idea of what to do to solve some simple things.
But that won't make you ready for a J2ME fast track course. Fast track courses tend to be for people that have a strong background in the prerequisites. You might be able to do many of the things as you are going along, but without the background to understand the why of what you're doing, it will seem like a lot of semi-random things to memorize by rote, and will likely quickly vanish.
Basically, I think it just takes time: time to let lessons sink in, time to experiment and fail a few times so that the why suddenly jumps out at you...
Ultimately, I suspect that you could get through it, but that you would not end up being very proficent at all. (the final two paragraphs of Uri's post say it all.)
I don't want to be a complete downer, and I definitely hope you do well and succeed...but I would hate to bet money on it.
(Understand, I don't know you from Adam...so I'm making statements based on my experience with how it was for me, and people I've worked with...so this isn't a slight against you...just an observation that this is a very big meal you're setting down to eat.)
OK, based on some of the previous answers, I am expecting to get downvoted for this, but, I think you are delusional to think you can learn, on your own, how to program in Java in 10 weeks with no programming background. No person, with NO programming experience, other than some sort of prodigy, is going to learn to program in Java or almost any language in 10 weeks.
For clarity, copying and running hello world from a book does not make you a programmer. Hell, it will most likely take days just to get that working in some IDE.
Now, can you study and potentially pass some test? Maybe, but that depends on the depth and format of the test.
If I asked if I could become a doctor in 10 weeks, I would get laughed at for asking, so I am somewhat surprised at the answers that indicate that it is somewhat possible. I can stick a bandaid on my daughter now, but it hardly makes me a medical professional, it just means I managed their version of hello world.
I'm computer science student who just finished my first Java course.. I'd say it's possible to learn Java on 10 weeks if you hard work on it. But you'll only get an intro! Programming is much more than just knowing the language (API, syntax etc)..
Best Java book ever: http://www.amazon.com/Introduction-Java-Programming-Comprehensive-Version/dp/0136012671/ref=sr_1_1?ie=UTF8&s=books&qid=1242328533&sr=8-1
For java, you also need to learn how to use an IDE and setup your environment and this kind of this to make java works...
Then for J2ME, you'll need to know things about embedded/mobile systems....
10 weeks with the tutorials would be ok but it also depends on what you're going to do in your j2me course...
I would go head first in a j2me tutorial (assuming you know a minimum concerning variables functions and OO)...
good luck...
The best advice for learning to program is basically: write a lot of programs.
Project Euler contains lots of problems well suited for this purpose, as the resulting programs are manageable in size while actually allowing you to solve an explicit problem.
I worked with some self-taught programmers who read stuff like "learn javascript in 0.01 days". Everyday was worth it's share of thedailywtf.com.
Besides, at a job inteview you get asked "how much javascript experience do you have?", your answer "0.01 days".
so good luck but I hope our path won't cross before a few more years
My experience in Java programming for beginner is not difficult to learn; however it is really depended on how your object-oriented programming skills are. As you posed that you had no programming experience , I guess that I recommend a web site, http://www.exampledepot.com/ , and type any java keyword such as Swing, FileInputStream, it provides a lot of practical examples that you can apply into a project.
Please, buy a java book (Sams'java 6 in 24 hours) as reference. It will give you really basic skills for java within a short time. and I sure you will have enough time to learn about the java and J2ME within 10 weeks. Good Luck.
Tiger
As others have mentioned, 10 weeks ought to be enough if you have a computer programming background.
Closer to 6-8 weeks, if you're Jeff Atwood.
I have to say that you are taking on a lot in just 10 weeks, I just finished a semester of Java programming at Indiana University Southeast, and I don't think I have begun to scratch the surface yet. Java is a very strict language in that its syntax is very tough to get a handle on if you have no programming experience at all. I will offer these pieces of advice go to www.bluej.org and down load there, Java compiler it is said to be the easiest to work with and that most college's use this. It is also, what we learned on and from what I know now I can say, they are right. Java is an object oriented language, and Bluej gives you a great understanding of objects. They also show you how to design, classes, methods, array, array list, hash maps, all of that is on this site and it is free. I hope this helps and good luck with your challange.
I wouldn't say I had "no programming experience" but prior to learning J2ME, most of what I'd done was in assembler more than 10 years prior.
I skipped learning "JAVA" and learned J2ME, which appears to be a small subset of java. It's small enough (if you ignore the extensions) that it's very digestable and easily explained in a moderately sized book. From that standpoint, it was a little bit like assembler (somewhat limited amount of stuff to know) although I did need to learn about OOP.
I bought a few J2ME books, but the one I found most helpful was: "Programming Wireless Devices with the Java 2 Platform" by Riggs, et al.
I don't recall exactly how long it took me, but I'm pretty sure I was writting deployable code (it was a mobile time sheet application) in 12 weeks or so.
There are different schools of thought regarding how much time you need to become expert in programming. I'm not going to add to it. I suggest if you have absolutely no programming experience, learn C first. Then move to Java. The following site is very good for learning java. http://www.javapassion.com
I teach Java Programming at a high school, and our course runs 14 weeks. This is enough time to give students a solid foundation in object oriented programming, but students are not experienced enough to develop and large projects or anything too complicated.
Many schools use the textbook by Lambert & Osbborne:
Lambert, K. & Osborne, M. Fundamentals of Java: AP Computer Science Essentials for the AP Exam. 3rd ed. 2006. Thomson Course Technology.