教學大綱 Syllabus

科目名稱:分散式系統

Course Name: Distributed Systems

修別:群

Type of Credit: Partially Required

3.0

學分數

Credit(s)

50

預收人數

Number of Students

課程資料Course Details

課程簡介Course Description

現代的軟體系統幾乎都是由跨機器、甚至於跨不同網路的分散式系統構成。相對於單機使用的軟體系統,分散式系統無論在正確性、穩定性、擴充性與安全性都面臨許多軟體設計上的挑戰。本課程由軟體架構角度出發,將介紹當代分散式系統的特性、結構、與各種可能的系統運作模式與其核心軟體知識。包含: 分散式系統的基本模型、網路軟體設計基礎知識、同步(Remoting)與非同步通訊模式(Group/Message-based/Shared Memory)、Naming、Coordination、分散式交易、Web服務、微服務、事件朔源、CQRS與區塊鏈等技術。

* 修課同學須具備基礎程式語言知識,課程Lab大部份會以Java或JavaScript(Node.js)進行

* 修課同學須自備筆記型電腦

 

 

核心能力分析圖 Core Competence Analysis Chart

能力項目說明


    課程目標與學習成效Course Objectives & Learning Outcomes

    學生在修習本課程之後,應具備以下能力:

    1. 了解分散式系統的重要性與設計挑戰

    2. 針對課程中介紹之各類型分散式系統,具備實作能力。

    3. 了解軟體架構如何影響分散式系統的設計。

    4. 能應用並整合所學習到之分散式系統設計考量與概念,建構出完整之分散式軟體系統

    5. 了解分散式系統的技術與最新發展趨勢

    每周課程進度與作業要求 Course Schedule & Requirements

    教學週次Course Week 彈性補充教學週次Flexible Supplemental Instruction Week 彈性補充教學類別Flexible Supplemental Instruction Type

    課程進度請依Moodle公告為準

    第一週: Course Introduction: 教學大綱: 上課方式、課程要求、評分標準  / 課堂講授 上課3/課後3

    第二週: Software Architecture Overview, Software Quality Attributes and Design Trade-Offs / 課堂講授與Lab 上課3/課後3

    第三週: Network / 課堂講授與Lab 上課3/課後3

    第四週: IPC / 課堂講授與Lab 上課3/課後3

    第五週: Remoting (Cases: Java RMI, EJB3, gRPC)/ 課堂講授與Lab 上課3/課後3

    第六週: Indirect Communication (Group Communication、MOM、 Shared Memory) / 課堂講授與Lab 上課3/課後3

    第七週: Naming and Discovery (Cases:  UPnP  mDNS/DNS-SD) / 課堂講授與Lab 上課3/課後3

    第八週: Coordination / 課堂講授與Lab 上課3/課後3

    第九週: 期中考 

    第十週: Enterprise Application Architecture

    第十一週:  DevOps and Cloud Native Trends

    第十二週: Virtualization (Virtual Machine and Docker) / 課堂講授與Lab 上課3/課後3

    第十三週: Microservices / 課堂講授與Lab 上課3/課後3

    第十四週: 校慶運動會停課

    第十五週: Distributed Transactions / 課堂講授與Lab 上課3/課後3

    第十六週: Event Scourcing and CQRS / 課堂講授與Lab 上課3/課後3

    第十七週: 端午節假期

    第十八週: Project Demo

    授課方式Teaching Approach

    70%

    講述 Lecture

    %

    討論 Discussion

    30%

    小組活動 Group activity

    0%

    數位學習 E-learning

    0%

    其他: Others:

    評量工具與策略、評分標準成效Evaluation Criteria

    課堂表現(10%)

    Lab (30%)

    期中考(20%)

    學期專題(40%): 含書面報告寫作、系統開發與口頭展示

    **  本課程對生成式AI工具之政策:需要時可使用,但需揭露使用時機、用法、用途。使用人必須對結果的正確性負全責。
     

    指定/參考書目Textbook & References

    1、Distributed Systems,3/e, Maarten van Steen and Andrew S. Tanenbaum 2018

    2、Distributed Systems: Concepts and Design; 5/e, 2012

    George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair

    3、Distributed Systems with Node.Js: Building Enterprise-Ready Backend Services, 2020, Hunter, II Thomas, Oreilly

    4、Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services,2019,Brendan Burns, Oreilly

    5、Pattern-Oriented Software Architecture Volume 4 : A Pattern Language for Distributed Computing,2007,Frank Buschmann, Kevin Henney, Douglas C. Schmidt,Wiley

    6、Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects,2000,Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann

    7、教師自編教材

    已申請之圖書館指定參考書目 圖書館指定參考書查詢 |相關處理要點

    維護智慧財產權,務必使用正版書籍。 Respect Copyright.

    課程相關連結Course Related Links

    
                

    課程附件Course Attachments

    課程進行中,使用智慧型手機、平板等隨身設備 To Use Smart Devices During the Class

    需經教師同意始得使用 Approval

    列印