Navigation

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.

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 information which you are resposible to know for the exams may be
contained in this study gude, but not presented in any of the lectures.
DO NOT plan to just watch the videos and not read the book or this
study guide.

Also, the folder’s on K–State Online do not contain links to all of the
videos, look in this Network Programming Study Guide for the information and links to the
videos which you will need.

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:

a site with demonstration videos about open
source software, especially Python. Many of the videos are
available to anyone view at no cost, but the newer videos are only
available with a purchased membership. [ShowMeDo]

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.