CS 424 Computer Network Programming - Spring 2002


Announcements: please read the announcements section regularly!


Instructor: İbrahim Körpeoğlu   EA-408 korpe@cs.bilkent.edu.tr
Assistant:
Tağmac Topal           EA-522 tagmac@cs.bilkent.edu.tr
Class Hours:
Mon 13:40-15:30  (EB268),  Wed 8:40-9:30 (EB267)   (section 1)
                      
Wed 16:40-17:30 (EB262),  Fri 10:40-12:30 (EB267)  (section 2)

Office Hours: Any time when I am in the office  


Course Objective

This course is intended for advanced undergraduate students. It aims for the sudents to gain experience in systems and network programming together with writing efficient, portable, correct, and large scale programs in the Unix environment using C language. It build on Operating System and Computer Networking courses and it is a natuaral progression of these courses. But instead of designing the components of an operating system, this course addresses how programs in distributed systems can make use of OS services.  Where necessary, concepts of the underlying protocol or system will be discussed.

Textbook

Some papers (whitepapers) and documents will be distributed on topics which are not covered by the textbook. İ will also put the documents that are online and related to our topics here. You ca  use them while studying for the course.

Recommended Documentation to Read:

RFCs (Request for Comments) are documents that describe/specify various Internet Protocols. They are     developed by IETF (Internet   Engineering Task Force), the organization that is responsible from developing the Internet related standards. Below I am including the RFCs that are related to the protocols that we studied in the class.  You can access/search the list of RFCs from the web page of IETF. You just type the related keyword(s) for the protocol that you want information for and it will give the whole list of related RFCs.

Recommended Books:


Prerequisites:  There is no course set as a prerequsite. However, the  followings are requirements for taking this course:

Hardware and Software Requirements: Students need to have access to Unix machines (Solaris). Student may either work from the console of the unix machines or they can connect to the unix machines from PCs(Windows) using telnet, Xceed or Xwin.


Course Description

Basics of TCP/IP, Socket Programming, UDP and TCP Sockets, I/O Multiplexing, Name and Address Convesions, Unix Domain Protocols, Non-blocking I/O, Boradcasting and Multicasting, Threads, Data-Link Layer Access, Interprocess Communication, Shared Memory, Message Queues, Semaphores. If time permits we will make introduction to mobile and wireless networs and Bluetooth technology.

Course Outline (tentative)


Exams and Grades

             Midterm:  April 19, 2002, Friday, 5:40 pm - 8:00pm
             Final:        May 23, 2002, Thursday, 9:00 am.  
Classrooms: EB-261,262,267 


Lecture Notes

Date Slides/Topic
Feb 8, 2002 (2 class lecture) Lecture 1, Introduction, Overview of Unix Programming Environment, Unix Programing Tools

Feb 13 -15, 2002

Lecture 2, Introduction to Computer Networking and TCP/IP
Feb 15, 2002 Lecture 3, C Programming Overview
Feb 20, 2002 Lecture 4, TCP/IP Protocols
Feb 27, 2002 Lecture 5, TCP/IP Protocols
March 8, 2002 Lecture 6, Introduction to Socket Programming
March 13, 2002 Lecture 7, TCP Sockets and Concurrent Servers
March 15, 2002 Lecture 8, I/O Multiplexing and Socket Options
March 21, 2002 Lecture 9, UDP Sockets and Name and Address Conversions
March 29, 2002 Lecture 10, Daemon Processses and Inetd Superserver
March 29, 2002 Lecture 11, Advanced I/O and Timeouts
April 8, 2002. Lecture 12, Non-blocking Sockets
April 17, 2002 Lecture 13, Unix Domain Sockets
April 17, 2002 Lecture 14, Threads
April 30, 2002 Lecture 15, Broadcasting
May 6, 2002. Lecture 16, Multicasting
May 9, 2002 Lecture 17, Advanced UDP Sockets
May 17, 2002 Lecture 18, Ioctl Operations

Homeworks

The homeworks will contain programming exercises. See Coding Guidelines for writing neat programs.
See the submission rules about how to submit your programs/homework to TA.

Homeworks Assigned date Due date Solution
Homework 1 Feb 8, 2002 Feb 20, 2002, Wednesday.  
Homework 2 Feb 27, 2002
Wednesday
March 6, 2002 Wednesday Homework 2

Projects

One or two projects will be assigned. The project(s) will require programming with C language in Unix environment. Please try to follow the Coding Guidelines so that you can exprience in writing readable, consistent and neat programs.

Projects Assigned date Due date
Project 1 March 20, 2002 April 8, 2002, Monday, noon-12:00pm
Project 2 April 5, 2001 April 24, 2002

Resources and Useful Links