CENG 564/463 Network Programming



Fatih University, Computer Engineering Department
Fall Semester 2004
Wednesday: 13:00 - 14:00, Thursday: 9:00 - 11:00  E303

Instructor: Halûk Gümüşkaya Teaching Assistant: Engin Tozal
Office: EA301 Office:
Office hours: Office hours:
Office phone: 0.212.889 0810-1036 Office phone: 1027
e-mail: haluk@fatih.edu.tr e-mail: engintozal@fatih.edu.tr  
Mostly Static Information: Mostly Dynamic Information:
bulletCourse Description
bullet Lecture Announcements
bullet Prerequists

Course Materials

bullet Lecture Schedule
bullet References and Readings
bullet Textbooks
bullet Project Page
bullet Tools and Development Environments
bullet Grades
bullet Academic Integrity

Course Description

This course teaches how to design and implement network programs, protocols and systems for distributed systems. It tries to give hands-on experience as well as theoretical background. The following fundamental and advanced networking topics are presented in the course: Characterization of Distributed Systems, System Models, Interprocess Communication (IPC) -- Advanced Socket Programming, Distributed Computing using Java RMI, Message-Oriented Middleware (MOM), Multimedia Networking: Communication of Continuous Media (Streams), Peer-to-Peer Programming, Mobile Agents---, Concurrency and Operating Support, Introduction to Enterprise Applications Development using J2EE and J2ME Platforms.


CENG 564/463 is an advanced undergraduate course and also is a graduate course. We will be covering topics from a number of other courses: CENG 362 Computer Networks, CENG 102 Computer Programming (Java programming language), CENG 217 Object Oriented Programming, CENG 341 Operating Systems and CENG 302 Software Engineering. You will be required to understand a lot of diverse material and apply it in network programs. It also does require a high level of Java programming skills. You should know TCP/UDP socket programming, iterative and concurrent TCP server design, multicasting and multicast programming which are taught in CENG 362 Computer Networks.

Since this is a graduate course, I recommend undergraduate students to take this course only if their GPA is higher than 3.00. If your are determined to work hard for this course load, your GPA is not so important!

The graduate students have more paper readings, discussions and presentations in this course. Their project also should be more difficult than undergrads. That is the amount of work and quality is expected to exceed that of undergraduate students. The grading criteria for graduates and undergraduates will also be different.

Lecture Schedule

This is the tentative schedule. Please check it once before the lecture.

Week Topics Covered
  Course Overview,
Introduction and Characterization of Distributed Systems

Introduction to Distributed Systems and Network Programming, Reasons for Distributed Systems, Examples of Distributed Systems, Challenges in the Design of Distributed Systems.
  System Models
Software Layers, An Overview of Architectural Models, Client/Server Model, Further Variants of Client/Server Model, Fundamental Models

Interprocess Communication
Introduction to Interprocess Communication: Primitives for Interprocess Communication, Message Passing, Forms of Communication


Advanced Socket Programming: Quick Review of TCP/UDP Socket Programming, Advanced Sockets Programming and Design Issues in Client/Server Programming, Writing a non-blocking Client/Server Application using the New I/O in JDK 1.4 for Non-Blocking Sockets.


Introduction to Distributed Computing (Objects) using Java RMI: Introduction to Remote Procedure Call (RPC), Distributed Computing, RMI System Architecture, Developing an RMI Application, RMI Architectural Details, Parameters in RMI, Building a Generic Compute Engine, Dynamic Class Loading, Creating a Peer-to-Peer RMI Application, A 3-tier RMI-JDBC Application, Activable RMI Server Objects.

  Message-Oriented Middleware (MOM)
Point-to-point and publish/subscribe messaging models, the Java Message Service (JMS) API to build messaging applications in Java, Introduction to J2EE and Sun Java Application Server Platform Edition 8 (J2EE 1.4 compatible server)
  Multimedia Networking: Communication of Continuous Media (Streams)
Multimedia Networking Applications, Streaming stored audio and video, RTSP, Real-time Multimedia: Internet Phone Case Study, Protocols for Real-Time Interactive Applications: RTP, RTCP, SIP
  Peer-to-Peer Programming
  Mobile Agents
  Introduction to Enterprise Applications Development using J2EE and J2ME Platforms
Distributed Multitiered Applications, J2EE Platform Architecture, Enterprise JavaBeans (EJBs), Overview J2EE Platform Software Development Kit (J2EE 1.4 SDK), J2EE vs. .NET,
Introduction to J2ME and Wireless Network Programming with J2ME


There is no single textbook that adequately covers such a diverse range of topics that are taught in this course. Buying multiple textbooks is clearly not very appealing financially. I therefore will try to prepare my own lecture handouts and slides available as course notes and they will be available at the photocopy center or on the web site of the course. Here are some textbooks that are helpful for various parts of the course:

Main References


Distributed Systems, Concepts and Design, Third Edition, G. Coulouris, J. Dollimore, T. Kindberg, 772 pages, Addison Wesley, 2001.


Distributed Systems: Principles and Paradigms, 1st Edition, Andrew S. Tanenbaum, Maarten van Steen, Prentice Hall, 803 pages, 2002.

Other References


Advanced Java 2 Platform, How to Program, H. M. Deitel, S. E. Santry, P. J. Deitel, 1811 pages, Prentice Hall,  2002.


Java in Distributed Systems, Concurrency, Distribution and Persistence, M. Boger, 414 pages, John Wiley, 2001.


Beginning Java Networking, C. Darby, J. Griffin, …, 900 pages, Wrox Press, 2001.


An Introduction to Network Programming with Java, J. Graba, 374 pages, Addison Wesley, 2003.


Java Distributed Computing, Jim Farley, O'Reilly, 2001.


Java Network Programming (2nd edition), E. R. Harold, 731 pages, O’Reilly, 2000.


Java Network Programming (2nd Edition), M. Hughes, C. Hughes, M. Shoffner, D. Hamner, Manning Publications, 807 pages, 1999.


Java I/O, E. R. Harold,  596 pages, O’Reilly, 1999.


Java Ağ Programcılığı, H. Gümüşkaya, Ö. Boyacı, ALFA, 2003.

Tools and Development Environments


JBuilder or Eclipse (implementation tool)


Together (modeling, design and documentation tool)


MySQL (for database applications)


Sun Java System Application Server Platform

Grading (tentative)

10 % : Attendance, Discussion and Contribution  
15 % : Homework Assignments  
25 % : Project  
20 % : Midterm (near the middle of the course)
30 % : Final Exam (a comprehensive exam at the end of the course)

Lectures: Theoretical foundations and background.

Attendance, Discussion and Contribution: Attendance is important to learn the topics in a timely manner. It will be forced by taking attendance and students who are absent over 30% of the lectures automatically fail the course. . A significant portion of the class time will be spent on mini-projects, developing system designs and discussing the readings in class. Your contribution to this, through participation and finding interesting readings, is part of your grade for the course.

Homework Assignments: There will be homework in every 2 or 3 weeks. The purpose of the homework is to give you a chance to exercise the knowledge gained from the recent class material.

Project: The project is very important for a course of this kind.

Midterm Exam: There will be one midterm exam that will be given around the mid of the semester.

Final Exam: There will be one final exam that will be given during final exams period of the semester.

Academic Integrity

We will be very careful in grading the projects, homeworks, exams so that everybody gets the grade that he/she deserves. Copying will not be tolerated and will be checked and punished rigorously.

The Fatih University has a very strict policy on academic dishonesty. All work on homeworks and examinations must be strictly individual.  Violations of this policy will result in an F grade for the class and may result in suspension/expulsion from the university.