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.
- 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 and gave a tour of the existing MailFlux code base.
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. Implement the
receive_file
function
for IPv6 in this skeletal TFTP client: tftpclient.c, tftpclient.h
Samples
- The daytime client/server in C demonstrates the basics of TCP
client/server programming using the Sockets API on Unix.
- The echo client/server in C demonstrates how to write a concurrent
server. Two versions are provided: one that uses individual child processes to handle each
client connection and one that uses threads.
- The IPv6 version of the daytime client/server demonstrates the
basics of IPv6 programming using the Sockets API.
- The
getaddrinfo()
function can be used to look up IP addresses and port
numbers. This demonstration program illustrates its use.
- A sample Unicode text file using UTF-8 and UTF-16 encoding.
- Some short programs that illustrate a few issues with the handling of extended (non-ASCII)
character sets: Java, C++.
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-10-17
© Copyright 2025 by Peter Chapin <peter.chapin@vermontstate.edu>