Click to Print This Page
Code CS 403
Term 201702
Title Distributed Systems
Faculty Faculty of Engineering and Natural Sciences
Subject Computer Sci.& Eng.(CS)
SU Credit 3
ECTS Credit 6.00 / 6.00 ECTS (for students admitted in the 2013-14 Academic Year or following years)
Instructor(s) Erkay Savas -erkays@sabanciuniv.edu,
Language of Instruction English
Level of Course Undergraduate
Type of Course Click here to view.
Prerequisites
(only for SU students)
CS307
Mode of Delivery Formal lecture,Laboratory
Planned Learning Activities Interactive
Content

This course focuses on the design, implementation and management of distributed computing systems. Topics include: naming, security, reliability, resource sharing , and remote execution; network protocol issues above the transport level; electronic mail; network and distributed file systems, and databases; handling transactions and coordination of multiple machines.

Objective

The main objective of this course is to study the fundamentals of distributed systems. It focuses on the layer of software that needs to be built on top of computer networks to enable the development of distributed applications.

Learning Outcome

Explain what a distributed system is, why a computer system should be designed as a distributed system, and what the desired properties of such systems (transparency, scalability, openness) are.
List the principles underlying the functioning of distributed systems, identify the problems and challenges associated with these principles.
Recognize how the principles are applied in contemporary distributed systems, explain how they affect the software design, and be able to identify features and design decisions that may cause problems.
Explain properties of distributed algorithms.
Explain different software architectures used in distributed systems (e.g., client-server, multi-tier, peer-to-peer, structured, unstructured, object-based, data-centered)
Design and build distributed system software using both basic OS mechanisms (e.g., primitives for communication, multi-threading, concurrency etc.) and higher-level middleware services (e.g., RPC, RMI, message passing, queuing systems, etc.)
Develop distributed programs that communicate via remote method invocation (RMI) or equivalent communication technologies.
Explain the importance of efficient naming schemes in distributed systems
Identify possible synchronization problems in a distributed system and describe appropriate solutions to them
Describe how consistency and replication affect distributed system design, identify possible resulting problems and corresponding solutions
Explain what fault tolerance is, why it is needed in distributed systems,
Identify the security problems in distributed systems, list a set of security primitives that can be utilized in addressing security issues distributed systems such as access control, delegation, authentication, authorization

Programme Outcomes
 
Common Outcomes For All Programs
1 Understand the world, their country, their society, as well as themselves and have awareness of ethical problems, social rights, values and responsibility to the self and to others. 1
2 Understand different disciplines from natural and social sciences to mathematics and art, and develop interdisciplinary approaches in thinking and practice. 1
3 Think critically, follow innovations and developments in science and technology, demonstrate personal and organizational entrepreneurship and engage in life-long learning in various subjects. 3
4 Communicate effectively in Turkish and English by oral, written, graphical and technological means. 4
5 Take individual and team responsibility, function effectively and respectively as an individual and a member or a leader of a team; and have the skills to work effectively in multi-disciplinary teams. 4
1 Possess sufficient knowledge of mathematics, science and program-specific engineering topics; use theoretical and applied knowledge of these areas in complex engineering problems.
2 Identify, define, formulate and solve complex engineering problems; choose and apply suitable analysis and modeling methods for this purpose.
3 Develop, choose and use modern techniques and tools that are needed for analysis and solution of complex problems faced in engineering applications; possess knowledge of standards used in engineering applications; use information technologies effectively.
4 Ability to design a complex system, process, instrument or a product under realistic constraints and conditions, with the goal of fulfilling specified needs; apply modern design techniques for this purpose.
5 Design and conduct experiments, collect data, analyze and interpret the results to investigate complex engineering problems or program-specific research areas.
6 Knowledge of business practices such as project management, risk management and change management; awareness on innovation; knowledge of sustainable development.
7 Knowledge of impact of engineering solutions in a global, economic, environmental, health and societal context; knowledge of contemporary issues; awareness on legal outcomes of engineering solutions; understanding of professional and ethical responsibility.
1 Design, implement, test, and evaluate a computer system, component, or algorithm to meet desired needs and to solve a computational problem.
2 Demonstrate knowledge of discrete mathematics and data structures.
3 Demonstrate knowledge of probability and statistics, including applications appropriate to computer science and engineering.
1 Comprehend key concepts in biology and physiology, with emphasis on molecular genetics, biochemistry and molecular and cell biology as well as advanced mathematics and statistics.
2 Develop conceptual background for interfacing of biology with engineering for a professional awareness of contemporary biological research questions and the experimental and theoretical methods used to address them.
1 Use mathematics (including derivative and integral calculations, probability and statistics), basic sciences, computer and programming, and electronics engineering knowledge to design and analyze complex electronic circuits, instruments, software and electronics systems with hardware/software.
2 Analyze and design communication networks and systems, signal processing algorithms or software using advanced knowledge on differential equations, linear algebra, complex variables and discrete mathematics.
1 Applying fundamental and advanced knowledge of natural sciences as well as engineering principles to develop and design new materials and establish the relation between internal structure and physical properties using experimental, computational and theoretical tools.
2 Merging the existing knowledge on physical properties, design limits and fabrication methods in materials selection for a particular application or to resolve material performance related problems.
3 Predicting and understanding the behavior of a material under use in a specific environment knowing the internal structure or vice versa.
Assessment Methods and Criteria
  Percentage (%)
Final 35
Midterm 30
Participation 2
Group Project 15
Homework 18
Recommended or Required Reading
Textbook

Andrew S. Tanenbaum and Maarten van Steen. Distributed Systems: Principles and Paradigms, 2nd Edition, Prentice Hall, 2007, ISBN: 0-13-239227-5.

Readings

- George Cloulouris, Jean Dollimore, and Tim Kindberg. Distributed Systems: Concepts and Design, 5th Edition, Pearson, 2011, ISBN: 978-0-13-214301-1.
- Sukumar Ghosh, Distributed Systems: An Algorithmic Approach, Second Edition, Chapman & Hall/CRC, Computer and Information Science Series, 2014, ISBN 978-1466552975.