References


Books   Web Sites   Project Ideas   Study Topics  

Books to read

Python

Learning Python
Mark Lutz - O'Reilly press. Probably the best book on programming Python if you already know another language. Typical O'Reilly syle, so if you don't like that you may prefer:

Python - How to Program
Dietel & Dietel - ??? This takes a fairly fast paced trip through Python and introduces lots of the interesting packages you might like to use - TCP/IP networking, Web programming, PyGame etc. It's big but very comprehensive, although not in-depth.
Programming Python
Mark Lutz - O'Reilly press. The classic text. The second edition has less tutorial (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.
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.
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. Its not a basic tutorial but it does provide a reasonable reference for the serious Tkinter GUI programmer.
Python in a Nutshell
Alex Martelli - O'Reilly press. Alex is one of the mainstrays of the Usenet Python community and hit Nutshell book is the best concise reference on Python currently available. It is not a tutorial although it does cover the basics as well as most of the common modules.
Python Essential Reference
David Beasley - New Riders. This is New Riders equivalent to O'REilly's Nutshell book. It is similar in scope but sligtly slimmer and based on Python 2.1 rather than Martelli's 2.2. Unfortunately for Beasley a lot of new stuff appeared in 2.2 so he misses out in the best reference award. Still an excellent book.

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

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

Tcl/Tk

Tcl and the Tk toolkit
John Ousterhout - Addison wesley. The classic on Tcl/Tk by the language's creator. Very much a reference book and rather out of date now. It needs a 2nd edition. The Tk section is of interest to any Tk user regardless of language (Tk is a GUI library and is implemented on Tcl, Perl and Python).
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 only the first couple of sections that interest the Python programmer since that's where the bits relevant to Tkinter live. On the other hand, you might like the look of Tcl too and be motivated to experiment, and that's never a bad thing!

VBSCript

There are several books on VBScript but the only ones I have used and can thus recommend are:

Windows Script Host
Dino Esposito - Wrox press(now defunct). A good intro to WSH including both VBScript and JScript. But its not a tutorial and the reference section is very brief.
VBScript in a Nutshell
Lomax et al - O'Reilly press. Good reference but the tutorial section is very sparce 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.

JavaScript

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 nore readable book than the Flanagan 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 favourites:

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.

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 Modelling 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 is reputed to be bringing out a new edition using UML, but it's been a long time coming...

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.
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.

From Clouds to Code
Jesse Liberty(Wrox Press). This book takes you through the process of building a real OO application - warts and all. Its rather like our Case study but much bigger and includes use of design tools like UML.

Web sites to visit

Languages

Python

  • The Python web site
  • Mark Hammond's Python for Windows page connecting MS Windows and Python.
  • A Tkinter GUI tutorial
  • A Powerful Web Development environment using Python.

    Tcl/Tk - and thus Tkinter

    The definitive Tcl site

    VBScript

    The Microsoft VBScript web site

    There are several other online web sites for VBScript resources: components, tips, chat-rooms etc. One such is the VBScript Forum

    JavaScript

    There are now several sites claiming to be "the definitive online source for JavaScript information", but a couple of good ones are:

    The JavaScript Source

    and

    The original Netscape site

    Other languages of interest

    Java, Perl, Smalltalk, Borland Delphi(and now Kylix), Tcl, Lisp/Scheme

    Programming in General

    Try finding some general programming links pages on Yahoo, Google etc. There are several good ones out there, I have no particular favourite. The best thing to do is look for a specific topic of interest and usually you will find more than enough resources. On Usenet the comp.software-eng news group is often a good starting point.

    Object Oriented Programming

  • The Cetus page again

    some specifics

  • Rational Corp make upmarket tools and host some useful information about OO development methods and the new UML modelling notation.

    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 learn't 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!

    Other places to look include the unique Useless Python web site which has many sample scripts plus ideas for new ones. They are all quite short and within the scope of a "graduate" of my tutorial. Finally once you feel that you are getting the hang of things try searching for Python projects on SourceForge and join one that looks interesting. Help contribute to the open source revolution that brought you Python inthe first place!


    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. If you'd like to send me feedback on any aspect of the tutorial then send me mail.
    Thanks for getting here!