Distributed Programming
Distributed Programming
(BSC)
FIELD : COMPUTER ENGINEERING
Page 1 of 4
OPTION : SOFTWARE ENGINEERING
I- COURSE DESCRIPTION
This course aims at helping and orientating the students towards designing and developing fault
tolerant and efficient distributed algorithms to solve large problems where data and control is
distributed over different nodes. This course provides the students with skills to:
II- PREREQUISITES
- Basic Knowledge on Computers, the Internet, Java programming, information systems
and systems.
III- Pedagogical objectives
They are declined in 2 sub objectives namely:
a) Knowledge Transmitted
- Students should be able to understand the principles on which the Internet and other
distributed systems are based; their architecture, algorithms and how they meet the
demands of contemporary distributed applications.
b) Know-how Transmitted
The course covers the building blocks for a study of distributed systems, and addressing the
characteristics and the challenges that must be addressed in their design: scalability,
heterogeneity, security and failure handling being the most significant. This course also covers
issues and solutions related to the design and the implementation of distributed applications.
Learning Outcomes:
Upon successful completion of this course you should be able to:
• demonstrate knowledge of the basic elements and concepts related to distributed system
technologies;
• demonstrate knowledge of the core architectural aspects of distributed systems;
• design and implement distributed applications;
• demonstrate knowledge of details the main underlying components of distributed
systems (such as RPC, file systems);
• use and apply important methods in distributed systems to support scalability and fault
tolerance;
• Demonstrate experience in building large-scale distributed applications.
b) Evaluation modalities
➢ Continuous assessment
and a final exam
➢ Individual Projects
V- Course Content
This section serves to precise the skills, notions, concepts and theories, to be acquired in the course, in line with the objectives.
(This content is communicated to the students at the beginning of the semester).
MODULES LESSONG TITLE AND CONTENT OBJECTIVES HOURLY
1 Module 1 – “Overview of Distributed Computing” This module describes the characteristics of distributed computing 4
environments and of distributed object computing. Various
techniques used to solve distributed computing problems are
presented, with an overview of the JavaSoft technologies: JDBC, RMI, JavaIDL
and Java servlets.
2 Module 2 – “Java Database Connectivity (JDBC)” This module describes the main features of JDBC, the Java technology classes4
(Java classes) provided by JDBC, and how to use the JDBC to interface with a
database system
3 Module 3 – “Remote Method Invocation (RMI)” This module describes the main features of RMI, the classes provided by RMI,4
and how to use RMI to solve distributed computing problems. The new features
of RMI that are delivered with the Java 2 SDK, standard edition, Version 1.2
technology are also presented.
4 Module 4 – “Java Interface Definition Language (JavaIDL)”
This module describes the Common Object Request Broker Architecture 4
(CORBA), the main features of JavaIDL, how to use JavaIDL to solve distributed
computing problems, and information about the IDL-to-Java programming
language
mapping.
5 Module 5 – “Servlets” This module describes generic Java servlets and hypertext transfer protocol 4
(HTTP) servlets.
6 Module 6 – “Object Bus Systems” This module describes object bus systems. Using object bus systems, you can4
build systems using a multicast, many-to-many object communication
paradigm.
7 Module 7 – “Supporting Technologies” This module describes three supporting technologies for doing distributed 4
computing.
8 Module 8 – “Technology Summary and Comparison” This module summarizes the different technologies explained in this course,2and
compares them to each other.
Bibliography
1. https://www.distributedsystemscourse.com/
2. https://www.coursera.org/learn/distributed-programming-in-java