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.
Midterm: April 19, 2002, Friday,
5:40 pm - 8:00pm
Final: May 23, 2002, Thursday, 9:00
am. Classrooms: EB-261,262,267
| 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 |
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 |
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 |