Network Programming


This course teaches the methods and tools used for network programming.  Topics include: Operating System support for network protocols; inter-process communication facilities such as pipes, Remote Procedure Call (RPC) and sockets; design of client and server sides of network protocols; and network security.

General Class Information

     Lecture times: 

        Tuesdays & Thursdays, 4:00 - 6:00 PM, Baskin Engineering 169

     Lab Section:

           Mondays, 12:00 - 2:00 PM, 8askin Engineering 301A

           Wednesdays, 4:00 - 6:00 PM, 8askin Engineering 301A

  Secondary Lab Sections (optional):

           Tuesdays, 12:00 - 2:00 PM, 8askin Engineering 301A

           Fridays, 10:00 AM - 12:00 PM, 8askin Engineering 301A


            Name: Anujan Varma (varma at

          Phone: 459-3505

          Office: E2-221

          Office Hours: Tuesdays 10:00 AM - 12:00 Noon


  1. CMPE 150/L
  2. CMPS 101

In-depth knowledge of C programming is required.



      Unix Network Programming, Volume 1, Third Edition, by Stevens, Fenner and Rudoff, Addison-Wesley.

Evaluation Criteria

     Programming Assignments: 40 percent

     Homeworks: 10 percent

     Midterm: 20 percent

     Final project: 30 percent

Note that CMPE 156 and 156L are part of the same course.  You will receive the same overall grade for both.

Academic Integrity

All prgrams submitted must be your own. Any unauthorized collaboration will be treated as a violation of academic integrity and handled according to University policies (see Student Guide for Academic Integrity for details).


Topics by Week

Week 1: Review of relevant network protocols (IP, TCP, UDP, Ethernet, etc.), Overview of TCP sockets.

Weeks 2 and 3: Operating System support for network protocols (process management, memory management, mutual exclusion).  Inter-process communication mechanisms:  pipes, sockets, Remote Procedure Call.

Week 4: Design of client and server sides of network applications

Week 5: UDP sockets, multicast and broadcast.

Week 6: Case Study: Apache Web Server

Week 7: Network security: Authentication and encryption, Secure Socket Layer (SSL)

Weeks 8-10: Final project

Lecture Notes and Refernces


Programming Assignments

Final project

  Project Description

  IBM OpenSSL Tutorial

  HP OpenSSL Programming Tutorial

  Linux Journal: An Introduction to OpenSSL Programming, by Eric Rescoria  Part 1    Part 2

Useful Links

- Beej's Guide to Network Programming

- RPC Resources

     RFC 1831RFC 1832,  RFC 1833

Instructors and Assistants