Instructor: Zhiqing Liu
Office Hours: by appointment only
Home Page:
http://www.cs.iupui.edu/~zliu/536.01/
All supplemental
course materials, including announcements, project and homework assignments,
will be distributed from this page.
Course Overview: This course covers communication hardware technologies including local area and long haul network hardware, circuit and packet switching, interfaces between computer and network hardware, and performance issues. Network Architecture: protocol software and conceptual layering, reliable delivery over an unreliable channel, transport protocols, virtual circuits, datagrams, inter-networking as a fundamental design concept, the client-server paradigm, naming and name binding, name servers, addressing and address resolution, routing and routing algorithms, congestion and flow control techniques, network file systems, distribution of computation, DARPA Internet protocols (TCP/IP) as examples of protocol organization.
Grading: It is important for you to realize what grades in this class reflect, and what they don't reflect. Your grades reflect only how well you demonstrate that you know the materials of the class. Your grades don't reflect how much of success you will be after graduation, how smart/creative/persistent/self-motivated you are, or even how well you will be able to apply the materials in the future. And after all, it is what you do in the future, not what you do in the class, that really matters.
That said, grades will be determined roughly as follows:
You will develop a multithreaded Web server in Java, which is capable of serving multiple requests in parallel. You are going to implement key partions of HTTP version 1.1, as defined in RFC 2616. Specifically your implementation should support sections 1-10 and section 14.
Recall that HTTP 1.1 requires persistent TCP connections. Each of these connections will be handled by a separate thread. There will be a main thread listening for clients that want to establish connections. To simply the task, we will develop the code in two stages. In the firest stage, you will write a multithreaded server that simply displays the HTTP request messages received. After this program is running properly, you will add the code to generate an appropriate response in the second stage.
You can test your server with a Web browser. Please note that your Web server runs on a user port.
Textbooks:
Projects: A large project assignment of Java socket programming will be given. The project assignment must be done individually. More details about the project will be discussed in the class.
Homeworks: Homework assignments of short written problems will be given roughly at a biweekly rate. The idea is to give you opportunities to think more deeply about the concepts discussed in the lectures. The homework assignments must be done individually.