Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

KTH-Master-Courses

KTH Master Courses - Software Engineering of Distributed Systems

Course contents

The course covers basic models for distributed systems, interprocess communication and how one handles synchronisation, consistency, replication, fault tolerance and safety in a distributed system. The course consists of a series of lectures and seminars that include practical assignments. Programming assignments illustrate problems in the course.

Intended learning outcomes

After the course, students should be able to:

  • explain important properties of distributed systems
  • describe architecture and logical model of a distributed system
  • explain and compare strategies for interprocess communication
  • explain and compare models for so-called “middleware”
  • explain and compare naming services
  • explain the concept of logical time
  • use logical time to implement distributed algorithms.

Course contents

Introduction and basic concepts for software development. Abstraction/models and division. Life cycle for software. Unified process. Unified Modeling Language (UML) Specification and analysis of requirements. System design. Object design. Design patterns: Refactoring. Transformation of models to code. Testing. Agile software development and agil emodelling. The bases of extreme programming. DevOps methods.

The practical part of the course contains exercises and a small software development project.

Intended learning outcomes

Having passed the course, the student should be able to:

  • formulate definitions of the most important concepts and the methods in software development
  • evaluate and use the most important concepts and the methods in software development.

Course contents

  • Introduction and basic concepts for DAI (distributed artificial intelligence).
  • Coordination methods general models, joint coordination techniques, organizational structures, information exchange on the metalevel, multi-agent planning, explicit analysis and synchronisation.
  • Negotiation methods: principles, protocols, production sequencing as negotiations, conventions for automatic negotiations.
  • Interoperability: Methods for interoperation of software, speech acts, KQML, FIPA.
  • Multi-agent architectures: Low-level architectural support, DAI-testbeds, agent oriented software development.
  • Agent theory: Fundamentals of modal logic, the BDI architecture.
  • Agent architectures: deliberative, reactive and hybrid architectures.
  • Mobile agents: requirements, implementation, safety for mobile agents, environments for mobile agents. Agent typology and technical questions. Applications.
  • Practical part of the course that contains exercises and a project that includes implementation of a multi-agent system.

Intended learning outcomes

After passing the course, the student shall be able to

  • formulate definitions of the most important concepts and the methods for intelligent agents and multi-agent systems
  • evaluate and use the most important concepts and the methods in the area for intelligent agents and multi-agent systems.

Course contents

Topics:

  • Models of distributed algorithms
  • Event-based programming
  • Failure detectors and leader elections
  • Reliable broadcast and epdimic algorithms
  • Shared memory models
  • Consensus and agreement
  • Group communication and view synchrony
  • Stabilization algorithms
  • Impossibility proofs

Intended learning outcomes

The course complements Distributed Systems, Basic Course, and prepares the students for M.Sc projects, and Ph.D. studies in the area of distributed systems.

The main objective of this course is to provide the students with a solid foundation for understanding, analyzing and designing distributed algorithms for reliable distributed systems.

More specifically after the course is completed the student will:

  • Know how to specify the properties of distributed algorithms, so called liveness and safety properties.
  • Explain the different models of distributed systems, including failure and timing models.
  • Master basic algorithms for failure detection, leader elections, broadcast and multicast, basic shared memory in distributed systems, agreement protocols, and group communication.
  • Practice in design and implementation of selected distributed algorithms in middleware designed for group communication.

Course contents

JavaScript for interaction programming, callbacks, synchronous and asynchronous code, functional programming. Web development interfaces (API): REST, JSON, AJAX, Fetch, Promises. Local data: cookies, local storage. User interfaces, appearance: HTML, CSS, DOM API, other tree based frameworks for user interfaces (e g Android). User interfaces, interaction: events, event levels, event propagation, event management. User interfaces, architectures: Model-View-Controller. User interfaces, frameworks: React, Angular, Vue.

Intended learning outcomes

Having passed the course, the student will be able to

  • choose appropriate technical platforms or JavaScript frameworks to create useful data persistent interactive web applications or native applications
  • program interactive web applications according to Model-View-Controller or related architectures
  • program systems that read data from, and send data to, web interfaces with good use qualities
  • assess and improve the usability of existing interactive web applications
  • cooperate with others to implement interactive web applications.

Course contents

Topics:

  • Distributed file systems
  • No SQL databases
  • Scalable messaging systems
  • Big Data execution engines: Map-Reduce, Spark
  • High level queries and interactive processing: Hive and Spark SQL
  • Stream processing
  • Graph processing
  • Scalable machine learning
  • Resource management.

Intended learning outcomes

The course complements distributed systems courses, with a focus on processing, storing and analyzing massive data. It prepares the students for master projects, and Ph.D. studies in the area of data-intensive computing systems. The main objective of this course is to provide the students with a solid foundation for understanding large scale distributed systems used for storing and processing massive data.

More specifically after the course is completed the student will be able to

  • explain the architecture and properties of the computer systems needed to store, search and index large volumes of data
  • describe the different computational models for processing large data sets for data at rest (batch processing) and data in motion (stream processing)
  • use various computational engines to design and implements nontrivial analytics on massive data
  • explain the different models for scheduling and resource allocation computational tasks on large computing clusters
  • elaborate on the tradeoffs when designing efficient algorithms for processing massive data in a distributed computing setting.

Course contents

  • Syntax and semantics for programming languages that are particularly suited for data science, e.g., Python.
  • Routines to import, combine, convert and make selection of data.
  • Algorithms for handling of missing values, discretisation and dimensionality reduction.
  • Algorithms for supervised machine learning, e.g., naïve Bayes, decision trees, random forests.
  • Algorithms for unsupervised machine learning, e.g., k-means clustering.
  • Libraries for data analysis.
  • Evaluation methods and performance metrics.
  • Visualisation and analysis of results of data analysis.

Intended learning outcomes

Having passed the course, the student should be able to

  • account for and discuss the application of i) technologies to convert data to an appropriate format for data analysis ii) algorithms to analyse data through supervised and unsupervised machine learning as well as iii) technologies and performance metrics for evaluation of data analysis results
  • implement and apply i) technologies to convert data to an appropriate format for data analysis ii) algorithms for supervised and unsupervised machine learning as well as iii) technologies and performance metrics for evaluation of data analysis results.

Course contents

Topics:

  • Machine learning algorithms
  • Scalable frameworks to parallelize machine learning algorithms
  • Distributed machine learning algorithms, e.g., distributed linear regression and distributed logistic regression
  • Linear algebra, probability theory and numerical computation
  • Deep neural networks
  • Regularization and optimization for training deep neural networks
  • Sequence modelling
  • Applications of deep learning

Intended learning outcomes

The course studies fundamentals of distributed machine learning algorithms and the fundamentals of deep learning. We will cover the basics of machine learning and introduce techniques and systems that enable machine learning algorithms to be efficiently parallelized. The course complements courses in machine learning and distributed systems, with a focus on both the topic of deep learning as well as the intersection between distributed systems and machine learning. The course prepares the students for master projects, and Ph.D. studies in the area of data science and distributed computing.

The main objective of this course is to provide the students with a solid foundation for understanding large-scale machine learning algorithms, in particular, deep learning, and their application areas.

On successful completion of the course, the student will:

  • be able to re-implement a classical machine learning algorithm as a scalable machine learning algorithm
  • be able to design and train a layered neural network system
  • apply a trained layered neural network system to make useful predictions or classifications in an application area
  • be able to elaborate the performance tradeoffs when parallelizing machine learning algorithms as well as the limitations in different network environments
  • be able to identify appropriate distributed machine learning algorithms to efficiently solve classification and pattern recognition problems.

About

Master Courses - Software Engineering of Distributed Systems at KTH Royal Institute of Technology

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors