Issues discussed include reliability, security, and protection, as well as how these issues affect the development of programs and systems. Course Introduction This course is an introduction to a new and rapidly developing area of computer science. Supermarket cashiers and garage mechanics alike depend on computers to do their daily work. Some people wonder what is left for computer scientists to do. Although there are many tasks remaining for computer scientists, there are few areas where the need is as clear and as well-defined as the development of distributed systems.
Computer hardware continues to become smaller, cheaper, and more powerful.
Applications that were previously impractical may be well-suited for distribution over a number of computing devices. Together these devices can solve a single problem or even bring a resource to a number of users concurrently. In time, distributed systems will be as common and as routinely used as ordinary computer applications are today, but there is a lot of work to be done to bring that about. Development of these cooperating, distributed systems is a task that requires expertise in the use of computers, operating systems, networks, languages, and algorithm development. It draws on many of the special skills of computer scientists and provides many challenges and opportunities for creativity.