Roger L. Kraft

Syllabus
CS 40400 / CS 59000-01
Distributed Systems
Fall, 2013

Professor Roger Kraft
Office: Classroom Office Building, Room 368
Office phone: (219) 989-2696
Office hours: 5:00--6:00 TR, 1:00--2:00 MW, and by appointment.
E-mail: roger@purduecal.edu

Text:
Computer Networking: A Top-Down Approach, 6th Edition, by James F. Kurose and Keith W. Ross, Pearson, 2012.
or
Computer Networking: A Top-Down Approach, 5th Edition, by James F. Kurose and Keith W. Ross, Addison-Wesley, 2009.

Prerequisites:
CS 30200 with C or better, or consent of instructor. Also, a high-level programming language and elementary discrete mathematics.

This course is an introduction to the programming of distributed systems of computers. We will cover "loosely coupled" systems that use network programming techniques like sockets, remote procedure calls (RPC), and web services. In order to understand these ideas we will also cover topics like multithreading, synchronization, interprocess communication, basic networking, Internet protocols, client-server computing, distributesd architectures, and distributed algorithms.

This course will cover Chapters 1, 2, 3, and part of 4 from the textbook. Your grade for this course will be based on about 6 to 8 programming/homework assignments and two exams in the following manner:

           50%    assignments,
           25%    Exam 1,
           25%    Exam 2.

Tentative dates for the two exams are

           Exam 1   Tuesday, October 15
           Exam 2   Final exam week.

Each of the programming assignments will have a due date. To receive full credit for an assignment, it must be turned in by the due date. All programs handed in late will be marked off 5% of the total points for each calendar day late up to a maximum of 50%. If an assignment is more than two weeks late, then I reserve the right not to accept it for credit. When you complete a programming assignment you will turn in the source code for your solution using the university's course management system. In this course web site there are detailed instructions on how assignments are to be turned in. You will be expected to follow the instructions. Also in this web site is information on the criteria used to grade your programming assignments.

You should turn in your own work for each programming assignment. Here is what that means: You may talk with your other classmates about the course material and the ideas behind each homework assignment but you should solve each problem on your own and write your own code for the solution. Turning in someone else's solution (or even a modified version of someone else's solution) is a breach of academic integrity. Similarly, giving a copy of your solution to someone else in the class is also a breach of academic integrity. If you need help with a homework assignment, come and ask me. You can ask me as many questions as you want! Please do not hesitate to ask me questions after class, in my office, in an e-mail message, over the phone, etc.

The final grades for this course will use a plus and minus grading system. The possible grades for this course, and a tentative grading scale for the grades, is given in the table below. The final grading scale that I use may not quite be the same as the one given below (the grade cutoffs might possibly be lower, but they will not be any higher than what is given in this table).

A93 - 100
A-90 - 92
B+88 - 89
B83 - 87
B-80 - 82
C+78 - 79
C70 - 77
D+68 - 69
D63 - 67
D-60 - 62
F59 or less

The objectives for this course are as follows.

  1. Explain what interprocess communication is and explain why distributed systems depend on it.
  2. Explain the role of the socket(), bind(), listen(), accept(), and connect() functions from the sockets library.
  3. Explain what an application level protocol is and, in particular, explain the basics of the HTTP protocol.
  4. Write a client-server pair of programs that use either TCP or UDP sockets to implement a simple application level protocol.
  5. Explain the hierarchical, layered structure of a typical network architecture.

In this web site you will find more information about this course. There are pages that contain the lecture material and reading assignments from each class meeting, and the course homework assignments with their due dates.

The computer programs that you need to do all of your programming assignments are on computers in the Mathematics Computer Labs in CLO 363 and CLO 365.

Students who may need accommodations due to disability should contact the Office of Disability Resources (ODR) to discuss specific needs. The ODR is located on the third floor of the Student Union & Library Building, Room 341. If accommodations for a student are approved by that office, the student must provide his/her instructor with a copy of the official accommodations letter as soon as it is received in order to obtain accommodations. Students may contact the Office of Disability Resources by calling (219) 989-2455 or emailing odr@purduecal.edu.

Ethics are an integral part of being a student and a professional. Academic integrity is the hallmark of this University. Therefore, Purdue University does not tolerate academic dishonesty in any form. If a student breaches integrity, the student risks sanctions in both the academic and conduct arenas. Academic dishonesty includes, but is not limited to, the unauthorized use of other's intellectual property (plagiarism), and lying to an instructor or any University employee. Such actions WILL result in a failing grade on the assignment with the strong possibility of referral to the Office of the Dean of Students for a conduct sanction (see the Purdue University Calumet Student Handbook available from the Dean of Students office).

An information sheet, with instructions for various types of possible emergencies, is posted in each room on campus. These possibilities include criminal activity, fire, medical emergencies, and noises sounding like gunshots. Students are strongly encouraged to review this instruction sheet carefully and acquaint themselves with these important guidelines.