Software Engineering (English) | |||||
Bachelor | TR-NQF-HE: Level 6 | QF-EHEA: First Cycle | EQF-LLL: Level 6 |
Course Code: | COE035 | ||||
Course Name: | Distributed Systems | ||||
Semester: |
Fall Spring |
||||
Course Credits: |
|
||||
Language of instruction: | English | ||||
Course Condition: | |||||
Does the Course Require Work Experience?: | No | ||||
Type of course: | Departmental Elective | ||||
Course Level: |
|
||||
Mode of Delivery: | Face to face | ||||
Course Coordinator: | Doç. Dr. AMIR SEYYEDABBASI | ||||
Course Lecturer(s): | Assis. Prof Hüsamettin OSMANOĞLU | ||||
Course Assistants: |
Course Objectives: | The objective of the course is to provide students with a comprehensive understanding of distributed systems, including their architecture, middleware, system-level support, and design considerations for distributed algorithms. Students will gain in-depth knowledge of the design principles, challenges, and emerging paradigms in building and managing distributed computing systems. Through practical exercises and projects, students will explore various concepts, algorithms, and technologies used in distributed systems, while also learning to design and implement popular distributed system paradigms such as Google File System and MapReduce. |
Course Content: | The content provided captures the essence of a course on Distributed Systems. It highlights key aspects such as the distribution of data over a network, the appearance of a single computer to system users, communication through message passing, and various themes including process distribution, data distribution, concurrency, resource sharing, synchronization, and more. It also emphasizes the importance of designing, implementing, and debugging large programming projects as part of the course. Overall, the content provides a good overview of the course's focus and objectives. A selection of topics from the following topics: the challenges faced in constructing client/server software: partial system failures, multiple address spaces, absence of a single clock, latency of communication, heterogeneity, absence of a trusted operating system, system management, binding and naming. Techniques for meeting these challenges: RPC and middleware, naming and directory services, distributed transaction processing, 'thin' clients, data replication, cryptographic security, mobile code. Introduction to Java RMI. |
The students who have succeeded in this course;
1) Understand the design principles in distributed systems and the architectures for distributed systems. 2) Explain the design and development of distributed systems and distributed systems applications. 3) Use the application of fundamental Computer Science methods and algorithms in the development of distributed systems and distributed systems applications. 4) Discuss the design and testing of a large software system, and to be able to communicate that design to others. 5) Analyze fault tolerance and recovery in distributed systems and algorithms for the same |
Week | Subject | Related Preparation |
1) | ||
2) | Chapter 2 from [1] and [2] Socket Programming | |
3) | Chapter 3 from [1] and [2] | |
4) | Chapter 4 from [1] and [2] | |
5) | ||
6) | Chapter 6 from [1] Chapter 4 from [2] | |
7) | Midterm Exam | |
8) | Chapter 7 from [1] | |
9) | Chapter 8 from [1] | |
10) | Chapter 9 & 10 from [2] | |
11) | Chapter 5 from [1] | |
12) | Chapter 6 from [1] | |
13) | Chapter 8 from [1] | |
14) | Chapter 9 from [1] Chapter 11 [2] |
Course Notes / Textbooks: | •Books [1] Distributed Systems: Concepts and Design, 5th Edition (George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair) 2012 ISBN-13: 9780132143011 [2] Distributed Systems: Principles and Paradigms, 2nd Edition (Andrew Tanenbaum, Maarten Van Steen) |
References: | •Lecturer Notes |
Course Learning Outcomes | 1 |
2 |
3 |
4 |
5 |
||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Program Outcomes | |||||||||||
1) Adequate knowledge in mathematics, science and software engineering; the ability to use theoretical and practical knowledge in these areas in complex engineering problems. | |||||||||||
2) Ability to identify, formulate, and solve complex software engineering problems; ability to select and apply appropriate analysis and modeling methods for this purpose. | |||||||||||
3) Ability to design, implement, verify, validate, measure and maintain a complex software system, process, device or product to meet specific requirements under realistic constraints and conditions; ability to apply modern design methods for this purpose. | |||||||||||
4) Ability to develop, select and use modern techniques and tools necessary for the analysis and solution of complex problems encountered in software engineering applications; ability to use information technologies effectively. | |||||||||||
5) Ability to design, conduct experiments, collect data, analyze and interpret results for the study of complex engineering problems or software engineering research topics. | |||||||||||
6) Ability to work effectively within and multidisciplinary teams; individual study skills. | |||||||||||
7) Ability to communicate effectively orally and in writing; knowledge of at least one foreign language; ability to write effectice reports and understand written reports, to prepare design and production reports, to make effective presentations, to give and receive clear and understandable instructions. | |||||||||||
8) Awareness of the necessity of lifelong learning; ability to access information, to follow developments in science and technology and to renew continuously. | |||||||||||
9) To act in accordance with ethical principles, professional and ethical responsibility; information on the standards used in engineering applications. | |||||||||||
10) Information on business practices such as project management, risk management and change management; awareness of entrepreneurship and innovation; information about sustainable development. | |||||||||||
11) Knowledge of the effects of software engineering practices on health, environment and safety in the universal and social scale and the problems of the era reflected in software engineering; awareness of the legal consequences of software engineering solutions. |
No Effect | 1 Lowest | 2 Average | 3 Highest |
Program Outcomes | Level of Contribution | |
1) | Adequate knowledge in mathematics, science and software engineering; the ability to use theoretical and practical knowledge in these areas in complex engineering problems. | |
2) | Ability to identify, formulate, and solve complex software engineering problems; ability to select and apply appropriate analysis and modeling methods for this purpose. | |
3) | Ability to design, implement, verify, validate, measure and maintain a complex software system, process, device or product to meet specific requirements under realistic constraints and conditions; ability to apply modern design methods for this purpose. | |
4) | Ability to develop, select and use modern techniques and tools necessary for the analysis and solution of complex problems encountered in software engineering applications; ability to use information technologies effectively. | |
5) | Ability to design, conduct experiments, collect data, analyze and interpret results for the study of complex engineering problems or software engineering research topics. | |
6) | Ability to work effectively within and multidisciplinary teams; individual study skills. | |
7) | Ability to communicate effectively orally and in writing; knowledge of at least one foreign language; ability to write effectice reports and understand written reports, to prepare design and production reports, to make effective presentations, to give and receive clear and understandable instructions. | |
8) | Awareness of the necessity of lifelong learning; ability to access information, to follow developments in science and technology and to renew continuously. | |
9) | To act in accordance with ethical principles, professional and ethical responsibility; information on the standards used in engineering applications. | |
10) | Information on business practices such as project management, risk management and change management; awareness of entrepreneurship and innovation; information about sustainable development. | |
11) | Knowledge of the effects of software engineering practices on health, environment and safety in the universal and social scale and the problems of the era reflected in software engineering; awareness of the legal consequences of software engineering solutions. |
Semester Requirements | Number of Activities | Level of Contribution |
Homework Assignments | 10 | % 30 |
Project | 20 | % 30 |
Midterms | 10 | % 10 |
Final | 30 | % 30 |
total | % 100 | |
PERCENTAGE OF SEMESTER WORK | % 70 | |
PERCENTAGE OF FINAL WORK | % 30 | |
total | % 100 |
Activities | Number of Activities | Workload |
Course Hours | 13 | 39 |
Project | 1 | 20 |
Quizzes | 3 | 30 |
Midterms | 1 | 10 |
Final | 1 | 15 |
Total Workload | 114 |