Modern applications such as GUI interfaces use multithreaded programming to achieve responsiveness and to make efficient use of computer resources. In addition, the Internet has made distributed programming an integral part of almost every computing system. In today's world programmers and computer professionals must understand the principles underlying both these paradigms. Topics include concepts and applications of multithreaded and distributed programs. Process interaction using shared variables and message passing; systematic development of correct programs; general problem solving techniques; scientific computing; distributed systems. (3)