6 ECTS credits
150 h study time
Offer 1 with catalog number 4016406FNR for all students in the 2nd semester at a (F) Master - specialised level.
This course takes a programming language based perspective. In the first lectures, an advanced distributed programming language is presented. Students are acquainted with complex object models, concurrency models, distribution models, service discovery and failure handling techniques.
The course also exposes students to reflection and meta-level programming since these techniques have always played an important part in distributed programming. The course shows how these techniques can be used to implement important concurrency and distribution abstractions such as conditional synchronisation, futures, leased references, tuple spaces, peer-to-peer algorithms.
The course teaches a number of fundamental results in distributed algorihtms such as the FLT theorem, CAP theorem and their implications. Other fundamental topics are synchronization, agreement and replication.
The course teaches a number of modern technological advancements such as RFID-technology, IoT, mobile-cross platform technology, and Complex-Event Processing.
In parallel with these lectures, students are required to prepare a programming project in the context of an advanced distributed system (middleware or programming language).
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 can be downloaded and inspected as well where relevant.
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 distribution. The goal is to show students about the future possibilities of such systems and to give then the necessary background about the fundamental software technologies associated with such systems.
Application of Knowledge and Understanding: Students should be able to apply the knowledge acquired during the course by building a 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 asking students to submit a written essay about their programming project, and engaging them in a discussion during the project defense and oral exam.
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.
The final grade is composed based on the following categories:
SELF Presentation determines 50% of the final mark.
SELF Practical Assignment determines 50% of the final mark.
Within the SELF Presentation category, the following assignments need to be completed:
Within the SELF Practical Assignment category, the following assignments need to be completed:
The evaluation consists of a combination of an oral exam and a technical project which is orally defended (including a presentation and demonstration of the project). 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.
This offer is part of the following study plans:
Master in Applied Sciences and Engineering: Computer Science: Profile Artificial Intelligence (only offered in Dutch)
Master in Applied Sciences and Engineering: Computer Science: Profile Multimedia (only offered in Dutch)
Master in Applied Sciences and Engineering: Computer Science: Profile Software Languages and Software Engineering (only offered in Dutch)
Master in Applied Sciences and Engineering: Computer Science: Profile Web & Information Systems (only offered in Dutch)
Master of Applied Sciences and Engineering: Computer Science: Profile Artificial Intelligence
Master of Applied Sciences and Engineering: Computer Science: Profile Multimedia
Master of Applied Sciences and Engineering: Computer Science: Profile Software Languages and Software Engineering
Master of Applied Sciences and Engineering: Computer Science: Profile Web & Information Systems