Academic year 2014-15

Advanced Distributed Systems

Degree: Code: Type:
Bachelor's Degree in Computer Science 23106 Optional subject
Bachelor's Degree in Telematics Engineering 23110 Optional subject
Bachelor's Degree in Audiovisual Systems Engineering 23114 Optional subject

 

ECTS credits: 4 Workload: 100 hours Trimester: 2nd

 

Department: Dept. of Information and Communication Technologies
Coordinator: Jorge Lobo
Teaching staff:

Jorge Lobo

Windy Rankothge

Language:

English

Timetable:
Building:

 

Introduction

We are witnessing an explosion of devices that can connect us to each other and connect among themselves. This has created many opportunities to develop distributed network applications. These are applications where data and computation are distributed among many devices and where, in principle, all the devices send and receive data and benefit from the computation of the group. Complementary to this evolution we are also seeing how many computing services are moving to cloud environments. These are computational environments where computation is distributed into, many times, tens of thousands of computers to serve millions of users. Hence, it is becoming essential for any computer professional to have a good understanding of what it means to program in a distributed environment.

The goals of this course are to introduce students to some of the core foudational concepts in distributed computing and study different distributed algorithms.  The emphasis will be on algorithms in which computational nodes communicate  asynchronously exchanging messages. There will be lectures where algorithms will be introduced  and student will able to solidify the concepts through several small and medium programming  projects and exercises.

 

Prerequisites

Students must have knowledge of basic graph concepts such as the ones covered in “Linear Algebra and Discrete Mathematics”, understanding of asymptotic complexity analysis notation as  is covered in “Programming Fundamentals”, as well as programming skills as the ones covered in “Data Structures and Algorithms” and in “Development of Distributed Applications” or “Protocols and Distributed Applications”.

 

Associated competences

Cross-disciplinary competences

Specific competences

Instrumental

  1. Capacity to analyze problems

  2. Capacity for abstraction

  3. Organization and planning

Interpersonal

  1. Comprehension of existing solutions or already built by others

  2. Collaborative work in software development

Systematic

  1. Creation of well-structured solutions

  2. Re-use of known techniques to solve new problems

  3. Creation of new ideas

 

 

  1. An understanding of distributed computational models and algorithms.

  2. Capacity to design new distributed algorithms.

  3. Capacity to program such algorithms in a distributed computing environment.

  4. Ability to understand how these algorithms can be used for writing reliable and fault tolerant systems.

  5. Ability to understand how these algorithms can be used to parallelize computation.

 

Assessment

 

There will be a midterm evaluation  and final exam as well as homework activities which will include programming projects and exercises.

Distribution of grade:

Students must get at least half of the total portion of the homework to pass the class.

 

 

Contents

  1. Preliminaries

  2. Waves

  3. Deadlock/Termination detection

  4. Leader elections

  5. Spanning trees

  6. Anonymous networks

  7. Synchronization

  8. Distributed Hash tables

  9. MapReduce

 

Methodology

 

 

Classroom hours

   

Estimated Off-classroom hours

Assessment Activity

 

Large group

Medium-size groups

Small groups

   

Preliminaries

2

2

 

4

 

Waves

2

1

1

7

 

Dead locks/

Termination

2

1

1

7

 

Leader elections

2

1

1

7

 

Spanning trees

2

1

1

7

 

Anonymous networks

2

1

1

7

 

Distributed hashing

2

1

1

7

 

Syncrhonization

2

1

1

7

 

MapReduce

2

1

1

7

 

Midterm

       

2

Final

       

2

Total

18

10

8

60

4

 

Resources

The course will mostly follow the book “Distributed Algorithms, An Intuitive Approach” by Wan Fokkink.

Other references:

Ion Stoica, Robert Morris, David Liben-Nowell, David R. Karger, M. Frans Kaashoek, Frank Dabek, and Hari Balakrishnan. 2003. Chord: a scalable peer-to-peer lookup protocol for internet applications. IEEE/ACM Trans. Netw. 11, 1 (February 2003), 17-32.

Jeffrey Dean and Sanjay Ghemawat. 2008. MapReduce: simplified data processing on large clusters. Commun. ACM 51, 1 (January 2008), 107-113.