Virginia Tech

Department of Computer Science


Computer Network Architecture and Programming

Spring 2006

Lectures: Tuesday and Thursday, MCB room 216, 5-6.15 PM


Instructor: Dr. Ayman Abdel-Hamid

Office: MCB Room 525

Office phone: 540-231-1927


Course home page:

Office hours: TR 2-3 PM or by appointment (Tentative)


TA: Likhita



Office Hours: T 1-2 PM and W 10-12 AM in MCB 116

Required Text

W. Richard Stevens, Bill Fenner, and Andrew Rudoff, Unix Network Programming, The Sockets Networking API, Volume 1, 3rd Edition, Addison-Wesley, 2004

Recommended Text

       Douglas E. Comer and David L. Stevens, Internetworking with TCP/IP Volume III: Client-Server Programming and Applications, Linux/POSIX sockets version, Prentice Hall, 2001

       Douglas E. Comer, Internetworking with TCP/IP Volume I: Principles, Protocols, and Architecture, 5th edition, Prentice Hall, 2005.


Course Objectives

The course is an introduction to computer network architecture and programming using the application programming interface known as sockets. The course will introduce basic architecture and protocols comprising the Internet. Upon successful completion of the course, the student should be able to develop network-aware applications from the ground up. Hands-on experience will be gained through several programming assignments/projects, which require C knowledge.



       A grade of C or better required in CS prerequisite 3204 (Operating Systems).

       Strong programming ability in C.

       User-level understanding of the UNIX operating system

       Ability to undertake substantial independent design projects



Tentatively, the topics that will be covered include (A full updated schedule will be available at the course website):

     Introduction and ISO layering architecture

     Introduction to TCP/IP

     The Transport layer: TCP, UDP, and SCTP

     Elementary Sockets

     Elementary TCP Sockets

     TCP Client/Server Example

     I/O Multiplexing

     Socket Options

     Elementary UDP Sockets

     Name and Address Conversions

     IPv4 and IPv6 Interoperability



     Client/Server Design Alternatives

     Network Security



Homework and Programming Assignments


Midterm Exam


Comprehensive Final Exam (May 6th 7-9 PM)


Course Project



The instructor reserves the right to change the grading scheme or add assignments/projects/exams.



All students are required to know how to create and send assignments electronically (using FTP). Assignments submitted after the due date will not be accepted unless extenuating circumstances exist and special arrangements are made prior to the due date.


Homework: Homework assignments will consist of problems from the text and supplemental problems provided by the instructor. Problem sets will be graded on overall effort and correctness of selected problems.


Programming Assignments: Assignments require the design, implementation, and testing of network-aware applications. The assignment code should be submitted electronically. Results and assignment reports should be submitted in electronic and paper form.


Course Project: The course project involves the design, implementation and validation of an industrial strength network service or application. A suggested project will be provided. If you wish to take up a different project, please contact the instructor. Students may pair up in groups of two (2) for the final project.


Midterm: There will be one in-class midterm. The exam will be open book and open notes.


Final Exam: There will be a comprehensive final exam. The exam will be open book and open notes.


Academic Honesty


The Virginia Tech honor code applies to all homework/assignments and examinations. The instructor's academic honesty policy is very strict; instances of academic dishonesty will be severely penalized. All work submitted must be the student's own work! In working on problem sets, discussion and cooperative learning are allowed and, in fact, encouraged. However, copying or otherwise using another person's detailed solutions to assigned problems is an honor code violation. Projects are to be the work of the individual student. You may discuss general concepts, such as system calls, software libraries, Internet resources, or class and text topics, with others. However, discussion of project solutions, specific code, or detailed report content is an honor code violation. All source material used in project code and reports must be properly cited. Please discuss any questions that you may have about what is or is not permitted with the instructor.



Special Needs or Circumstances


Any students with special needs or circumstances should feel free to meet with or otherwise contact the instructor.