MSc:DistributedSystems old
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
- T.H. Cormen, C.E. Leiserson, R.L. Rivest, and C. Stein, Introduction to Algorithms, 2nd Edition, MIT Press (2009)
- MOOC Reliable Distributed Algorithms, Part 1 - [algorithms-part-1-kthx-id2203-1x|https://www.edx.org/course/reliable-distributed- algorithms-part-1-kthx-id2203-1x]
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%)