SE 765 - Distributed Software Development
CS 610 - Introduction to Parallel and Distributed Computing
Dr. Francis T. Marchese
M : 2:30 – 5:00 PM
Tel. 212 346 - 1803
Distributed computing systems have become pervasive. From clusters to internet-worked computers, to mobile machines, distributed systems are used to support a wide variety of applications. This course introduces the principles and foundations of distributed systems and applications. The following are the objectives of this course:
Ø In depth understanding of core concepts of distributed computing, including study of practical techniques for building system support for distributed applications.
Ø Construction of distributed applications and supporting system components by doing project work.
Ø Understanding of current research results in one or more areas of distributed systems.
This course covers system architectures and enabling technologies of parallel and distributed computing systems, their software environments, and applications. Topics covered include: scalable multiprocessor systems, clusters of computers, P2P networks, computational Grids, virtual machines, virtual clusters, Internet Clouds, and the Internet of Things (IoT). Sample case studies include to be covered include: Cray XT-5, TeraGrids, Google AppEngine, Amazon EC2 and S3, Microsoft Azure, NASA and CERN clouds, content-delivery networks, VMWare Tools, etc. The course acquaints students with new computing paradigms and software support, including MapReduce, Hadoop, Twister, Dryad, BigTable, GFS, etc.
The programming component of the course will be executed in the Erlang programming language.
Hwang, Fox, and Dongarra, Distributed and Cloud Computing : from Parallel Processing to the Internet of Things, Morgan Kaufmann, October 2011.
There will be two exams (midterm and final), software exercises and projects, and a number of written reports. Exams will count as 50% of the grade, reports 20%, and projects 30%.