CSCI.4220 Network Programming
Spring, 2005


Instructor: Robert P. Ingalls, Executive Officer, Computer Science Dept
  209 Lally, 518-276-2819 (ext 2819)
  e-mail ingalr@rpi.edu or ingallsr@cs.rpi.edu
  Office Hours: W,F 2:00-4:00
   
Text: Unix Network Programming: The Sockets
  Networking API, Vol 1, 3rd Ed, by
  W. Richard Stevens, Bill Fenner, & Andrew M Rudoff
  Addison-Wesley, 2004
   
Teaching Assistants: Bouchra Bouqata bouqab@cs.rpi.edu
  Office Hours: T, Th 10:00- 12:00, Science Center 1W01
  Dan Tracy tracyd@cs.rpi.edu
  Office Hours: T,W 12:00 - 1:50, Science Center 1W01
   
Web Site: http://www.cs.rpi.edu/courses/netprog/
  There will also be a WebCT site. This will have a
  discussion board, and your grades will be posted here.
  Students are expected to read the WebCT discussion board
  and the course web site regularly.

Course Content: After reviewing some basic networking principles, the first half of the course will cover the socket interface, primarily on Unix, but also on Microsoft operating systems. The second half of the course will cover a variety of network programming methodologies and protocols, primarily for the World Wide Web.

Prerequisites: Students should be strong programmers in C or C++. There will be programming assignments in other languages as well, Java in particular. Students are not expected to know Java, but are expected to be able to learn it quickly. In addition, students should have had CSCI.4210 Operating Systems and all of its prerequisites..

Grading: There will be three exams, each of which will count 18% of the course grade (54% total). There will be no make-up exams. However, there will be an optional comprehensive final exam which can be used to replace a missing test or project or your lowest test or project. There will be about five programming assignments, which will together count 46% of the course grade.

Computing Resources: Programming assignments will be done using both Win32 APIs on a Windows Platform, and Unix system calls using the gnu gcc and/or g++ compilers. You need to find your own Windows computer, but you will be given accounts on the CS Unix network for your Unix computing.

Academic Integrity: All programs submitted must be your own work, and you are expected to develop your programs independently. You may receive as much help as you wish on the use of the operating system, text editors, debuggers, file transfer protocols and so on. You may consult with other members of the class about interpreting the assignment, and you may get help in finding bugs, but not fixing bugs, but you are not allowed to look at or copy another person's code or discuss design decisions with others, and you cannot show your code to others. Students found to be in violation of these guidelines will receive a grade of F for the course. Students found to be cheating on tests will also receive a grade of F for the course.

General Project Guidelines All projects should follow guidelines for good programming practices. Here is my list.


Schedule
Note: This schedule is very tentative and is subject to changes throughout the semester. If there are topics pertaining to network programming which you would like to cover which are not on this schedule, please let me know.

Date Topic Reading
Th Jan 20 Networking, Protocol Stacks SFR Chap 1
Mon Jan 24 Intro. to Sockets SFR Chap 3,4,5,8
Th Jan 27 The Transport Layer, TCP and UDP SFR Chap 2
Mon Jan 31 The Network Layer, IP  
Th Feb 3 The Link Layer, LANs  
Mon Feb 7 Application Protocols, HTTP, ftp  
Th 10 Advanced Sockets, select, socket options SFR Chap 6,7
Mon Feb 14 Name servers, DNS SFR Chap 11
Th Feb 17 Exam 1  
Tues Feb 22 IPv6 SFR 12
Th Feb 24 Other socket types, Unix, Raw SFR Chap 15, 28
Mon Feb 28 Server design, daemons, inetd SFR Chap 13, 30
Th Mar 3 Miscellaneous Socket Stuff SFR Chap 14, 16, 17, 24
Mon Mar 7 CGI  
Th Mar 10 XML  
Mon Mar 21 Sockets in Java  
Th Mar 24 Cookies, Javascript  
Mon Mar 28 Exam 2  
Th Mar 30 Servlets, JSP  
Mon Apr 4 JDBC  
Th Apr 7 Java RMI  
Mon Apr 11 Remote Procedure Calls  
Th Apr 14 Routing Protocols  
Mon Apr 18 Network Security I  
Th Apr 21 Network Security II, firewalls, ssl, ssh  
Mon Apr 25 Misc.: grid computing, web spiders  
Th Apr 28 Misc.: bluetooth, VoIP  
Mon May 2 Exam 3