This course conveys key concepts for designing and building distributed software systems. The course is geared towards software engineers that work mostly at the application-level, but need to understand the features and limitations of existing middleware for distributed systems. Additionally, the course covers some research topics related to currently open problems. Specifically, some of the topic that will be covered are as follows: definition and scope of distribution, principles of communication and computation, socket programming, remote method invocation, software architecture of distributed systems, middleware systems, service discovery, quality of service, adaptive systems, mobility, security, and fault tolerance.
|Class:||SWE 622 - Distributed Software Engineering|
|Professor:||Dr. David A. Wheeler. Email dwheele4 at gmu *dot* edu (no “r”). 703-845-6662. GMU email is my preferred method, but call if you are in a hurry. Office hours by appointment only.|
|Class Hours & Location:||Wednesdays, 7:20 pm - 10:00 pm, Nguyen Engineering Building 1103|
|Prerequisites:||SWE Foundation courses and strong Java programming experience.|
|Class website:||Use Blackboard 9.1. Log in to mymasonportal.gmu.edu, select the “Sources” tab, and select “SWE 622” (for this semester)|
The syllabus, including the schedule and topics to be covered, is subject to change, but I will notify you of any changes. This class is based on the structure set up by Dr. Sam Malek; you'll see his name or URLs pointing to his site occasionally.
The textbook is Distributed Systems: Principles and Paradigms (2nd edition), Andrew S. Tanenbaum, Maarten Van Steen, 2007, ISBN 0-13-239227-5. See below for supplemental papers.
I may add a few additional required reading articles as we go.
I grade on results, not effort.
The lectures will cover the key issues and explain some things that might not be clear otherwise. However, you are responsible for reading and understanding the material in the assigned readings (and not just knowing what’s in the lectures).
First actual class date is September 2, 2015; the last normal class day is December 9. The last scheduled class day, December 16, has a slightly different time (7:30 pm - 10:15 pm) and might not be used for lecture (this is the time assigned for final examinations). We do not meet on November 25 due to Thanksgiving recess. See the GMU calendar for general information on the GMU calendar. I routinely check the list of ”non-work” religious holidays maintained by GMU.
Here is the current calendar (changes may occur):
|2015-09-02||Week 1. Topic: Introduction. Tanenbaum 1. J. Waldo, G. Wyant, A. Wollrath, and S. Kendall, "A Note on Distributed Computing."|
|2015-09-09||Week 2. Topic: Communication Fundamentals and Intro to Middleware Solutions. Tanenbaum 4.1 - 4.3. W. Emmerich, "Software Engineering and Middleware: A Roadmap."|
|2015-09-16||Week 3. Topic: Middleware Solutions. Tanenbaum 4.3 - 4.5. A. Carzaniga, D.S. Rosenblum, and A.L. Wolf, "Design and Evaluation of a Wide-Area Event Notification Service.". RMI Tutorial.|
|2015-09-23||Week 4. Topic: Continue lecture on middleware solutions. If we get ahead, I plan to just continue on to the next week's material. Homework 1 is due.|
|2015-09-30||Week 5. Topic: Naming, Service Discovery, and Service-Oriented Computing. Tanenbaum 5.1 - 5.3, Tanenbaum 12 Debu Panda, "An Introduction to Service-Oriented Architecture from a Java Developer Perspective." Robert E. McGrath, "Discovery and its Discontents: Discovery Protocols for Ubiquitous Computing." Steve Vinoski, "Where is Middleware?” Homework 2 is due.|
|2015-10-07||Week 6. Continue lecture on SOA.|
|2015-10-14||Week 7. Topic: Synchronization. Tanenbaum 6.1 - 6.2.|
|2015-10-21||Week 8. Topic: Consistency and Coordination. Tanenbaum 3.1 and Tanenbaum 7. Programming assignment 1 is due.|
|2015-10-28||Week 9. Midterm exam.|
|2015-11-04||Week 10. Topic: Replication and Fault Tolerance. Tanenbaum 8.1 - 8.3, Tanenbaum 8.5 - 8.6. Homework 3 due.|
|2015-11-11||Week 11. Topic: Security. Tanenbaum 9. Homework 4 is due.|
|2015-11-18||Week 12. Topic: Mobility and Adaptation. Tanenbaum 2.4, Tanenbaum 3.5. A. Carzaniga, G. P. Picco, and G. Vigna. "Designing Distributed Applications with Mobile Code Paradigms." J. O. Kephart, D. Chess. “The Vision of Autonomic Computing.” IEEE Computer Vol. 36(1): 41-50 (2003)|
|2015-12-02||Week 13. Apache Hadoop and Spark Final review. Programming assignment 2 due.|
|2015-12-09||Week 14. Homework 5 due. Reading day. I do not plan to physically meet on that day, but please be prepared to physically meet in case I change my mind.|
|2015-12-16||Week 15. Final exam.|
In class, please pay attention and don’t distract others. Please configure cell phones to vibrate (and not make noise) in class.
Please talk to me ahead-of-time if you have an anticipated absence that will interfere with the mid-term, your topic presentation, or final presentation, e.g., a non-work religious holiday, out-of-town work travel, or GMU athletic meet. I can easily reschedule topic presentations; the others are much harder. Don’t bother telling me if you’ll miss other class times; I strongly recommend class attendance, but I understand if work, family, or other commitments sometimes make that difficult to do. You can always turn in work early (e.g., if the deadline conflicts with a religious holiday).
GMU is an Honor Code university; please see the University Catalog for a full description of the code and the honor committee process. The principle of academic integrity is taken very seriously and violations are treated gravely. What does academic integrity mean in this course? Essentially this: when you are responsible for a task, you will perform that task. When you rely on someone else’s work in an aspect of the performance of that task, you will give full credit in the proper, accepted form. Another aspect of academic integrity is the free play of ideas. Vigorous discussion and debate are encouraged in this course, with the firm expectation that all aspects of the class will be conducted with civility and respect for differing ideas, perspectives, and traditions. When in doubt (of any kind) please ask for guidance and clarification. Do not plagiarize. See the Computer Science Honor Code policies for more.
Although students are encouraged to discuss the topics covered in class, all homework assignments, exams, and projects are to be completed individually, unless joint work is explicitly authorized by the instructor. If joint work is authorized, all contributing students must be listed on the submission. Presenting as one's own the words, the work, or the opinions of someone else without proper acknowledgment is plagiarism. Any deviation from the aforementioned policies is considered to be a violation of GMU’s Honor Code. Honor code violations can result in the failure of the submission, failure of the class, or other penalties.
Please use the instructor’s email address for class questions. You must use your Mason email account for all email correspondence having anything to do with your work at Mason. Federal laws protecting your privacy rights require that we only communicate student information directly to students - and use of the university email system is our only way to validate your identity on email. You may forward your campus email elsewhere, but we can respond only to a Mason email account.
If you are a student with a disability and you need academic accommodations, it’s nice to let me know as a courtesy, but you must contact the Office of Disability Services (ODS) at 703-993-2474 or http://ods.gmu.edu. All academic accommodations must be arranged through the ODS, not through me. If you qualify for accommodation, the ODS staff will give you a form detailing appropriate accommodations for your instructor (me), please bring that form to me.
This syllabus is version 2015-08-09.