V22.0480.004 Network Programming, Fall 2001
Instructor: Michael Padovano
I will be available immediately after class for questions and concerns. The best way to reach me is through email at email@example.com or by calling me at (908) 243-8793.
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.
UNIX Network Programming, Volume 1: Networking APIs - Sockets and XTI, 2/e, by W. Richard 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.
Five to seven small homework assignments, and one large final project. There will also be a final exam.
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.
All students should register themselves with the class list. The class list will be used to send out mails regarding the class discussion and assignments.
To register, visit http://www.cs.nyu.edu/mailman/listinfo/v22_0480_004_fa01. That page will show you how to subscribe to the mail list. After you subscribe, you can post messages to the mail list by sending e-mail to firstname.lastname@example.org.