Introduction to Network Programming
Course #: CSCS10010
News
- 2022-11-09: All the lab scores are available here. If you have any questions regarding the scores, please ask the TA's or wait for a moment.
- 2023-09-28: The link to the main lab web page is available here.
- 2023-09-18: As we announced in class last week, we do **NOT** have class this Thursday (9/21). Our next class will be lectured next Thursday (9/28) in EC315/316.
- 2023-09-08: [IMPORTANT for course sign-up] If you plan to sign up for this course, please complete this form before our first class on Sept 14 and bring your sign-up application document to the class. We plan to sign up at most 12 students (only for CS and CS double-majored students unless we have additional capacity). If the number of requesting students in the form exceeds the expected number, we will run an online lottery in the class using the Google spreadsheet.
- 2023-09-01: Course website refreshed.
Homework Submission Procedure
- Pack all your files into a single tar.gz archive file.
- Upload your homework via the E3 system.
Downloads
- Slides: syllabus, intro, transport, socket, tcpsocket, tcp-example, multiplex, sockopt, udp, addrconv, daemon, advio, unix, nonblock, broadcast, rawsocket
- Container files for sample: (20230913 updated)
- Debian: Dockerfile and docker-compose.yml.
- Replace 'chuang' with the username you like, and choose your preferred UID and GID.
- The default password is 'sense'.
- Use `passwd' command in your docker to setup your password.
- (as root) Create your home directory in /home/<username> if it does not exist.
- Note for Apple Chip Users: You have to enable "Use Docker Compose V2" in your Docker Desktop options.
- Sample codes download: from textbook authors.
- If you are new to Linux, you may try to install Ubuntu (Mint, or Manjaro) Linux and read its manual from the ubuntu-manual website.
- If you would like to try various UNIX OSes, you may have a look at the DistroWatch website.
- Quick References: SystemV Commands Pocket Guide, Common Unix Commands, Summary of common Unix Commands, GDB reference card (7.2).
- OS pre-defined compiler macros.
Course Information
- Lectures: Thursday 10:10--12:00.
- Office Hours: by appointment @ EC417
- Classroom: EC015 / EC315, 316, 324 (PC classroom).
- Textbook: W. Richard Stevens, "UNIX Network Programming, Vol. 1," 3rd ed., Addison Wesley (開發圖書)
- TAs:
- TA group
Email:echo 'dGFAem9vbGFiLm9yZwo=' | base64 -d
(you know how to decode it if you have participated the class on the 1st day)
- TA group
- Course Topics:
- Computer Network Applications
- Introduction to Network Programming
- Transportation Layer: TCP and UDP
- Socket Introduction
- Elementary TCP Sockets
- TCP Client/Server Example
- I/O Multiplexing
- Midterm
- Socket Options
- UDP Sockets
- Name and Address Conversions
- Advanced I/O Functions
- Nonblocking I/O
- ioctl() Operations
- Raw Sockets
- Threads
- Other Topics
- Grading policy: Lab (50%), Homework (40%), Class participation (10%)
- Lab/Homework submission policy:
- Lab (100% if you solve the lab in the class; 85% if you solve the lab in one week; 75% if you solve the lab in two weeks).
- Homework (100% before deadline; 80% for late submission in one week)
- Homework judgment policy: We do not welcome copycats. You are encourages to discuss with your classmates, but all your submissions must be your own work.
- Course/Lab schedule (last update: 20230901)
Week Date Topic 1 09/14 intro <lecture only, no lab> 2 09/21 transport layer <no lab; no class> 3 09/28 socket 4 10/05 TCP socket 5 10/12 TCP examples 6 10/19 I/O multiplexing 7 10/26 socket options 8 11/02 address conversion (pt 1-2) <no lab, no midterm, no class> 9 11/09 address conversion (pt 3-4) <hw1 announced> 10 11/16 udp 11 11/23 unix domain socket 12 11/30 hw1 due <in-class homework demo> 13 12/07 non-blocking 14 12/14 broadcast <hw2 announced> 15 12/21 raw socket 16 12/28 <no lab, no final, no class> 17 01/04 hw2 due <in-class homework demo>