IT 351 Distributed Computing

This course covers the foundations of distributed systems including models of computing, different types of communication (Layered Protocols, Remote Procedure Calls, Remote Objects, messages, streams), process models (threads, client/server, code migration and software agents), naming of entities, logical clocks and synchronization. We will review some of the popular applications of distributed computing including distributed file systems and web services. The course will include two programming assignments, one group project and one project presentation. The programming assignments will provide hands on experience in understanding different types of communications and process models. The project will help develop a reasonably sized distributed application based on research papers that will be discussed during the semester. The expectation is that students have mastered one or more programming languages. Specific language mastery is not important, though knowing one of C, C++, or Java will be helpful.