MSc:DistributedSystems old

From IU
Jump to navigation Jump to search

Distributed Systems

  • Course name: Distributed Systems
  • Course number: XYZ
  • Area of instruction: Computer Science and Engineering

Course characteristics

Key concepts of the class

  • Principles of designing and implementing distributed systems
  • Structure of distributed system, and algorithms used to implement distributed system

What is the purpose of this course?

This is an introductory course in distributed systems. During the course, students will learn the fundamental principles and techniques that can be applied to design and develop distributed systems, and will cover architectures of distributed systems, communication, naming, fault tolerance, consistency replication, virtualization and security. In addition, we will discuss different aspects of design and implementation of popular distributed systems (such as bittorrent, google file system, HDFS, etc.), programming models (MapReduce, MapReduce2/YARN) and consensus algorithms (Raft and Paxos). The course will not only cover computer science related topics, but will also include a substantial part of software engineering activities.

Course Objectives Based on Bloom’s Taxonomy

- What should a student remember at the end of the course?

By the end of the course, the students should be able to recognize and define

  • Key principles involved in designing and implementing distributed systems
  • Role of different components in distributed systems
  • Distributed Architectures and their management
  • Canonical problems and solutions for distributed systems
  • Resource sharing, replication and consistency algorithms in distributed environments
  • Virtualization, Orchestration and cloud management

- What should a student be able to understand at the end of the course?

By the end of the course, the students should be able to describe and explain (with examples)

Required background knowledge

Solid knowledge of imperative and object-oriented programming concepts (including structures and classes, encapsulation and data hiding, methods, member access control, inheritance, polymorphism) and good programming skills are assumed. Students should also have a working knowledge of recursive programming, arrays and pointer-based linked-lists.

Prerequisite courses

It is recommended to pass the Architectures for Software Systems course before Distributed Systems course to be familiar with quality attributes, constraints and requirements (architectural drivers) and trade-off decisions.

Detailed topics covered in the course

  • Introduction to DS
  • Docker Lab
  • Architectures

Textbook

Reference material

Required computer resources

Students should have laptops with Microsoft Windows and C/C++ and (ideally) Microsoft Visual Studio.

Evaluation

  • Assignments (40%)
  • Project (40%)
  • Final Exam (20%)