Programming projects (or extended programming examples)
There is no single path to learning any programming language, Sure there are some basic concepts you need to get out of the way first, but after that you learn the bits that are relevant to the current problem.
Until you can solve a problem yourself using nothing more than pencil and paper, there is no point attempting a program solution. Your role as programmer, is to teach the computer how to solve a problem by giving it an algorithm which it can then blindly follow.The programs you write will therefore be a reflection of, and are limited by, your own knowledge.
You will find that apparently simple problems are in fact quite complex, and seemingly complex problems turn out to actually be quite simple. There are of course some classes of problem, which are not amenable to a procedural programming approach.
Each project will outline a problem to be solved, and provide one, or more ideas for how it may be solved; the program specification. Your task will be develop a algorithm, using either pseudo code or a graphical technique (e.g. flow chart) which you are more comfortable with. Your solution should also identify any constraints your algorithm imposes and define any necessary user interface. A simple sketch will do which can be implemented using HTML / CSS.
Some of the projects may have additional constraints placed on them, to make them more interesting, and to illustrate problem decomposition. That is, take a complex problem and break it down into a number of smaller problems, each of which can be solved independently of one another, then combined to provide a solution to the original problem. There are various structured programming techniques for doing this. i.e. Object Orientated Analysis (OOA) or the Universal Modelling language (UML).