CSC 376 Distributed Systems
Winter 2016-2017
MW 1:30pm - 3:00pm in CDM 216
Karen Heart, MS, Instructor
kheart@depaul.edu
(312)362-1469
Syllabus
Last revised: 12-21-16
Summary of the course
This course provides an introduction to distributed systems, primarily through a focus on the design and development of software that transmits information across networks. Topics will include some but, perhaps, not all of the following: the architecture of distributed systems; networking; synchronous and asynchronous protocols network programming; remote procedure calls; threading and shared memory concurrency; cryptography and security.
Textbooks and printed resources
Java Network Programming (4th edition), E. R. Harold. O'Reilly & Associates, 2013, Print ISBN: 978-1449357672.
The textbook is not required and no reading assignments will be given from it. It is a useful resource for learning the programming techniques in which you must develop basic proficiency in order to pass this course.
Prerequisites
CSC 301, 383, or CSC 393; and CSC 374
Office Hours
During classes, I will be in my office, CDM 838, as follows:
- M 3:15pm - 4:15pm
- T 11:45am - 12:15pm
- T 1:30pm - 4:30pm
During Finals week, I will be in my office as follows:
- W 9:30am - 11:15am
- W 2:00pm - 2:45pm
- Th 11am - 12:00pm
- Th 1:30pm - 2:30pm
Approach, Exercises, and Grading
Overview
This course focuses on the implementation of distributed systems using a system level library. The programming languages used will be Python and Java. Ongoing programming projects will serve as the main focus on the course. Additionally, homework problems covering various aspects of networking and related topics will also be provided. Your understanding of the material will be tested through a Midterm and a Final exam. Further details will be posted on the class website, which is on Desire2Learn (D2L).
Approach
- This course covers a great many concepts and technologies, some discussed in brief while others investigated in greater detail. A primary goal of the course is to apprise the students of the body of knowledge regarding distributed systems. An equally important goal is for the students to develop some level of proficiency and expertise in at least one designated topic. A final goal is for the students to develop some level of proficiency at developing a simple distributed system.
- In furtherance of these goals, the course material will be organized along two, orthogonal dimensions. Although all topics will be covered with the class in whole, students will be divided into sections that focus on a single topic. Specifically, students will be assigned randomly to topic sections and will be expected to concentrate on those topics for the duration of the course. At the end of the quarter, students from each topic section will present a brief summary of their experience and recommendations regarding the topic to the entire class.
- Additionally, students will participate in projects to build simple distributed systems. Students may participate in all aspects of the design and implementation of these systems; however, they are expected to focus primarily on the aspects that are informed by their assigned topic sections. Optimally, students will serve on their projects as experts in their respective topics of study. These interactions are represented visually in the following diagram:
- Details regarding assignment to topic sections and enrollment in project groups will be discussed in class and posted on D2L.
Exercises
- The primary exercise will be programming in the form of a group project. The project is designed to develop proficiency in performing system level tasks that underpin distributed systems. You will work with others in your group, who will be assigned to other topic sections. By working together, you should develop some level of proficiency in all aspects of the project.
- The projects address real-world concerns identified by industry professionals during a focus group hosted by DePaul's Steans Center for Community-based Learning and the College of Digital Media.
- The project will be assessed on a pass/fail basis; projects that achieve their specifications will pass, while those that do not achieve a significant level of functionality will fail. All students in a project group shall receive the same amount of points for their project, with one exception. A student who disagrees with the use of the submitted code on the basis of the specification may submit an alternative version. Notably, the code offered by the dissenting student must achieve the functionality of the specification to the same extent as the code submitted by the project group.
- In order to expedite the development of the ability of students to contribute code to the project, I will provide two programming exercises. These exercises are designed to reinforce the use of the system level library that underpins distributed systems. You should complete these exercises individually in order to maximize your benefit; however, you may discuss them with your classmates. I will also supply you with sample solution code. You may look at the solution code if you are stuck; otherwise, I would recommend reviewing it after you complete your code. The sample solution code will also be helpful in correcting any misunderstandings or gaps in your knowledge.
- Additionally, I will provide three homework problem sets, consisting mainly of problems involving protocols and infrastructure. You should complete these problems individually in order to maximize your benefit; however, you may discuss the problems with your classmates. I will also supply you with the answers to the homework problems. You may look at the answers if you are stuck; otherwise, I would recommend reviewing them after you complete the problems in order to determine how well you performed. The answers will also be helpful in correcting any misunderstandings or gaps in your knowledge.
- Although I will not grade your programming exercises or homework problems, I will use them to devise questions for the exams.
Grading
- The Midterm exam will consist of questions drawn from the lectures and the homework problems. Some of the questions will involve programming that you should have performed as part of the group project.
- The Final exam is comprehensive and the questions will be drawn in the same way as for the Midterm.
- In order to reward only those students who actively participate in their topic sections, all students will be required to file an acknowledgement detailing which students contributed in a meaningful way to the content of the the topic presentation. Students who do not participate accordingly may present an alternative summary and set of recommendations.
- Similarly, contributions of code to projects will also be acknowledged by all students using a form that I will supply. In cases where students do not contribute code that is selected by the group for inclusion in their project, those students may offer their code as an alternative, as described above in the "Exercises" section. Students must acknowledge the offering of alternatives on the forms, as well. Notably, each student must contribute code in a meaningful way to the project. Each student must contribute at least two hundred (200) lines of original code to the project in order to qualify for credit; comments will not be counted. A student who does not contribute at least 200 lines of code will receive zero (0) points for the group project!
- The grade for the course will be based on the following formula:
- If you fail the group project, you fail the course!
- Assuming that you do not fail the group project, then your grade for the course is a weighted average of the Midterm Exam and the Final Exam on a one hundred point scale, less deductions. The Midterm Exam counts for 90% of the grade, and the Final Exam counts for 10%.
- If you do not contribute in a meaningful way to the topic section presentation, then 30 points will be deducted from your final grade.
- The penalty for unexcused absences, if assessed, will be deducted from your final grade. (see "Attendance," below).
- I will also select the best presentation. Students who contributed to the presentation, as described above, will receive 5 extra points added to their Midterm Exam scores. Likewise, the student who presents the best alternative summary and set of recommendations will also receive 5 extra points on the Midterm Exam.
- NOTE: I will not curve the course grades; therefore, you must earn at least an average of 70% in order to pass the course.
Alternative grade procedure for Midterm and Final exams: If you have a documented disability, such as a history of extreme test taking anxiety, please see me for accommodation.
Policy on Working Together
N/A
Course Schedule
TBD
Attendance
Because both your topic section and your project group will meet during class time, your attendance is mandatory. Absences will be excused only for documented medical reasons. If you are absent without permission more than two (2) times, your final grade for the course will be lowered automatically by 10 points, meaning one letter grade.
Academic Integrity and Plagiarism
This course will be subject to the university's academic integrity policy. More information can be found at http://academicintegrity.depaul.edu/. If you have any questions be sure to consult with your professor.
Academic Policies
All students are required to manage their class schedules each term in accordance with the deadlines for enrolling and withdrawing as indicated in the University Academic Calendar. Information on enrollment, withdrawal, grading and incompletes can be found at: http://cdm.depaul.edu/enrollment.
Students with Disabilities
Students who feel they may need an accommodation based on the impact of a disability should contact the instructor privately to discuss their specific needs. All discussions will remain confidential. To ensure that you receive the most appropriate accommodation based on your needs, contact the instructor as early as possible in the quarter (preferably within the first week of class), and make sure that you have contacted the Center for Students with Disabilities (CSD) at: csd@depaul.edu.
Lewis Center 1420, 25 East Jackson Blvd.
Phone number: (312)362-8002
Fax: (312)362-6544
TTY: (773)325.7296
Online Course Evaluations
Evaluations are a way for students to provide valuable feedback regarding their instructor and the course. Detailed feedback will enable the instructor to continuously tailor teaching methods and course content to meet the learning goals of the course and the academic needs of the students. They are a requirement of the course and are key to continue to provide you with the highest quality of teaching. The evaluations are anonymous; the instructor and administration do not track who entered what responses. A program is used to check if the student completed the evaluations, but the evaluation is completely separate from the student’s identity. Since 100% participation is our goal, students are sent periodic reminders over three weeks. Students do not receive reminders once they complete the evaluation. Students complete the evaluation online in CampusConnect.
Changes to Syllabus
This syllabus is subject to change as necessary during the quarter. If a change occurs, it will be thoroughly addressed during class, posted under Announcements in D2L and sent via email.
School Policies
Policies of the school are explained on the webpage for this course on my.cdm.depaul.edu.