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 style, 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 mainstays 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 slightly 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 focusing 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 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.

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

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 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 master Mozilla site

    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 interporeters or compilers available. Go on, be adventurous!

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

    Java, Object Pascal(aka Borland Delphi/Kylix)) 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

    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
  • The official UML web site offers info on the documentation of OO designs, but be warned this site uses some fairly heavy techie terminology. Wikipedia is likely to be your friend for the first few pages!
  • Bruce Eckel's "Thinking In ..." series of online books offers excellent advice on using OOP as you move on to larger projects. much of his advice works just as well in Python (and Eckel is a keen Python user and advocate too!)

    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!

    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.

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