| 
     | 
    
    
      
        
          | 
           
          
          Fatih University, Computer Engineering Department  
          
          Fall 
          Semester 2002 
          
          Monday,
           
          14:00 - 17:00, E302  | 
         
        
          |   | 
         
        
          | 
          Instructor: Halûk 
          Gümüş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: | 
         
        
          | 
			
			 | 
          
			
			 | 
         
        
          | 
			
			 | 
          
			
			 | 
         
        
          | 
			
			 | 
          
			
			 | 
         
        
          | 
			
			 | 
          
			
			 | 
         
        
          | 
			
			 | 
            | 
         
        
          
			
				  | Academic 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.   
    
    
    Prerequisites 
    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.  
     
    6.
    
    
    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. Distributed 
    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. 
    
    
     
    11. 
    
    JSP 
    
    
    Self study for projects. 
    
    
    
     
    
    
    12. Security 
    in Network Applications 
    Not covered 
    this semester. 
     
    13. Introduction 
    to EJB 
    Not covered 
    this semester. 
    
    Textbooks 
    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. 
    
    Required 
    
		  | 
		 Beginning Java Networking, C. 
      Darby, J. Griffin, 
, 
      Paperback: 900 pages, Wrox Press, 2001.  |  
	 
    
    Recommended 
    
		  | 
		 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.  |  
	 
    
    Grading 
    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)  
      
     |