V22.0480.002 Network Programming, Spring 2000


Instructor:     Michael Padovano

I will be available immediately after class for questions and concerns. The best way to reach me is through email at padovano@cs.nyu.edu or by calling me at (212) 648-7544.

Course Goal

This course will give you a thorough understanding of distributed applications. You will learn the basics of client-server computing, and understand how to create applications using the connection-oriented and connectionless programming models. In addition to creating your own distributed applications, you will be able to read and analyze networking applications created by others.

You will learn how to create distributed applications using the three major network programming interfaces: the remote procedure call interface, the socket interface, and the transport level interface. By creating networking applications, you will also gain a good understanding of the TCP/IP protocol suite.

Course Text

Internetworking with TCP/IP, Volume III, Client-Server Programming and Applications by Douglas Comer and David Stevens.

I will also reference information from Networking Applications on UNIX System V Release 4 by Michael Padovano, but that text is currently sold out, and is not required in this course.

Course Requirements

Five to seven small homework assignments, and one large final project. Collaboration in teams of two on homework assignments is allowed. That way, one person can write the client side of an application and the other can write the server side. There will also be a final exam.

Course Philosophy

You will learn by doing. As you create networking applications, you will discover the features that work best in a given situation. As you become better at creating networking applications, you will analyze the source code of existing applications (such as rlogin and rsh). That way, you can see how others solve the problems of distributed applications.

You should be able to read and write C programs (each assignment will involve either reading or writing programs in C). They will be graded primarily on correctness and maintainability.

You should also be familiar with the UNIX system. You don't have to be an expert, but you should know how to move around the system, use vi or emacs, and know how to compile things.

Path That the Course Will Take

We will spend the first few classes discussing the client/server model, the TCP/IP protocol suite, the OSI model, and other networking protocols. After that, we will cover the following:

  1. The socket interface. We will cover the socket interface in detail, and use it to create both the server and client sides of an application. We will use both connection-oriented and connectionless protocols.
  2. The Remote Procedure Call Model. We will start by creating simple distributed applications, and gradually making them more sophisticated. We will experiment with different security schemes and look at the importance of security in a distributed environment.
  3. TLI. We will cover all aspects of the Transport Level Interface. You will learn how to create applications using TLI, and learn how to make your applications transport-independent.
  4. Network application code examination. We will look at existing applications and see how they handle remote terminal emulation, connection setup, and data transfer.

Overall, it will be a fun, educational course. Networking is very popular today and will grow in popularity in the future, and this course will give you a solid base for creating distributed applications.