The text book for this class is Foundation of Python Network Programming. The first edition of the book is by John Goerzen, Apress, 2004, ISBN: 1-59059-371-5. [GOERZEN04] The second edition of the book is by John Goerzen and Brandon Rhodes, Apress, 2011, ISBN: 978-1-4302-3003-8.
More comments about the text book and also this study guide are found in the Preface to the Network Programming Study Guide.
The lectures and demonstrations play as a flash video in your web browser. You will find links to the videos in this Network Programming Study Guide. The video is buffered on your computer before it begins to play, so playback should be fairly smooth. If there is a need, I can post a zip file of all the files needed for a lecture so it can be viewed when not on-line. Let me know if this is needed. The videos are what are sometimes called screen-casts, where you will see what I am looking at on my computer as I do the lecture or demonstration and you will hear audio of me describing things. Some of the lectures are based on power point slides to present a traditional lecture. Some of these are a little long, but they have a table of contents so that you can stop the lecture and go right to a particular part of it. Other videos are demonstrations and are shorter.
Some of the demonstration videos are now available in the ShowMeDo Python Network Programming Series.
The reason for using Python in this class is that I want the programming side to be as easy as possible so that we can learn as much as possible about the networking side. Python allows us to see the low level socket commands, just as if we were using C, but also has modules that implement application layer protocols. Using some of the modules, we will be able accomplish much more, with less effort than we would in other languages. I believe that you will find Python easy and fun to use.
Before you can really get started with Network Programming, you may need to do a quick study of Python. I have a few introductory videos to get you started and also there is a great deal of information online. You may also want to grab an introductory book about Python. Before spending any money, you might check the K–State Salina library or your local public library. Here are some online resources to make note of:
The first lecture that you should view is called Python Documentation and Software, which describes the Python programming environment available for Windows as well as some of the documentation available on-line. After viewing the first video, please download and install the Python program from python.org. (See The Python Programming Language for links to the Python lectures and resources.)
You will want to download the latest stable release from the 2.7 series of Python. You will see that the Python 3 series is also available, but I suggest that you go with something from 2.7. The 3.0 version is a major release that is not fully compatible with older code. The examples from our book as well some of the modules that we will use are for the 2.x version, so it will be less confusing if you stick with the 2.7 series. Most of the videos were recorded in 2008 when 2.5 was the latest version. The 2.6 and 2.7 series are pretty much the same as 2.5. The 2.6 and 2.7 series are a transition to Python 3.
Many of the changes in Python 3 only require syntax changes to upgrade older code to meet the new standard. However, Python 3 makes one change that significantly impacts network programming. In Python 3, strings are stored in unicode format instead of traditional ASCII. Obviously, this is a nice improvement for many programming tasks, but most network protocols are rather old and specify that transmitted data be ASCII. The programmer can manual handle all the string conversions as needed, but that can become combersome. It is hoped that in the future, lower level networking modules will do all of string format the conversions.
Next, you will want to view the Introduction to Python video lecture. It gives an overview of the Python programming language.
Then, you will be ready to begin the first network programming topic, socket programming, which is covered in the first three chapters of the book.
The text book is pretty good, but in a few cases it assumes that you are an experienced Python programmer, which may or may not be true. My job is to help bridging the gap between your actual experience level and what is needed to write network programs using Python. Answers to many questions that you may have are found in this Network Programming Study Guide, but remember that this class is about Network Programming, not Python! So if you find your self getting lost in the Python, let me know and I’ll see what I can do to help.