../_images/NetProgBook.jpg

1.3. Welcome to Network Programming!

According to the calendar, it is now time to get started. So if you are ready to get started, great. If not, that’s okay for now, but don’t let too much time go by. As you probably know, this class is taught in an asynchronous on-line manner, which tends to work well for the summer months. This means that there is not any set time for class and that you are free to go through the material at your own pace. That is good in the sense that you can work on it according to your schedule, but bad because I won’t be pushing you. I strongly suggest that you make a schedule with goals so that you don’t get to the end of summer (first week of August) and find that you still have a long way to go. I’ll make some suggestions in a bit to help you set your schedule.

The first thing that you will want to do is take a look at the syllabus Net_prog_syllabus_U09.pdf that is posted. It contains additional information about what you can expect for this class.

1.3.1. The Text Book

The text book for this class is Foundation of Python Network Programming by John Goerzen, Apress, 2004, ISBN: 1-59059-371-5. [GOERZEN04]

The book store here at K–State Salina should have a few copies of the text available, and it is available from on-line sources, such as Amazon.

More comments about the text book and also this study guide are found in the Preface to the Network Programming Study Guide.

1.3.2. Videos

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.

Note

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

1.3.3. Why Python

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:

See also

  • http://www.python.org

    the main Python web site with lots of documentation and links to other resources. [PY]

  • http://www.showmedo.com

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

1.3.4. Getting Started

You will want to download the latest stable release from the 2.6 series of Python. You will see that the Python 3 series is also available, but I suggest that you go with something from 2.6. 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.6 series. Most of the videos were recorded last year when 2.5 was the latest version. The 2.6 and 2.5 series are pretty much the same. The 2.6 series is a transition to 3 version. It is pretty much 2.5 except that it will also read Python 3 code.

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.

Note

See The Python Programming Language for links to the Python videos. Links to the videos for each network programming topic will be listed in the appropriate section of the Network Programming Study Guide.

1.3.5. Your Plan of Attack

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.

In general, for each topic covered in this class, you will want to follow the following progression:

  1. Read the appropriate sections of this study guide.
  2. Read the book, making reference to Network Programming Study Guide, the video lectures and demonstrations.
  3. Get started on the programming assignment.
  4. If you have difficulty with the assignment, then after you have looked for answers in The Text Book, the Network Programming Study Guide, the videos and other on-line resources, you should contact me via e-mail. I will attempt to help via e-mail, and if needed, arrangements can be made to meet in Salina or via telephone to answer your questions in person.
  5. Once the programming assignment is finished, then you should be ready to take the on-line quiz.

1.3.6. Suggested Schedule

As far as your schedule for completing the class on time... You really want to finish the six topics in June and July (9 weeks). That gives you the first couple weeks of August to take the final exam and get ready for your fall semester classes. Some topics will require more time than others. Your schedule may vary depending on your plans for vacation or similar, but I recommend a schedule similar to this:

  1. Getting started with Python - 0.5 week
  2. Sockets Programming - 1.5 weeks
  3. DNS - 0.5 week
  4. Web - 2 weeks
  5. E-mail - 2 weeks
  6. SSL - 0.5 week
  7. Servers - 2 weeks

1.3.7. On-lines Classes

I’ve spoken with lots of people about what makes an on-line class successful and they all say that some topics work better than others and that the more interaction between students and teacher the better it is. Well, I think our topic is good one for on-line delivery and our book is written in a tutorial manner, which I think will help. For the interactive part, in K-State Online I’ve turned on the message board. Feel free to post questions and comments on other student’s questions. Please also e-mail questions to me. For e-mailed questions, unless requested not to, I will remove the identity of the sender and post the question and my answer to the message board and may also e-mail the class. I always think that if a student is confused about something, it is not a stupid question and that others may have the same confusion.