CSCI.4220 Network Programming
Fall, 2006


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: T,W,Th 2:00-4:00
   
Teaching Assistant: Matt Edman (edmanm2@cs.rpi.edu)
  Office Hours: M,W,Th 12:00-2:00 in Lally 04
   
Web Site: http://www.cs.rpi.edu/academics/courses/netprog/
  There will also be a WebCT site. ( http://rpilms.rpi.edu)
  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: This course covers four major topic areas

Prerequisites: Students should be strong programmers. Programming will be done in C, C++, Java and various scripting languages. Many students may not know Java. Some guidance will be provided, but since this is an upper division computer science course, it is assumed that students can learn new languages quickly. Students should have had CSCI.4210 Operating Systems and all of its prerequisites.

Grading: There will be about 12 short quizzes, tentatively scheduled for Tuesday class meetings. The two lowest quiz grades will be dropped, each of the remaining 10 will count 5% of the course grade (50% total). There will be no make-up quizzes. There will also be about ten short programming assignments, which together will count 50% of your 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.

Reading: There is no textbook for the course. There is so much good material on the Web that all of the reading will be web based. Each class will have some reading assignments.

Schedule
Note: This schedule is very tentative and is subject to changes throughout the semester.

Date Topic  
Tu Aug 29 Internet architecture and history  
Fri Sep 2 Elementary socket programming in C  
Tu Sep 6 Low level networking, Ethernet, ARP  
Fri Sep 9 The network layer, IP, DHCP, NAT  
Tu Sep 13 The network layer, routing, IPv6  
Fri Sep 16 Transport layer protocols, TCP, UDP  
Tu Sep 20 Advanced socket programming, non-blocking sockets  
Fri Sep 23 Server design (forking, threads, preforking), daemons  
Tu Sep 27 Network Programming in Java  
Fri Sep 30 DNS  
Tu Oct 3 email, HTTP, cgi, cookies  
Fri Oct 6 P2P  
Fri Oct 13 XML, DTDs, Schemas  
Tu Oct 17 XML Parsing, XSLT  
Fri Oct 20 Client side scripting, Javascript  
Tu Oct 24 AJAX  
Fri Oct 27 Web server technologies, Tomcat, servlets  
Tu Oct 31 Web server technologies, JSP  
Fri Nov 3 Web server technologies, RPCs, Java RMI, XML-RPC, CORBA  
Tu Nov 7 Server scripting languages, PHP, Ruby  
Fri Nov 10 Web services, SOAP, WSDL, UDDI  
Tu Nov 14 The Semantic Web, RDF, OWL  
Fri Nov 17 Cryptography, authentication, digital signatures  
Tu Nov 21 Network security, Kerberos, IPSec, SSL  
Tu Nov 28 Implementation of security  
Fri Dec 1 Anonymity on the Web, tor  
Tu Dec 5 Multimedia and VoIP, RTP