|
|
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)
|