|
|
Fatih University, Computer Engineering Department
Fall
Semester 2003
Wednesday,
9:00 -
12:00,
E303 |
|
Instructor: Halûk
Gümüşkaya |
Teaching Assistant:
Nasif Ekiz |
Office:
EA301 |
Office:
EA-202 |
Office hours:
Tue 13-14, Wed 14-15, Thur 15-16 |
Office hours: |
Office phone:
0.212.889 0810-1036 |
Office phone:
1026 |
e-mail: haluk@fatih.edu.tr |
e-mail:
nekiz@fatih.edu.tr |
|
|
Mostly Static Information: |
Mostly Dynamic Information: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
are presented in the course: Communication models of network programs,
concurrency and concurrent programming, patterns for
concurrent and networked objects, 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, Java based wireless applications
development and J2ME, security in network applications and introduction to EJB.
The course will involve programming
assignments, one midterm,
a project, and a final exam. All programming is in Java. Students will
conduct and present in-depth programming assignments
and a project using
distributed and concurrent software design techniques (design patterns),
contemporary software development processes (like XP), tools (Together
6.1, JBuilder 9, MySQL, ...) , notations (like
UML).
Prerequisites
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 102 Computer Programming
(Java programming language), CENG 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
Week |
Topics
Covered |
1 |
Introduction to Network Programming and
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. |
2 |
Concurrency and Concurrent Programming
What is a Thread,
Multiprocessing and Multithreading, Thread Structure and Thread Creation,
The Life Cycle of a Thread: Thread States, Thread Scheduling and Priority. |
3 |
Concurrency and Concurrent Programming
(Continued)
Multithreaded Programs
and Synchronizing Threads, Basic Synchronization Strategies, Extending the
Threading Model, Producer-Consumer Problem, Deadlock Problem,
Patterns for Concurrent and Networked Objects (not given
in this semester). |
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.
|
5 |
Java Net
Package and Introduction to Network Programming with High Level Classes
Introduction to Java Net (java.net)
Package, InetAddress Class, URL Class, Communication Using,
URLConnection, JavaMail API.
|
6 |
TCP Socket Programming: Introduction,
Socket Class, ServerSocket Class,
Iterative Connection-Oriented Client/Server Applications,
Concurrent Connection-Oriented Client/Server Applications,
A Chat Program Example. |
7 |
UDP Socket Programming: UDP
Protocol and UDP Datagram, UDP and TCP Comparison,
Java UDP Support, UDP Based Client/Server
Design, UDP Application Samples. |
8 |
Introduction
to Distributed Computing: Remote Method Invocation (RMI)
(1): Introduction to Distributed
Computing, RMI System Architecture,
Developing an RMI Application. |
9 |
Introduction to Distributed Computing: Remote Method Invocation (RMI)
(2): 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. |
10 |
An Overview of Enterprise
Applications Development Using J2EE Platform:
Distributed Multitiered Applications,
J2EE Platform Architecture, Enterprise
JavaBeans (EJBs) Overview, J2EE Platform Software
Development Kit (J2EE 1.4 SDK), J2EE vs. .NET. |
11 |
Midterm
Exam |
12 |
Projects Meetings |
13 |
Projects Meetings |
14 |
Projects
Demo (7-9 January 2004) |
Textbooks
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
(for technology part of the
course)
|
Advanced Java 2 Platform, How to
Program, H. M. Deitel, S. E. Santry, P. J. Deitel, 1811 pages, Prentice Hall, 2002. |
|
Java Ağ Programcılığı,
H. Gümüşkaya, Ö. Boyacı, ALFA, 2003. |
References (for theory part of the course)
|
Distributed Systems,
Concepts and Design, Third Edition, 772 pages, G. Coulouris, J. Dollimore, T. Kindberg,
Addison Wesley, 2001. |
|
Pattern-Oriented
Software Architecture: Patterns for Concurrent and Networked Objects,
D. C. Schmidt, M. Stal, H. Rohnert and F. Buschmann,
Wiley & Sons, 2000. |
|
Java in Distributed Systems,
Concurrency, Distribution and Persistence, M. Boger, 414 pages, John
Wiley, 2001. |
Other References
|
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 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.
|
Tools and Development Environments
|
Together for JBuilder
6.1 (modeling, design and documentation tool)
|
|
Builder 9 (implementation
tool)
|
|
MySQL (for database
applications)
|
Grading
(tentative)
15 % : Homework Assignments
30 % : Project
25 % : Midterm
(near the middle of the course)
30 % : Final Exam (a
comprehensive exam at the end of the course)
Homework:
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.
Attendance: Attendance
is important in order to learn the topics in a timely manner. Attendance
will be forced by taking attendance
and
by making quizzes at random times.
Quizzes: There will
be
short quizzes at random times. We may not inform you about the quizzes. A
quiz may be done at any time during a lecture period.
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.
|