Books to read


Learning Python
Mark Lutz - O'Reilly press. Probably the best book on programming Python if you already know another language. Typical O'Reilly style, so if you don't like that you may prefer:
Programming in Python 3
Mark Summerfield - Addison Wesley. This takes a fairly fast paced trip through Python and introduces lots of the interesting packages you might like to use.
Programming Python
Mark Lutz - O'Reilly press. The classic (and massive) text. The 4th edition assumes you already know the language (his Learning Python book now covers that ground) but describes the whys and wherefores of the language better than many of the the others, it is strong on coverage of the more unusual modules and OOP. Its Tkinter section alone is around 400 pages long. A new edition is overdue.
Python Programming on Win32
Mark Hammond & Andy Robinson - O'Reilly press. This is an essential read if you are serious about using Python on a Windows box. It covers access to the registry, ActiveX/COM programming, various GUIS etc. It is getting a little dated now and does not cover the ctypes module but is still the only real specialist book on Windows and Python.
Python and Tkinter Programming
John Grayson - Manning press. This is the only real in depth book on Tkinter and does a fair job of covering the ground, including the bolt-on PMW set of widgets. It's not a basic tutorial but it does provide a reasonable reference for the serious Tkinter GUI programmer. It is however quite dates and is Python v2 only. Fortunately it is pretty easy to adjust the code for v3.
Python Essential Reference
David Beasley - New Riders. Based on Python 2.6/3 A concise reference book covering the most commonly used modules and project areas.

There is also an excellent online book for more advanced Python programmers called Dive into Python

Finally, while not actually a book, there is a Python "cheat sheet" available online (or in PDF format).

There is also a new generation of Python books appearing on specialist topics, there are books focusing on text handling, GUI programming, Network programming, Web and XML programming, Scientific computing, Machine Learning etc. etc. Python has really come of age as a language and the number and depth of books now available reflects that.


Tcl/Tk in a Nutshell
Raines & Tranter - O'Reilly press. This is the book I turn to first when looking for Tk information. It's really only the sections on Tk and Tix that interest the Python programmer. On the other hand, you might like the look of Tcl too and be motivated to experiment, and that's never a bad thing!


There are a few books on VBScript but as the language is becoming less of a force, even in the Microsoft world, this is not likely to improve. The only ones I have used and can thus recommend are:

VBScript in a Nutshell
Lomax et al - O'Reilly press. Good reference but the tutorial section is very sparse and only suitable if you know how to program (eg. you've done my tutor! :-). As a reference it is quite good but misses out by not providing a code example per function.
Windows Script Host
Dino Esposito - Wrox press. A good intro to WSH including both VBScript and JScript. But it's not a language tutorial and the reference section is very brief. Only available second hand now


There are lots of books on JavaScript but most of them focus very heavily on the Web, it can be hard sometimes to disentangle what features are JavaScript the programming language, and what are web browser features. The best JavaScript books that I know are:

JavaScript the Definitive Guide
Flanagan - O'Reilly press. This was indeed the definitive guide for a long time and although getting a little old now is still the best single book on the subject, if a little dry.
The JavaScript Bible
Danny Goodman - SAMS(?). This gets good reviews from friends and colleagues but I confess not to having read it. It is supposed to be a slightly more readable book than the Flanagan one.
JavaScript: the Good Parts
Cockford - O'Reilly. A very short book that focuses on the aspects of JavaScript to use to produce good quality code. It also highlights some of the aspects of JavaScript to avoid - the bits that have give it a bad reputation. This is not a book for JavaScript beginners but if you followed my tutorial you should just about cope with this one.

There are lots of others, read the reviews, choose your budget and pick one.

General Programming

There are some classic programming texts that any serious programmer should own and read regularly. Here are my personal favorites:

Code Complete
Steve McConnell - Microsoft Press. This is the most complete reference on all things to do with writing code that I know. I read it after several years of experience and it all rang true and I even learnt some new tricks. It literally changed the way I wrote programs. Buy it. Now!
Programming Pearls
Jon Bentley - Addison Wesley. There are two volumes, both invaluable. Bentley shows how to improve the efficiency of your programs in every conceivable way, from concept through design to implementation.

These are part of a programming library that came out of Bell Labs in the 1980's in the wake of Unix. There are so many classics in this series that I will simply say that anything from the pens of Ken Thompson, Jon Bentley, Dennis Ritchie, Andrew Koenig and the rest at Bell Labs is worth reading. The styles may vary but the content is pure gold.

The Pragmatic Programmer
Hunt & Thomas is another title similar to "Programming Pearls" but a little bit more modern in its references. They both have a lot to offer.
Algorithms by Donald Knuth
This is a set of books describing fundamental algorithms that are used by programmers over and over again. Heavy going, and a bit mathematical but, if you are concerned about the efficiency and absolute correctness of your programs, they are worth searching out. The whole set has recently been reissued with some updates.

Object Oriented Programming

I've already mentioned these, but here they are again anyway:

Object Oriented Analysis
Peter Coad & Ed Yourdon. - A great intro to OO concepts with a very simple notation for recording your designs. As an added bonus the notation is very similar to the new Unified Modeling Language (UML) standard that is being adopted by most books, tools and journals.
Object Oriented Analysis and Design with Applications
Grady Booch - Benjamin Cummings. This is another excellent book, moving more into the detail of designing classes and objects.The 1st edition, if you can find it, illustrates the lessons in 5 different OO languages whereas the second edition only uses C++ and is the poorer for it. It uses Booch's own notation which in my opinion is still the best notation so far seen but it is being eclipsed by UML and so is effectively obsolete. Booch has produced a third edition which uses UML2.
(I have just received the third edition which returns to a more multi-lingual approach and based on first impressions I would now recommend it over the first edition!)
Object Oriented Software Construction (2nd Ed)
Bertrand Meyer. Meyer has his own OOP language - Eiffel and uses it to teach OO very effectively. Because Eiffel is (unfairly) a bit of a minority interest the book takes a little extra effort to read. It is undoubtedly worth it for the sheer breadth of coverage of the current OO technology scene. Make sure you get the 1997 2nd edition as it is far superior to the 1988 original.

Other books worth reading are:

Object Oriented Design Patterns
Gamma, Johnson et al. A revolutionary book when it came out. It contains a number of common OO design patterns and, perhaps more importantly, a notation for documenting them. There is now a flourishing patterns discussion and a dedicated web site with many additional patterns as well as variations of the ones in the book.
UML Distilled
Martin Fowler - Addison Wesley. This book takes you through the UML OO design notation. It focuses on the practical application of the tools rather than being a detailed reference. Its short, easy to read and will hopefully show you the benefits of using a notation like UML to design your own projects.

Web sites to visit



Tcl/Tk - and thus Tkinter

The definitive Tcl site


The Microsoft VBScript web site


The master Mozilla site

The W3schools JavaScript tutorial

The W3C's own official training site for all things Web

Other languages of interest

The following languages are all of interest from a programming point of view because they all do things slightly differently to the mainstream approach adopted by the 3 languages we have been using. Once you feel comfortable using the approach I have been teaching you then try reading one of the tutorials listed below, they all have free interpreters or compilers available. Go on, be adventurous!

The first group are basically similar to our languages but feature some new twist or other.

Java, Ruby and Perl.

This second group get more extreme in their departure from our view of programming. As such they are, in many ways, the more interesting to explore!

Smalltalk, Tcl, Lisp/Scheme and Rebol

Programming in General

Wikipedia is my first port of call for anything programming (or even computing) related. But you can also try finding some general programming links pages on your favourite search engine. The best thing to do is look for a specific topic of interest and usually you will find more than enough resources.

Object Oriented Programming

Projects to try

There are several ideas for projects listed in the tutorial. In addition I will give some ideas here, in approximately ascending order of difficulty. Most will be achievable with the skills learnt here but all of them can be improved by checking the documentation that comes with Python for alternatives. A couple will definitely require that you start digging for yourself, recall that one of the requirements of a good programmer was curiosity!

Another thing that is fun is the Python Challenge game.

It consists of a series of challenges (13 when I did it, but its up to 33 last time I checked) that you must solve using different features of Python. The answer to each challenge gives you the URL to the next one! They get progressively more difficult and require the use of some of the more unusual Python modules, a good way to get an introduction to Python's hidden gems.

Finally there are SourceForge and GitHub the main repositories for open source software projects. Search for projects using Python(or VBScript or JavaScript!), pick one that interests you and see what needs doing. Often just documenting something - say a module - is a good place to start learning how the code works, then trying to fix a reported bug, finally adding new features. This is very good for getting exposed to much bigger projects and also working in a team.

Hopefully that should keep you busy until you start finding project ideas of your own!

Topics for further study

If all the projects above still leave you looming for more here are a few areas for you to explore and become expert in:

That's all there is. I hope you enjoyed it and found it useful. Thanks for getting here!