IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Mobile og distribuerede systemer 
Kursusnavn (engelsk):Mobile and Distributed Systems 
Semester:Forår 2009 
Udbydes under:cand.it., softwareudvikling og -teknologi (sdt) 
Omfang i ECTS:7,50 
Kursussprog:Engelsk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:12 
Forventet antal deltagere:25 
Maks. antal deltagere:100 
Formelle forudsætninger:Before the course you should be able to:

* design, implement, and test medium-sized programs in Java,
including programs using inheritance and distributed over
packages.

* understand API's and write programs that utilise the libraries
described by API's.

* use an IDE (e.g., Eclipse or Netbeans) for efficient program
development.

One way to obtain these prerequisites is by taking the course
"Object-Oriented Programming Introduction," or the old course on
"Introductory Programming" followed by a programming project or
similar.
 
Læringsmål:After the course you should have basic knowledge and understanding of
concurrent, distributed, and mobile systems. In particular, you are
expected to be able to:

* describe and use fundamental principles and models used in
designing and constructing concurrent, distributed and mobile
systems.

* describe and use basic concepts in concurrent, distributed, and
mobile systems for reasoning about, evaluation of, and designing
solutions to problems in the field. Basic concepts include
threads, race conditions, mutual exclusion, deadlock,
starvation, semaphores and monitors; concurrency control,
transactions, multicast, replication, logical clocks, and name
services; data synchronization, overlay network protocols,
discovery protocols, and modeling frameworks.

* implement concurrent, distributed, and mobile systems in
practice with the help of the above techniques in Java or C#.  
Fagligt indhold:Programs of today typically exhibit aspects of concurrency (or parallelism), distribution, or mobility or even all of them. In a concurrent system parts of the programs proceed simultaneously --- for example in different threads or using event dispatching. In a distributed system parts of the system are spread over a number of programs communicating over a network to cooperatively provide a service. The network may be anything from the local network in a building to the entire internet. Finally, in mobile systems the programs do not remain statically connected to each other as they may disconnect, and even proceed while disconnected. The programs may run on mobile devices such as laptops, PDAs, or mobile phones.

Rather than studying specific vendors' tools and frameworks, we will be concerned with the theories that inevitably are the underpinnings of all vendors' solutions. In this course we will study some of the fundamental techniques used when developing programs for concurrent, distributed, and mobile systems. We will do this from a theoretical as well as from a practical point of view. In particular, the techniques are demonstrated throughout the course in the development of a simple game, first it will be implemented on a stand alone machine, then it will be distributed over several machines, and finally it will become mobile.

The course consists of three subject areas:
  • Concurrency: Race conditions lead to critical sections on which threads must be synchronized in order to obtain mutual exclusion. The establishment of mutual exclusion may cause deadlock and starvation. Semaphores and monitors are techniques to obtain mutual exclusion.

  • Distribution: Communication over the network leads to dropped and reordered packets which requires robust request/reply and multicast protocols. Programs need to be able to look up services in the system through name services, and services has to be available, scalable, and fault tolerant through techniques such as replication and transactions. Since programs communicate over a potentially faulty network, it is difficult for them to synchronize on time, leaders, and data consistency. Protocols for time synchronization and logical time, consensus, and data distribution address such issues.

  • Mobility: Mobile devices frequently disconnect and reconnect to the network, creating a dynamic network topology. In dynamic network topologies components needs to be able to discover available services through discovery protocols, and be able to operate without centralised control using peer-to-peer overlay networks. Artifacts of such volatile networks can be studied using /modeling tools/ for analysis and simulation. .
 
Læringsaktiviteter:14 ugers undervisning bestående af forelæsninger og øvelser

This is a 7,5ECTS course which requires you to spend 10 hours every week on reading, participating in class work and solving exercises. Expect to spend more time if you do not entirely fulfill the prerequisites.

During weekly classes we will discuss the theoretical aspects and practical implications assuming that you have already read the literature for that class - that is, you must read the literature before attending.
Weekly exercises will allow you to work with the topics on your own with the help of a teaching assistant.


Mandatory assignments:

A sequence of mandatory assignments provide practical experience where students in groups construct a simple game which eventually will demonstrate aspects of concurrency, distribution, and mobility and how to solve such problems in practice. Students are required to submit brief reports on this work, and to participate actively in defending and opposing reports, before they can sign up for the exams. This implies that you must be present on the day of the report presentations (see the course web pages for the exact date).


Information om studiestruktur / Information about study structure
Dette kursus er en del af SDT-specialiseringen Mobile og distribuerede systemer, som du kan finde beskrevet her:
SDT studiestruktur
For at blive cand.it. i SDT skal du bestå SDT's obligatoriske moduler, og gennemføre en 22,5 ECTS specialisering samt to 7,5 ECTS valgfag.

This course is part of the SDT specialization Mobile and Distributed Systems - find it described here:
SDT study structure
In order to graduate as a MSc in SDT, you need to pass the SDT mandatory modules, and also take a 22,5 ECTS specialization and two 7,5 ECTS electives.
 

Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam), 7-trins-skala, Ekstern censur

Mandatory assignments must be passed in order to be eligible for the exam.  

Litteratur udover forskningsartikler:
  • Compendium published by the ITU Bookshop.

  • George Coulouris, Jean Dollimore, Tim Kindberg: Distributed Systems:
    Concepts and Design
    , 4th edition.
    Addison Wesley/Pearson Education, June 2005. ISBN: 978 0321263544

  • Research articles as indicated during the course
 
 
Afholdelse (tid og sted)
Kurset afholdes på følgende tid og sted:
UgedagTidspunktForelæsning/ØvelserStedLokale
Tirsdag 15.00-17.00 Øvelser ITU 2A52
Tirsdag 17.00-19.00 Forelæsning ITU 2A14

Eksamen afholdes på følgende tid og sted:
EksamensdatoTidspunktEksamenstypeStedLokale
2009-06-04 09.00-13.00 Skriftlig eksamen ITU 4A54, 4A56, 4A58