Network Programming (CIS-3152) Home Page
This is the home page for Peter Chapin's Network Programming course for the Fall 2025 semester.
Here you will find electronic versions of class handouts, homework assignments, lecture slides,
and links to references. If you are a student taking Network Programming, consider bookmarking
this page.
- The course syllabus gives an overview of the course and
its content, lists course resources, and describes the grading policy and related issues.
- The homework submission area and grade book are on Canvas but all other course resources
are here.
- Here are instructions on how to set up the development
environment we will be using for this course.
- For running servers on Lemuria, please use the ports
allocated to you.
- I have prepared a short document on using Git to help you get
familiar with the system. Some of the samples I will use in this course are on GitHub.
- The DNS project on GitHub contains a sample DNS
client and server showing UDP programming techniques.
- The MailVision project on GitHub
contains the C++ version of MailFlux and related subprojects.
- The Chatter project on GitHub contains
Chatter, an Ice-based instant messaging system.
- I've prepared some general information on submitting
assignments.
- My home page contains other resources of potential interest.
Lecture Topics
- 2025-08-26.
Course introduction and overview. Started describing the daytime client.
- 2025-08-28.
Finished describing the daytime client program.
- 2025-09-02.
Described the daytime server program.
- 2025-09-04.
Described concurrent servers using forked processes.
- 2025-09-09.
Demonstrated "vibe coding" by adding additional error handling to the echo client program.
Finished discussing the concurrent echo server with demonstration.
- 2025-09-11.
Demonstrated the threaded version of the echo server. Discussed the potential for deadlock in
the echo client/server.
- 2025-09-16.
Demonstrated the IPv6 version of the daytime client/server. Discussed the
getaddrinfo() function.
- 2025-09-18.
Gave an overview of UDP programming and the DNS system.
- 2025-09-23.
More discussion about UDP programming in the context of a simple DNS client.
- 2025-09-25.
Introduced character sets.
- 2025-09-30.
Discussed Unicode in more detail: encoding, BOM, combining characters.
- 2025-10-02.
Discussed Homework #2/3 on TFTP.
- 2025-10-07. No class (Vacation).
- 2025-10-09. No class (Vacation).
- 2025-10-14.
Demonstrated Unicode samples. Demonstration of Claude Code and JetBrains Junie. Review of bit manipulation operations in C.
- 2025-10-16.
Introduced SMTP.
- 2025-10-21.
Discussed how to set up a TFTP server for testing Homework #2/3. Gave a tour of the existing
MailFlux code base.
- 2025-10-23.
Discussed the format of mail messages as described in RFC-5822. Introduced MIME.
- 2025-10-28.
Continued the discussion of MIME-encoded mail message bodies, with samples.
- 2025-10-30.
Introduced RPC and ONC RPC with the FileServices example.
- 2025-11-04.
Introduced Ice.
- 2025-11-06.
Showed the FileServices sample in Ice and introduced
Chatter..
- 2025-11-11.
Continued discussion of Chatter. Did a presentation on VTank, an Ice-based networked game
created by VTC students around 2009.
- 2025-11-13.
Introduced XML.
- 2025-11-18.
More discussion about XML. Introduced XSL.
- 2025-11-20.
More discussion about XML/XSL. Introduced Astronomical Observation Markup Language.
- 2025-11-25. No class (Vacation).
- 2025-11-27. No class (Vacation).
Slides
| Weeks 1-5 |
Weeks 6-9 |
Weeks 10-14 |
- Introduction
- Daytime Client and Server
- Concurrent TCP Servers
- TCP Details, Part 1
- TCP Details, Part 2
- UDP Details
- Programming UDP
- DNS (see RFC-1035)
- Trivial FTP (see RFC-1350)
- Character Sets
- ASCII, ISO-646, ISO-8859, C0 and C1, ISO-2022
- Unicode Consortium, Unicode Technical Site
- UTF-32, UTF-16, UTF-8, BOM
|
|
|
Homework
- Homework #1 (20 pts) Daytime Client/Server. Due:
2025-09-10.
- Homework #2/3 (30 pts) Trivial FTP. Due: 2025-10-31.
- Homework #4 (20 pts) MailFlux. Due: 2025-11-21.
- Homework #5 (20 pts) Chatter. Due: 2025-12-19.
Samples
Resources/Articles
Labs
In the past this was a lab course. For practical reasons related to the structuring of our
overall CIS offerings, the lab was removed from this course. However, the labs are still
interesting and can serve as a source of extended examples and as the basis for some
assignments.
The lab set is summarized in the lab summary document, along with links
to specific lab handouts and supporting code samples.
Last Revised: 2025-12-01
© Copyright 2025 by Peter Chapin <peter.chapin@vermontstate.edu>