|     |  | 
      
        
          | 
          
          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 BasicsIntroduction 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 DesignWhat 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 StreamsStream 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)
   |