Description
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.
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
Instructor:
Name: Anujan Varma (varma at soe.ucsc.edu)
Phone: 459-3505
Office: E2-221
Office Hours: Tuesdays 10:00 AM - 12:00 Noon
In-depth knowledge of C programming is required.
Unix Network Programming, Volume 1, Third Edition, by Stevens, Fenner and Rudoff, Addison-Wesley.
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.
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).
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
HP OpenSSL Programming Tutorial
Linux Journal: An Introduction to OpenSSL Programming, by Eric Rescoria Part 1 Part 2
- Beej's Guide to Network Programming
- RPC Resources