THE IT FACULTY BOARD

DIT027,  Distributed Fault-tolerant Programming,  3.0 higher education credits
First Cycle

1. Confirmation
The course syllabus was confirmed by the IT Faculty Board on 2010-09-17, effective from 2011-09-01.
Field of education: Science 100%

Main field of studies | Specialization
Applied IT, Software Engineering and Management | First Cycle, has less than 60 credits in first-cycle course/s as entry requirements

Department: Computer Science and Engineering

2. Position in the educational system

This course is only accessible for the students in Software Engineering and Management Bachelor program.

3. Entry requirements
The students must have successfully finished a programming project of 15 higher education credits.

4. Course content
The course provides a good ground to programming Erlang, which has all the concepts of distributed fault-tolerant programming. During the first part, the students get introduced to sequential functional programming, covering items as recursion in depth. In the second part, the students are learning how to write distributed applications, followed by principles of fault-tolerance and design patterns.
Programming in Erlang, the students learn about processes, how they communicate and interact. The students also learn about distributed software, and the challenging task of writing fault-tolerant programs. In the project course (DIT029), running in parallel, the students are able to immediately apply their new-found knowledge in a realistic programming project. By using Erlang, and OTP, the students learn how to write applications according to industrial standards, using given design patterns.

5. Learning outcomes

5.1 Knowledge and understanding

Understand the concept of concurrency oriented programming.

Know about functional programming, its strengths and weaknesses.

Understand the concept of processes, how they are created, and how they interact.

Understand about basic fault-tolerance and how it is achieved in Erlang.

Understand the basics of design patterns in Erlang.

5.2. Skills and abilities

Write non-trivial modules in Erlang.

Handle processes; spawning, message passing, etc.

Map a problem domain into an implementation, where processes are used as a natural abstraction mechanism.

5.3 Judgment and approach

Understand the fundamental differences between object oriented programming and functional programming.

Understand how Erlang programs are written, and how different components integrate, thus designing the software efficiently.

6. Literature

See separate literature list.

7. Assessment

The course is provided in an intensive form; five days of eight hours instructions. The instructions are a combination of a lecture followed by supervised practical work with exercises individual or in small groups. The students are expected to be active during the whole day.

The course has successfully been given as one week intensive course spread over 2 days in the beginning of the term, 3 days later in the term. A thought behind having an intensive course is that students get the experience of an industrial course, i.e., being one week away from normal work to learn something difficult and being expected to know all that after returning to work.

The course is examined by the code written in a distributed application in combination with an oral explanation of the code.

A student who has failed a test twice has the right to change examiners, if it is possible. A written application should be sent to the Department.

In cases where a course has been discontinued or major changes have been made a student should be guaranteed at least three examination occasions (including the ordinary examination occasion) during a time of at least one year from the last time the course was given.

8. Grading scale
Fail, Pass, Pass with distinction.

The requirement to Pass the course is that the student demonstrates the ability to write a concurrent program in Erlang by completing a specific programming assignment at the end of the course (in form of a written examination).

The requirement to Pass with Distinction is that the student passes the course as indicate above and in addition demonstrates in this assignment the ability to apply fault-tolerant principles, or clearly demonstrates the ability to apply high level programming concepts from the Erlang programming language/OTP libraries.

Regarding the application of ECTS scales, please see Vice-Chancellors decision 2007-05-28, dnr G 8 1976/07.

9. Course evaluation
After completion of the course the students are to be given the possibility of participating in course anonymously. The processed results of the course evaluations are to be made accessible to students and also made available to new students at the beginning of the next course. Possible changes brought about as a result of course evaluations to be described.

10. Additional information
Language of instruction: English.