0% found this document useful (0 votes)
62 views

Building Secure and Reliable Network Applications

This document provides an overview of the Fundamentals of Distributed Systems course. The course code is SEng7431, it is worth 5 ECTS credits, and has lectures on Thursdays from 2:30-6:30 local time. The course introduces fundamental concepts of distributed systems through lectures and multi-week programming projects. Topics covered include communication protocols, processes, naming, synchronization, consistency, replication, and fault tolerance. Student learning outcomes include implementing and structuring distributed programs, using communication primitives, and understanding properties of networked and concurrent systems. The course is graded based on quizzes, labs, a midterm, and a final exam.

Uploaded by

Tamiru Dereje
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
62 views

Building Secure and Reliable Network Applications

This document provides an overview of the Fundamentals of Distributed Systems course. The course code is SEng7431, it is worth 5 ECTS credits, and has lectures on Thursdays from 2:30-6:30 local time. The course introduces fundamental concepts of distributed systems through lectures and multi-week programming projects. Topics covered include communication protocols, processes, naming, synchronization, consistency, replication, and fault tolerance. Student learning outcomes include implementing and structuring distributed programs, using communication primitives, and understanding properties of networked and concurrent systems. The course is graded based on quizzes, labs, a midterm, and a final exam.

Uploaded by

Tamiru Dereje
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

Overview

✓ Course Title Fundamental of Distributed Systems


✓ Course Code SEng7431
✓ CP/ECTS 5 (2hrs Lecture, 3hrs Laboratory)
✓ Consultation Hours: Thursday 2:30- 6:30 (Local Time)
✓ Course Information Academic Year: III/II
✓ Prerequisite(s): Software Architecture and Design, Fundamental of Cloud Computing & IoT
✓ Instructor’s Information Name: Marta S.
Email: [email protected]
Office: CCI building second floor

Course Description
This course is an introductory course in distributed systems. The emphasis will be on the
techniques for creating functional, usable, and high-performance distributed systems. To make
the issues more concrete, the class includes several multi-week projects requiring significant
design and implementation.

Learning Outcomes After this course, students will have learned to:
• Implement and structure distributed systems programs.
• Write programs that can interoperate using well-defined protocols.
• Debug highly concurrent code that spans multiple programs running on multiple cores
and machines.
• Reason about distributed algorithms for locking, synchronization and concurrency,
scheduling, and replication.
• Use standard network communication primitives such as UDP and TCP.
• Understand the general properties of networked communication necessary for
distributed systems programming in clusters and on the Internet.
• Employ and create common paradigms for easing the task of distributed systems
programming, such as distributed file systems, RPC, and Map Reduce. Be able to
clearly elucidate their benefits, drawbacks, and limitations.
• Identify the security challenges faced by distributed systems programs.
• Be able to select appropriate security solutions to meet the needs of commonly
encountered distributed programming scenarios.
Course contents

Week Topic
1-2 Chapter 1: Introduction to distributed system
definition
characteristics
organization and goals of distributed systems
hardware and software concepts
the client-server model
3-4 Chapter 2: Communication
layered protocols
client-server TCP
middleware protocols
remote procedure call and remote object invocation
message oriented and stream oriented communication
Quality of Service
5-6 Chapter 3: Processes
threads and their implementation
clients and servers and design issues
object servers and adaptors
code migration
software agents and agent technology
agent communication languages
7-8 Chapter 4: Naming
naming entities
name spaces and name resolution; DNS and X.500
different approaches in locating mobile entities
identifying and removing (unreferenced) unreachable entities
9-10 Chapter 5: Synchronization
clock synchronization, physical clocks and clock synchronization
algorithms
logical clocks and time stamps
global state
distributed transactions and concurrency control
election algorithms
mutual exclusion and various algorithms to achieve mutual Exclusion
11-13 Chapter 6: Consistency and Replication
reasons for replication and object replication
replication as scaling technique
data-centric and client-centric consistency models
distribution and consistency protocols
implementation example: Orca
14-16 Chapter 7: Fault Tolerance
basic concepts
failure modes
failure masking by redundancy
process resilience
reliable client-server and group communication
distributed commit
recovery

References

1. S. Tanenbaum and Maarten van Steen, Distributed Systems, Principles and Paradigms,
Prentice Hall, 2002
2. K. Birman, Building Secure and Reliable Network Applications, Manning Publications Co.,
1996
3. S. Mullender, Distributed Systems, 2nd edition, Addison-Wesley, 1993
Grading

10% Quiz
20% Lab
20% Mid Exam
50 % Final Exam

You might also like