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: Wed. 1:00-3:00pm
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 Scala. Scala is a new programming language that combines ideas of imperative(Java based) and functional (ML/F# based) languages. Scala 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.
The key concept is class will be the "Actor Model". This is a large departure form the way most distributed systems classes are taught and how most programming is done.
Required Readding 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)
Grading: 70% of your grade in the course will come from the project, and 30% of your grade will be from a series of short, multiple-choice quizzes that you can take every Friday in Sakai. You can expect 10 quizzes, and you can drop the two lowest scores. Since you can drop the two lowest scores, no make-ups are allowed.
The project is divided into six-seven milestones. Details will be provided along the class
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:
Warning: This class will require a lot of programming in a new language (Scala). You should expect to dedicate a lot of effort to the programming assignments and plan to spend at least 40 hours getting to know Scala. The estimated workload is 8-10 hours a week throughout the semester.
Optional Textbook:
Mailing List and Web Page: The class will make extensive use of a mailing list to disseminate information. It is absolutely mandatory that you sign up for the list and monitor it closely. The class will also have a web page (not yet up) that will be used to post assignments and other "big" pieces of information.
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 accommodation.