COP5615: Dist Oper Sys Princ, Fall 2019
Meeting Time/Place: T Period 2-3 (8:30-10:25AM), T Period 3 (9:35-10:25AM) in CLB C130 Prerequisites: COP 4600, plus Java experience
Instructor: Prof. Alin Dobra
Email: adobra at cise.ufl.edu URL: http://www.cise.ufl.edu/~adobra/ Office: Room E434 CSE Building Phone: (352) 514-0743 Office hours: MWF Period 7 (1:55-2:50) Course Objectives: Study the design and implementation of distributed systems and applications in multi-core and networked environments.
Informal Course Description: All devices from phones (and some watches) to supercomputers are connected to the Internet or other communication networks. On the other hand, we have problems that are too large for any one device -- we need to involve multiple devices/machines to solve such problems. Distributed systems principles and methods are crucial for tackling such a task. Networking provides the communication infrastructure, Algorithms/Data-structures/Databases the computational techniques but Distributed Systems provide the glue that holds everything together under mildly or harshly adversarial conditions. This class will be focused on tackling the challenges that arise in a principled manner.
An interesting consequence of this class is that you will become a better multi-core programmer. Modern computers resemble a lot more a distributed system that they do a traditional, uni-core, system. Methods and techniques to deal with the distributed system challenges are very useful for multi-core programming as well. The class will involve a lot of programming in Elixir. Elixir (Links to an external site.) is a new programming language that provides a modern pure functional programming interface on top of Erlang. Elixir is positioned as the new kid on the block when it comes to distributed systems and may very well be the key for a lot of future distributed system programming thus it is likely to be a good language to know and understand. While quite old, Erlang's ecosystem (especially OTP) is extremely high-quality and powerful.
The key concept is class will be the "Actor Model". This is a large departure from the way most distributed systems classes are taught and how most programming is done.
Required Reading During the semester I will assign separate reading you have to do on your own. It is impossible to teach all the interesting material in class -- a lot of issues can be picked through reading.
Course Outline(tentative) Introduction Actor model and Elixir Definition, goals and examples of distributed systems System architectures and models Inter-process Communication Remote invocation, indirect communication Operating system support Distributed objects, web services, peer-to-peer systems Distributed file systems Time and global states Coordination and agreement Transactions and concurrency control Distributed transactions Replication Distributed multimedia systems Security, access control
Grading
80% of your grade in the course will come from the projects, and 20% of your grade will be from weekly reports.
The project is divided into four-five milestones. Details will be provided as the class progresses
The weekly reports are due every Monday at MIDNIGHT and they cover the previous week's classes. For each report you have one of the following 3 options:
Write a 3-5 paragraph summary of the high points of what was described in class. Find a research paper covering a topic covered in class and discuss in 3-5 paragraphs the main points Implement in Scala, GO or JavaScript-NodeJS+EventEmitter one of the algorithms discussed in class You can be up to 2 weeks late for two of the assignments. A 5% grade subtraction will be made for every late day.
The instructor can, at his discretion, wave some of these assignments based on class participation
Note that all group members receive the same grade on each milestone. Groups are chosen by you, and an important part of the class is managing group resources and keeping your fellow group members involved and happy. You are free to change around groups and group members in any way that you want, as long as it is in the week following an assignment deadline.
Letter Grades: I will assign letter grades using the following scheme:
93 -- 100 A 90 -- 92 A- 87 -- 89 B+ 83 -- 86 B 80 -- 82 B- 77 -- 79 C+ 73 -- 76 C 70 -- 72 C- 67 -- 69 D+ 63 -- 66 D 60 -- 62 D- 0 -- 59 E
Warning: This class will require a lot of programming in a new language (Elixir). You should expect to dedicate a lot of effort to the programming assignments and plan to spend at least 40 hours getting to know Elixir. The estimated workload is 8-10 hours a week throughout the semester.
Optional Textbook: Distributed Systems -- Principles and Paradigms Tanenbaum and Van Steen (Prentice Hall, 5th edition) Elixir is the language you will be using for all the projects. Elixir main site
Mailing List and Web Page: The class will make extensive use of the CANVAS Announcements and Discussions
Academic Dishonesty: There are versions of the source code for implementing various portions of the class project floating around out there. It is absolutely prohibited for you to refer in any way, shape, or form to one of those implementations when you are working to complete the course project. Any cases of academic dishonesty will be prosecuted to the fullest extent possible.
Class Attendance: Class attendance will not be recorded and will not affect your grade, but it is assumed that all students will attend all class meetings. Since I lecture using a blackboard and chalk (not PowerPoint), I do not post my notes on the Internet. If you cannot attend class, it is your responsibility to talk to other students to make sure that you have a copy of all of the class notes and are aware of all important announcements from the class that you missed.
Students with Disabilities: Students requesting classroom accommodation must first register with the Dean of Students Office. The Dean of Students Office will provide documentation to the student who must then provide this documentation to me when requesting an accommodation.