CENG 463 Network Programming



Fatih University, Computer Engineering Department
Fall Semester 2002
Monday, 14:00 - 17:00, E302

Instructor: Halk Gmşkaya Teaching Assistant: Engin Tozal
Office: EA301 Office: ....
Office hours: Tue 13-14, Wed 14-15, Thur 15-16 Office hours:
Office phone: 0.212.889 0810-1036 Office phone:
e-mail: haluk@fatih.edu.tr e-mail: ..........
Mostly Static Information: Mostly Dynamic Information:
bulletCourse Description
bullet Lecture Announcements
bullet Prerequists

Homeworks, Lecture Notes

bullet Lecture Schedule

Project Page

bullet Textbooks


bullet Grading
bulletAcademic Integrity

Course Description

This course teaches how to design and implement network programs, protocols and systems in a distributed environment under TCP/IP using the Java programming language. The course tries to give some hands-on experience as well as some theoretical background. We will use the Internet and the Web as our test beds, and Java as our programming language.

The following topics will be given in the course: Quick review of TCP/IP and web basics, communication models of network programs, Java threads and multithreaded software design, Java I/O streams, Java net package and introduction to network programming with high level classes, TCP socket programming, UDP socket programming, multicast communication model and multicast sockets, accessing network databases with JDBC, distributed applications with RMI, Java web programming, servlets, JSP,  security in network applications and introduction to EJB.

The course will involve programming assignments, two midterms, a project, and a final exam. All programming is in Java. Students will conduct and present in-depth programming projects.


CS463 is an advanced undergraduate course and also is a graduate course. We will be covering topics from a number of other courses: CENG 102 Computer Programming, CS 362 Computer Networks, 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.

Lecture Schedule

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

1. Introduction to Network Programming, Quick Review of TCP/IP, Web Basics
Introduction to network programming, Internet (TCP/IP) architecture and how it works, TCP/IP reference model
TCP/IP protocols, sockets, ports, well-known ports and services, TCP and UDP, TCP-based connection-oriented communication steps, UDP-based connectionless communication steps, web basics.

2. Communication Models of Network Programs
Communication primitives: send and receive operations, communication models: client/server, peer-to-peer, group multicast and mobile agent, two, three-tier and multi-tier client/server architectures, concurrent processing in client/server software.

3. Java Threads and Multithreaded Software Design
What is a thread? multiprocessing and multithreading, thread structure, the life cycle of a thread: thread states, Iterative WebMaster and concurrent WebMaster examples, deamon threads, thread scheduling and priority, multithreaded programs and synchronizing threads, producer-consumer relationship, WebMaster: producer-consumer approach, deadlock problem.

4. Building Blocks of Networking: Java I/O Streams
Stream Basics, stream types, byte and character streams, I/O exceptions, data sink streams
data processing streams, object streams and object serialization, program examples.

5. Java Net Package and Introduction to Network Programming with High Level Classes
Java Network (java.net) Package, InetAddress, URL URLConnection classes and their applications.

TCP Socket Programming
Socket and ServerSocket classes, iterative connection-oriented client/server architecture and applications, concurrent connection-oriented client/server architecture and applications, a chat program.

7. UDP Socket Programming, Multicast Communication Model and Multicast Sockets
UDP Protocol and UDP Datagram, UDP and TCP Comparison, Java UDP Support, Java Classes for UDP Based Communication, UDP based client/server design, UDP application samples.

8. Accessing Network Databases with JDBC
Self study for projects.

9. D
istributed Applications with RMI
Introduction to distributed computing and RMI, RMI system architecture, developing an RMI application, RMI case studies: sample RMI programs

10. Java Web Programming, Servlets
Self study for projects.

Self study for projects.

12. Security in Network Applications
Not covered this semester.

13. I
ntroduction to EJB
Not covered this semester.


I will use my own lecture notes and slides during the semester. However the following books will frequently be also used and referenced in the lecture.



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



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


Java Network Programming (2nd edition), E. R. Harold, 731 pages, OReilly, 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, OReilly, 1999.


Java How to Program (4th Edition), H. M. Deitel, P. J. Deitel, 1546 pages, Prentice Hall,  2001.


One midterm, assignments, one project, one final exam. Dates and times will be announced on the web and in class. All exams will be open textbook only (no other books or notes.) There will be a single makeup exam that may be taken only by those who missed an exam due to documented medical reasons.

The grade for CENG 463 is calculated as  
20 % : Homework Assignments  
30 % : Project  
20 % : Midterm (near the middle of the course)
30 % : Final Exam (a comprehensive exam at the end of the course)