File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Bunkhouse Porch and the fly likes Need a beginner's Java book for my girlfriend Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Books » Bunkhouse Porch
Bookmark "Need a beginner Watch "Need a beginner New topic

Need a beginner's Java book for my girlfriend

Jeremy Figgins

Joined: Sep 08, 2010
Posts: 2
I've finally convinced my girlfriend that learning to program is an essential skill for getting a good job. Personally, I have done a lot of work with a lot of languages and I think that Java offers enough features (OO for one) and prevents enough headaches (pointers!) that it makes a good starter language.

Now, I'd like to find a book for her to use as a tutorial, but I haven't found any that meet what I'm looking for. The ideal book would be:

-For true beginners. There should be no expectation of understanding even what a language or a compiler is. A book that starts with basic definitions and builds up would be great. She was asking me the other day about the difference between code, programs, and applications, if that gives you any idea.
-Actually useful. I've looked at the "For Dummies" books in the past and they seem a bit shallow. I don't think that even if you followed a For Dummies from cover to cover that you would really understand programming.
-Purely Object Oriented. I've seen a few books that introduce languages like C++ and Java with a functional approach and then a OO approach. For her purposes, OO is ideal and if she never has to learn what the "static" keyword is for, then great.
Anayonkar Shivalkar

Joined: Dec 08, 2010
Posts: 1545

Hi Jeremy,

Welcome to CodeRanch!

Frankly, it is difficult to learn programming AND OO concepts AND Java from a single book. For a beginner with absolutely no background, I would suggest below books:
1) Head First Programming (Griffiths et. al.)
2) Head First Object-Oriented Analysis and Design (McLaughlin et. al.)
3) Head First Java (Sierra et. al.)

Most importantly, programming is like mathematics. We learn concepts by reading book, but we become good at it only by solving problems.

On another note, someday, she'll have to learn what 'static' keyword is for

I hope this helps.

Anayonkar Shivalkar (SCJP, SCWCD, OCMJD, OCEEJBD)
Jayesh A Lalwani
Saloon Keeper

Joined: Jan 17, 2008
Posts: 2746

I tried to teach my girlfriend how to code. She wasn't my girlfriend for too long after that.

Tread lightly my friend. Not everyone can code. It doesn't matter how smart they are.
Campbell Ritchie

Joined: Oct 13, 2005
Posts: 46397
Welcome to the Ranch

Agree with the suggestions about the Head First books. The Sierra and Bates book (Head First Java) is a bit out of date, but not seriously so. You know about our books pages, I presume.

But take Jayesh’s warning to heart; it would be like teaching her to drive. You might find you have swapped your girlfriend for a book
chris webster

Joined: Mar 01, 2009
Posts: 2292

Are you sure this is a good idea? It sounds kind of like it's your idea that your girlfriend should learn to program, not hers. And have you considered giving her an easier route in by starting with Python instead? It's widely taught as a first programming language in schools, universities and even big tech companies like Google. It's object oriented, but it's dynamically typed and interpreted, so the syntax is much easier to get started with and you don't have to worry about dealing with compilers etc. There are huge numbers of high quality libraries available for Python, so you can do pretty much anything with it, and it's widely used in science, industry and commerce - I'm seeing more and more Python jobs coming up in the financial sector for example.

Because of its popularity as a learner's language, there are lots of books and free learning materials for Python. Here's just a few examples:

  • Think Python - free online edition of a well-known introductory book on Python.
  • Hello World! - a fun book "written in language a 12-year-old can follow, but anyone who wants to learn how to program a computer can use it. Even adults."
  • Head First Python - a great introduction to Python that covers a lot of ground in the distinctive Head First style.
  • Google's Python class - based on Google's introductory Python course for its own staff.
  • Udacity Intro to Computer Science - free online course for beginners using Python to teach CS basics.
  • Coursera Introduction to Interactive Python - this free online course has already started but you can still follow along and do the exercises etc.
  • O'Reilly Python Programming 1 - not free (costs about $500), but a very good, well-structured course with lots of practical work and your own tutor to provide feedback and answer questions.

  • FWIW, I think Python is a much better language for learners than Java, while still allowing you to acquire solid programming skills that can be applied in the real world. It allows you to make things happen quickly, tinker with your code in a REPL-like environment, and develop your skills in OO programming without all the cruft associated with Java. If you already know Python, then you're in an ideal position to help her - and if you don't know Python, it will probably be more fun for you both to be learning together (and share the pain ).

    You're taking on quite a challenge here. Lots of very clever people simply don't get programming, and lots of clever people can't teach the stuff they know either (teaching is just as specialised a skill as programming), so you'll need to tread carefully and look out for positive ways to help your girlfriend work through the difficulties. But if she enjoys writing her first few programs in Python, as many people do because it's so easy to get started, then she's more likely to want to continue. Eventually, she may want to apply her OO Python knowledge in learning Java, or she may want to leapfrog Java and use her dynamic Python knowledge to get into the cool new dynamic languages on the JVM platform - she may even end up ahead of you on the tech adoption curve! If she decides not to take it further, she'll still have learned the basics of a useful programming language that can be used very easily for all kinds of ad hoc tasks on pretty much any platform.

    Anyway, good luck to both of you - you're going to need it!

    No more Blub for me, thank you, Vicar.
    Jeremy Figgins

    Joined: Sep 08, 2010
    Posts: 2
    Thanks for all of the excellent replies.

    Chris, I hadn't even thought about Python, since I don't use it in my daily work, but that's a great idea and I think you're right.

    To everyone else who's worried about me losing my relationship, I should have started my request with "My gf is finally convinced to learn a programming language" instead of "I finally convinced her...". This is her call, but she doesn't want to be overwhelmed.
    Campbell Ritchie

    Joined: Oct 13, 2005
    Posts: 46397
    It is still probably best to get somebody else to teach her.
    I agree. Here's the link:
    subject: Need a beginner's Java book for my girlfriend
    It's not a secret anymore!