This course teaches how to design and implement network programs, protocols and systems for distributed systems. It tries to give hands-on experience as well as theoretical background. The following fundamental and advanced networking topics are presented in the course: Characterization of Distributed Systems, System Models, Interprocess Communication (IPC) -- Advanced Socket Programming, Distributed Computing using Java RMI, Message-Oriented Middleware (MOM), Multimedia Networking: Communication of Continuous Media (Streams), Peer-to-Peer Programming, Mobile Agents---, Concurrency and Operating Support, Introduction to Enterprise Applications Development using J2EE and J2ME Platforms.
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 362 Computer Networks, CENG 102 Computer Programming (Java programming language), 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. You should know TCP/UDP socket programming, iterative and concurrent TCP server design, multicasting and multicast programming which are taught in CENG 362 Computer Networks.
Since this is a graduate course, I recommend undergraduate students to take this course only if their GPA is higher than 3.00. If your are determined to work hard for this course load, your GPA is not so important!
The graduate students have more paper readings, discussions and presentations in this course. Their project also should be more difficult than undergrads. That is the amount of work and quality is expected to exceed that of undergraduate students. The grading criteria for graduates and undergraduates will also be different.
This is the tentative schedule. Please check it once before the lecture.
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:
10 % :
Attendance, Discussion and Contribution
Lectures: Theoretical foundations and background.
Attendance, Discussion and Contribution: Attendance is important to learn the topics in a timely manner. It will be forced by taking attendance and students who are absent over 30% of the lectures automatically fail the course. . A significant portion of the class time will be spent on mini-projects, developing system designs and discussing the readings in class. Your contribution to this, through participation and finding interesting readings, is part of your grade for the course.
Homework Assignments: 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.
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.
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.