Syllabus --- Computer Networks I

Exam 3, due 11/22/1999

Homework Assignments

This course approaches the subject of computer networking from a programming perspective. It's goal is to leave the student with the ability to develop distributed applications using TCP/IP and RPC. The course covers the overall organization of the Internet; the layered design of networking software; TCP/IP programming (using sockets); concepts behind RPC. There is a team-oriented semester project.

Team signup page
Final grade is based on graded homework, two hour-exams and the semester project.
  1. Introduction to networking.
    1. Unix review. Processes and low-level I/O.
      1. flock
      2. A dictionary of related C and Pascal constructs
      3. Standard header-files for all network programs
    2. OSI concepts --- layered software. Description of the layers.
    3. The Internet. General organization and concepts.
    4. Ethernet.
    5. gethostbyname
    6. A C++ class for creating and using sockets Compile these programs (t1.C and t2.C) via the command:
      CC -oprogname -lsocket -lnsl progname.C
      
    7. Filtering mail
  2. Concept of a Protocol. Introduction to TCP/IP (Chapter 1 of text)
  3. Client-server model and Software design. (Chapter 2 of text)
  4. Concurrency in networks. (Chapter 3 of text)
  5. Program interface to Protocols. (Chapter 4 of text)
  6. Sockets. (Chapter 5 of text)
    1. Concept.
    2. Specifying an endpoint address.
    3. System-calls connected with sockets.
    4. TCP vs. UDP.
  7. Algorithms and issues in Client Software Design. (Chapter 6 of text)
    1. Identifying location of a server.
    2. Looking up a domain name.
    3. Port numbers and network byte-orders.
    4. The TCP client algorithm.
    5. Allocating a socket.
    6. TCP vs. UDP.
  8. Sample client software. (Chapter 7 of text)
  9. Issues in Server Software Design.(Chapter 8 of text)
    1. Concurrent vs. Iterative servers.
    2. Connection-oriented vs. connectionless servers.
    3. Four basic types of servers.
    4. Master and slave processes.
  10. Kerberos Protocol
  11. Iterative Connectionless Servers --- UDP. (Chapter 9 of text)
  12. Iterative, Connection-Oriented Servers --- TCP. (Chapter 10 of text)
  13. Concurrent, Connection-Oriented Servers. (Chapter 11 of text)
  14. Introduction to RPC.

This file was last modified