Network Programming, Spring 2006

Instructor: Prof. Ying-Dar Lin

Email: ydlin@cs.nctu.edu.tw

www.cs.nctu.edu.tw/~ydlin

 

Course Objective: 

        This course covers TCP/IP network programming using Berkeley sockets as the application program interface. After an introduction to TCP/IP and sockets, TCP/UDP sockets and their example client-server programs are presented. A midterm is scheduled to review these. The second half of the course covers advanced topics including threads, IP options, datalink access, etc. Along the semester, three mini-program assignments will be given to modify the example programs in the text, including one TCP example, one UDP example, and one TCP thread example. A term project chosen from (1) chatroom client/server, (2) TCP proxy, or (3) HTTP server, is due at the end of the semester. Students may leverage the mini-projects to accumulate functions that lead to the final term project. A quiz at the end of the semester is to help you to review the key concepts in this course.

 

Pre-requisite: fluency in C language, operating system concepts

Textbook: W. Richard Stevens, UNIX Network Programming, Vol.1, Third Edition, Prentice Hall, 2004.

Course homepage: http://www.cis.nctu.edu.tw/~ydlin/course/cn/np/index.html

Grade: 36% for 3 mini-program reports (12% each), 30% for midterm, 14% for quiz, 20% for term project report and demo to TA.

Lecture: ED117, 12:30-3:20PM Thursday

 

Table of Content                                                                            Assignment

Part I: Elementary Sockets

1.  Introduction and TCP/IP

2.  Sockets Introduction

3.  Elementary TCP Sockets and TCP Client-Server Example    Mini-Project #1

4.  I/O Multiplexing and Socket Options

5.  Elementary UDP Sockets and UDP Client-Server Example   Mini-Project #2

Midterm

Part II: Advanced Sockets

1.  Client-Server Design Alternatives

2.  Name and Address Conversions

3.  Daemon Processes: syslogd and inetd

4.  Threads                                                                                        Mini-Project #3

5.  IP Options

6.  Raw Sockets

7.  Datalink Access                                                                            Quiz

Term Project: Report&Demo