Authors: Eric T. Freeman and Elisabeth Robson
Reviewer: Ian Elliot
Head First books are generally aimed at the beginner and they are characterised by a seemingly chaotic presentation. If you don't know the format then it will come as something of a shock to encounter a book that has freeform notes, drawings all sorts of things that break up the logical flow. The best Head First books however managed to keep an overall logical structure and the chaos just helps to smooth the passage thought the difficult material.
Chapter 2 moves on to making use of what you have learned to do something useful - a small game. On the way you learn how to invent an algorithm using a flow chart and pseudo code and a bit about random numbers. Chapter 3 introduces functions and a lot more difficult stuff gets covered including passing parameters, global and local variables and scope. Chapter 4 covers data structures - the array in particular and of course the associated for statement.
From here the book goes into more advanced areas and it moves very rapidly. Chapter 5 introduces objects and how to create them. By the end of the chapter you have not only encountered properties and methods but the difficult to understand this - although you won't have a clear idea of what it is all about. These are difficult topics for a beginner.
Chapter 10 goes back for a second look at functions and the idea of a function expression is introduced along with the idea that a function is a first class object. To prove the point you write a program that passes functions to functions. Chapter 11 goes even deeper and introduces closures, anonymous functions and nesting functions. Chapter 12 explains the use of functions to create objects i.e. as constructors.
The book ends with a list of the things it hasn't covered - jQuery, advanced DOM, the Window object, addEventListener, old browsers, regular expressions, recursion, Json and Node.js. It's a mix of advanced topics you probably don't need to worry about until later and some things that are more basic and essential.
A second problem is that the introduction to the key ideas of programming are covered in a single chapter right at the very beginning. They are covered fairly well and if you stay the course then you probably are going to make the transition from non-programmer to programmer, but again it hasn't been made as simple as it could be.