Prerequisite: CS - 601. Internet application development, including server-side technologies such as scripting languages, template frameworks, web page mining, and distributed computing issues such as peer-to-peer, multi-cast, and distributed agents. Could you be less specific?
The purpose of this class is to teach you about the technology, principles, and algorithms needed to develop applications that utilize or require multiple machines. We'll look both at specific technologies for inter-machine communication, such as SOAP and .NET, and also at algorithms and protocols for use in distributed environments.
Some common questions:
What are the course requirements?
You must have satisfactorily completed cs 601 to take this course. In the first half of the semester, you will have a lab due each week; each lab will provide exposure to a different web-based technology, such as SOAP or XML. In the second half of the course you will have two projects, one assigned by me and one of your choosing. You will also have a midterm and a final. More detailed info can be found on the syllabus.
What language will you be using?
For the most part, I will let you use whatever language you want, as long as I have some familiarity with it. In some cases, there will be one or two languages that are obvious choices. For example, in doing the SOAP lab, it will make sense to use a language such as Java or Python that has mature SOAP libraries developed. If you want to use something esoteric (i.e. not Java, Python, Perl, C/C++, or C#) you should talk to me ahead of time.
What's the class like?
In the first half of the class, we'll alternate 'lab-style' classes, which will have a short lecture and use the majority of the time for hands-on work, with traditional lectures covering the basic concepts of distributed systems. The second half of the class will cover more advanced topics, and be more of a traditional lecture format.
What will we learn about?
Some of the topics we'll cover are: distributed computing paradigms (client/server vs peer-to-peer), principles of distributed systems (synchronicity, coherence, fault tolerance), algorithms for ensuring coherency, liveness, leader election and replication, distributed objects, large-scale distributed systems, resource allocation, and multiagent systems. The syllabus has a tentative list of topics. Note that, since this is the first time the course has been taught, things are likely to change and slide.
How is this course different from Professor Pacheco's Parallel and Distributed Computing (PDC) course?
PDC focuses on tightly coupled processing units. The assumption is that all of the nodes in a cluster or system have low communication costs and latency, and are all controlled by the same individual or organization. This allows you to do fine-grained parallelism.
We will be focusing on larger-scale systems, in which one or more components may not be in the same organization, city, or even the same hemisphere. In addition, these systems may not be administered by a single entity, which leads to a focus on coarse-grained parallelism, and protocols for effective communication.