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 firstname.lastname@example.org or by calling me at (212) 648-7544.
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.
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.
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.
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:
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.