6 ECTS credits
150 u studietijd

Aanbieding 1 met studiegidsnummer 4016406FNR voor alle studenten in het 1e semester met een gespecialiseerd master niveau.

Semester
1e semester
Inschrijving onder examencontract
Niet mogelijk
Beoordelingsvoet
Beoordeling (0 tot 20)
2e zittijd mogelijk
Ja
Onderwijstaal
Engels
Faculteit
Faculteit Wetenschappen en Bio-ingenieurswetensch.
Verantwoordelijke vakgroep
Computerwetenschappen
Onderwijsteam
Elisa Gonzalez Boix (titularis)
Onderdelen en contacturen
26 contacturen Hoorcollege
26 contacturen Werkcolleges, practica en oefeningen
Inhoud

The course studies different programming models and techniques for distributed systems powered by wireless connectivity. The course first delves into distributed systems running on mobile hardware, and later we turn our attention to large-scale distributed systems running on heterogeneous hardware, e.g. cloud, mobile devices, etc.  

The course takes a programming language and software engineering perspective. In the first part, by means of a programming language, students are acquainted with complex object models, concurrency models, distribution models, service discovery, and failure-handling techniques. The course then exposes students to reflection and meta-level programming since these techniques have always played an important part in distributed programming. These techniques are used to implement programming abstractions such as conditional synchronization, futures, and leased references.

In the second part, the course focuses on fundamental concepts and techniques to build large-scale distributed systems. We study techniques for dealing with partial failures focusing on synchronization, consistency, and consensus. We delve into trade-offs around consistency, scalability, fault tolerance, and complexity at the programming level. The metaprogramming techniques are again used to implement abstractions such as peer-to-peer networks, broadcast algorithms, and replicated data types.

An overview of the course contents follows:

1- Foundations on programming distributed systems
2 - Prototype-based programming
3 - Actor-based concurrent programming
4 - Event-based distributed programming
5 - Mirror-based reflective programming

6 - Large scale distributed systems
7 - Logical time and broadcast protocols
8 - Consensus
9 - Consistency and Data Replication

Studiemateriaal
Digitaal cursusmateriaal (Vereist) : Scientific articles
Digitaal cursusmateriaal (Vereist) : Programming manuals
Digitaal cursusmateriaal (Vereist) : Scientific articles
Bijkomende info

The course combines regular lectures with lab session to get students prepared for a programming project. The study material consists of slides and a number of scientific articles together with the manuals of the programming language in which the project is done. Both slides and articles are made available ahead of time via the learning platform. Sample code used during the lectures can be also downloaded and inspected from the learning platform where relevant. 

 

The course assumes basic knowledge of parallelism and distribution.

 

Although the topics and agenda are well established, the course may be concluded with a guest lecture from an industrial speaker depending on the number of registered students and time constraints.

 

 

Leerresultaten

Algemene competenties

Knowledge and Understanding: With the advent of wireless networks and portable hardware, distribution and mobility of hardware and software are getting ever more important. One often makes a difference between "mobile computing" and "mobile computations". The former concerns mobile machinery and mobile users. The latter concerns mobility of programs. This course is based on this difference and continues building on student's basic knowledge in parallelism and distribution. The goal is to show students about the possibilities of wireless technology and to give then the necessary background about the fundamental software technologies associated with distributed and mobile systems.

 

Application of Knowledge and Understanding: Students should be able to apply the knowledge acquired during the course by building a distributed system in a high-level distributed programming language and running it on a mainstream mobile platform, i.e Android.

 

Making Judgements: Because of the fact that this is a research-oriented course, we largely use papers. Students have to be able to judge whether or not the contents of the techniques discussed in the papers are applicable using the current technologies and (conversely) whether or not popular technology meets the standards put forward in the papers.

Communication: Students should communicate clearly about the topics studied. This is done by means of an oral exam on the theory and asking students to submit a written essay about their programming project, and engaging them in a discussion during the project defense.

 

Learning Skills: After having completed the course, students should have a research-oriented background that is sufficiently general for them to be able to find their way through the literature of the field. Moreover, the students should have enough technical background to continue the development of mobile and large-scale distributed systems.

Beoordelingsinformatie

De beoordeling bestaat uit volgende opdrachtcategorieën:
ZELF Presentatie bepaalt 50% van het eindcijfer

ZELF Praktijkopdracht bepaalt 50% van het eindcijfer

Binnen de categorie ZELF Presentatie dient men volgende opdrachten af te werken:

  • own presentations met een wegingsfactor 50 en aldus 50% van het totale eindcijfer.

    Toelichting: Oral exam

Binnen de categorie ZELF Praktijkopdracht dient men volgende opdrachten af te werken:

  • own technical project met een wegingsfactor 50 en aldus 50% van het totale eindcijfer.

    Toelichting: Programming project (implementation + report) with oral defense

Aanvullende info mbt evaluatie

The evaluation consists of a combination of an oral exam (50%) and a programming project which needs to be orally defended (50%).

The oral exam aims to test the knowledge and insight of the student with respect to the topics discussed during the lectures. The student is expected to be able to synthesize the most important aspects of the question's topic, and answers questions on the topic and its relation to the other topics studied during the course.

During the year, a detailed project description will be made known with specifications about the end product. The student delivers the implementation of the project together with a brief report justifying made choices and the design. The project defense includes a presentation and demonstration of the project followed by questions on the solution and how it fulfills the specification.

Both oral exam and programming project are equally important. Students have to pass both parts to be able to pass the entire course. Absence in one of them implies absence for the entire course. Partial marks for the exam or project, if the student obtains at least half of the score for this part, are transferred to the second session. Students may not relinquish partial marks.

 

Toegestane onvoldoende
Kijk in het aanvullend OER van je faculteit na of een toegestane onvoldoende mogelijk is voor dit opleidingsonderdeel.

Academische context

Deze aanbieding maakt deel uit van de volgende studieplannen:
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Artificiële Intelligentie
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Multimedia
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Software Languages and Software Engineering
Master in de ingenieurswetenschappen: computerwetenschappen: afstudeerrichting Data Management en Analytics
Master in Applied Sciences and Engineering: Computer Science: Artificial Intelligence (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Multimedia (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Software Languages and Software Engineering (enkel aangeboden in het Engels)
Master in Applied Sciences and Engineering: Computer Science: Data Management and Analytics (enkel aangeboden in het Engels)