The course consists of two parts: lectures and a project. The lectures cover the following topics:
- Principles for design of distributed applications: client/server, peer-to-peer, multicast-based applications.
- Design and implemantation of network systems of different types, such as packet switches, servers, server clusters, “Content Delivery Networks”, mobile systems and sensor networks.
- Network programming: socket programming, principles for event-driven programs and multiprocess programs. Representation of data types, etc..
The project part consists of number of projects (four to five). In each project, the goal is to design and implement a protocol, service, network function, etc, based on a given requirement specification. Projects are performed in groups of two persons, and should result in a written report and a working solution.