提供学校: | 青岛大学 |
课程编号: | C07080900010-1 |
【课程编号】C07080900010 | 【课程类别】专业基础必修课 |
【总学时数】48(理论)+32(实验) | 【周学时数】3(理论)+2(实验) |
【学分数】3+1 | 【先修课程】操作系统原理,计算机网络原理,数据结构 |
【课程负责人】王开西 | 【适用专业】计算机类专业 |
一、课程简介
分布式计算提供了在不同计算机系统之间透明访问各种信息资源并协同处理的能力,是计算机科学的一个快速发展的领域。本课程是面向计算机科学与技术、物联网工程本科专业的高年级学生开设的一门专业基础核心课程。本课程旨在传授分布式系统的设计原理和实践知识,要求学生掌握分布式系统的基础知识,理解中间件的基本概念和技术和基本的分布式算法,建立软件开发的基本框架思想,具备设计、开发和评价分布式应用系统的能力,树立软件开发的规模经济分析意识。该课程将采取理论和实践相结合的教学方法,加强学生掌握和运用计算机理论的能力。
在理论课中,该课程主要介绍分布式系统的原理、概念和技术,包括:分布式体系结构、中间件、系统体系结构;进程与线程、虚拟化、C/S组织、代码迁移;Socket、RPC、RMI和MoM等通信模型;命名服务等;主要从编程角度讲授分布式软件的组织和实施框架,以及开发分布式系统的方法;另外还将对同步、一致性与复制、容错性、安全性等进行专题研讨。
在实践课中,该课程主要包括课后总结、专题探索与研究、实验验证等。课堂总结就是回顾本节课主要内容,强化所学知识要点,为后续教学奠定基础。对于专题研究,指导学生自主选择不同的专题进行文献的查阅与总结,撰写专题研究报告并进行交流。在实验课上,主要引导学生进行验证性实验,加深学生对分布式技术和体系架构的理解。
二、课程目标
通过该课程的学习,学生将理解分布式计算的基本原理,认识中间件系统在软件框架中的作用,掌握分布式计算的不同编程模型和范型系统,提高抽象思维能力,为今后从事分布式软件设计和开发以及后续其它专业课程的学习奠定较好的理论和实践基础,以适应网络快速发展对分布式系统的需要。具体课程目标如下:
课程目标1:掌握分布式计算的基本概念、基本原理与方法、基本架构与协议,理解中间件系统在分布式系统框架中的作用,具备对物联网工程中复杂分布式计算问题相关方案进行分析、设计和评价的基本能力。
课程目标2:掌握不同的分布式编程模型和范例,包括Socket、RPC、RMI、MoM和Corba等编程模型,具备进行分布式软件设计和开发的理论基础,建立抽象思维能力,具备进行物联网系统进行设计、评价和优化的能力。
课程目标3:学会使用多种不同的分布式编程工具,加深对分布式编程模型、系统体系结构的理解,具备运用不同工具解决物联网系统中的分布式设计复杂工程问题。
课程目标4:对分布式系统中的同步、一致性和复制、容错性、安全性等专题进行探索,初步理解构建分布式系统所需的非功能性组件,具备提出问题、获取资料、分析总结,提升学生的研究能力。
三、课程安排
表 2教学内容、学时、方法等安排,与课程目标之间的支撑关系矩阵
序 号 | 知识单元 | 知识点 | 教学要求 (重点,难点,方法,要求等) | 推荐 学时 | 教学 方式 | 支撑 目标 |
1 | 概述 | ①课程简要介绍 | ①了解先修知识,课程性质,课程内容及安排,课程学习方法,参考资料,考核方式等 ②重点了解分布式计算知识层次:分布式系统、分布式系统基本原理、分布式系统高级原理 | 1 | 讲授 | 1 |
2 | 分布式系统简介 | ①分布式系统的定义 ②目标 ③分布式系统的类型 | ①掌握分布式系统的定义、目标 ②了解分布式系统的类型 ③分布式系统的定义、目标(网络资源可访问、透明性、开放性和可扩展性) | 7 | 讲授 | 1 |
3 | 体系结构 | ①分布式系统的体系结构概念 ②体系结构风格 ③系统体系结构模式 ④中间件的概念和自管理机制 | ①明确分布式系统的体系结构 ②掌握四种不同分布式体系结构风格、三种系统体系结构③理解体系结构和中间件的关系,了解分布式系统的自管理机制 ④区分两个基本概念:软件体系结构、系统体系结构;四种分布式体系结构风格、三种系统结构;中间件的概念 | 4 | 讲授 | 1 |
4 | 进程 | ①线程 ②虚拟化 ③客户 ④服务器 ⑤代码迁移 | ①掌握进程和线程的概念、线程编程模型 ②掌握虚拟化的基本原理和作用 ③了解代码迁移的原因和方式 ④多线程的编程模型,虚拟化的概念 | 8 | 讲授 | 1 2 |
5 | 通信 | ①网络分层模型 ②中间件的通信类型 ③远程过程调用 ④面向消息的通信 ⑤面向流的通信 | ①熟知分层模型 ②了解中间件的通信类型(持久/暂时、同步/异步) ③掌握RPC编程、MoM编程 ④了解面向流的通信模型 | 10 | 讲授 | 1 2 |
6 | 命名系统 | ①命名系统的基本概念 ②无层次命名方法 ③结构化命名方法 ④基于属性的命名方法 | ①理解命名系统的基本概念 ②掌握三种命名方法(无层次命名、结构化命名和基于属性的命名) ③访问点的概念 | 10 | 讲授 | 1 2 |
7 | 实验 | 基于Socket编程实现Iterator类型服务器 | ①基础性实验 ②基于Socket API实现TCP的客户端,可向服务器发送Hello消息和接收服务器的响应 ③基于Socket API实现Iterator服务器,可接收客户端的请求并回送响应 ④能熟练掌握Socket编程,并基于Socket实现最简单的C/S分布式系统 | 4 | 实验 | 2 3 |
8 | 实验 | 基于多进程实现Concurrent类型服务器 | ①设计性实验 ②利用fork() 函数实现Concurrent服务器,可同时接收来自不同客户端的请求并回送响应 ③进一步熟练掌握Socket编程,并实现支持多用户的Concurrent类型服务器 | 4 | 实验 | 2 3 |
9 | 实验 | 基于多线程实现Concurrent类型服务器 | ①设计性实验 ②基于C++的多线程库或Java多线程机制实现Concurrent类型服务器,能同时接收来自不同客户端的请求并回送响应 ③能熟练掌握多线程编程,并基于多线程实现Concurrent类型服务器 | 4 | 实验 | 2 3 |
10 | 实验 | RPC编程 | ①验证性实验 ②RPC编程③掌握RPC中客户端和服务端的stub将参数打包、隐藏通信过程的存在的机制 ④会编写简单的IDL接口文件,并实现RPC编程 | 4 | 实验 | 2 3 |
11 | 实验 | Java RMI编程实验 | ①验证性实验 ②Java RMI编程实验 ③掌握Java RMI编程机制,并实现RMI编程 | 4 | 实验 | 2 3 |
12 | 实验 | MoM编程实验 | ①验证性实验 ②掌握基于中间件消息系统进行分布式编程 | 4 | 实验 | 2 3 |
13 | 实验 | Corba IDL基本编程实验 | ①设计性实验 ②基于Corba进行分布式编程 ③了解命名服务,学会Corba IDL编程 | 4 | 实验 | 2 3 |
14 | 实验 | Corba IDL跨语言编程实验 | ①设计性实验 ②基于Corba进行分布式编程 ③学会Corba IDL跨语言编程 | 4 | 实验 | 2 3 |
15 |
专题研究 | ①同步化 ②一致性和复制 ③容错性 ④安全性 | ①了解物理时钟计时的不同方法;理解物理时钟同步的方法(NTP协议、Berkeley算法);掌握逻辑时钟的概念和同步方法 ②理解分布式系统中复制的作用、掌握以数据为中心的一致性模型、掌握以客户为中心的一致性模型 ②理解冗余、可靠性、失败(fail)、错误(error)和故障(fault)、容错等基本概念;了解故障模式;掌握硬件和软件不同的冗余技术;理解分布式提交协议算法和容错恢复方法 ④了解分布式系统存在的安全性问题,掌握安全通道和访问控制的基本方法;理解安全管理的基本概念 ⑤其它分布式计算最新理论与技术 | 8 | 学生报告 | 1 4 |
合计 | 80 |
注:期末考试由学院统一安排,不占用教学计划课时。
四、课程教学与方法
分布式计算允许用户透明地访问不同计算机系统的各种资源,是日趋重要的计算方式,基于因特网的应用和服务的技术基础。分布式计算是计算机类专业学生必须掌握的核心技术。本课程将采取理论和实践相结合的教学方法,加强学生掌握和运用计算机理论的能力,运用具体实验实例加强抽象能力的培养,树立分布式软件开发的基本框架思维。具体介绍如下:
本课程引导学生观察生活,主要采用问题导引式、启发式教学,激发学生主动学习的兴趣,培养学生独立思考、分析问题和解决问题的能力,指导学生主动通过实践和自学获得知识。
① 在理论课中,主要按照“观察生活-提出问题-解决问题”的思路设计采用电子教案,讲授过程中“温故而知新”,加强与学生前修课程知识的联系,帮助学生建立学科知识图谱,提高课堂教学质量。
② 在实践课中,完成一些基础性实验和设计性实验,激发学生的兴趣,并引导学生结合理论知识对不同实验中的编程模型进行对比,培养学生的抽象思维能力。
③ 在课后作业中,主要采用两种形式:I)课堂总结,巩固所学理论,联系先修知识,建立知识图谱;II)翻译或专题研讨与报告,学生自主选题,指导学生检索与查阅专题相关的资料,进行翻译或撰写报告。
④ 课内讨论和课外答疑相结合,每周至少一次进行答疑。
五、课程考核方案
(一) 总体评价方案
本课程采用过程性考核模式,以学生能力达成为目标进行考核,包括4种形式,分别是:
① 平时考核:主要考察学生对课堂的参与度、对课堂内容所学分布式计算理论和技术的总结和理解。
② 专题研究:主要考察学生查阅最新资料和阅读英文文献的能力,学生以研究报告或文献翻译的形式对所选专题方向的分析与总结,或者对所选英文文献的翻译能力,检查学生的科学研究能力。
③ 课程实验:主要考察学生动手能力、发现问题和解决问题的能力。
④ 期末考核:综合考察学生对分布式计算的基本原理、基本概念的掌握,对中间件系统对软件框架的认识,和对分布式计算的不同编程模型和范型系统的理解。
(二) 课程考核与评价标准
在按照学院统一的课程考核要求基础上,本课程的具体考核与评价标准如下:
1. 平时考核:该部分考核分为课堂参与和课堂内容总结两部分。针对每次课程的内容,要求学生进行课堂内容总结,并且在此基础上通过查阅资料形成完整的概念,加强基本概念的理解,建立各知识点间的联系,形成知识拓扑。
2. 专题研究:学生在学期前2/3前自助选择专题方向,就某个研究方向查阅最新资料,总结该方向的研究进展,撰写专题研究综述;或者进行相关专题的英文文献翻译,提交一篇英文翻译,要求原文不少于8页,独立翻译且译文符合原意。
3. 课程实验考核(8个实验内容,8-15周):针对实验内容完成实验报告,并总结实验中出现问题及其解决方法。每次实验报告和问题总结的成绩按2:1计算,完成8个实验即可得到全部实验成绩。特别说明:表2中序号为8、9实验可单独写实验报告、也可合并为1个实验报告:基于Socket的并发服务器的编程实现。
4. 期末考核:课程结束后集中期末考试,采用线下闭卷形式,所有教学班级统一时间、方式。
各部分所占比重如下表所示:
平时考核成绩 | 专题研究成绩 | 课程实验成绩 | 期末成绩 |
0.10 | 0.20 | 0.20 | 0.50 |
六、本课程与其它课程的联系与分工
(一)先修课
高级程序设计语言,面向对象程序设计,数据结构,操作系统原理,计算机网络原理。
(二)后续课
大数据技术、数据可视化、大数据分析等课程。
七、建议教材及教学参考书(必填内容、内容多少自己掌握)
(1)主要教材:
[1] Tanenbaum & Van Steen, Distributed Systems: Principles andParadigms, 3e, (c) 2017, online: https://www.distributed-systems.net/index.php/books/distributed-systems-3rd-edition-2017/;
[2] Coulouris, Dollimore, Kindberg and Blair, Distributed Systems:Concepts and Design, 5th. Addison-Wesley 2012。
(2)参考教材:
[1] Hagit Attiya and Jennifer Welch, Distributed Computing Fundamentals,Simulations, and Advanced Topics, Second Edition, Published by John, Wiley andSons, Inc.
[2] Gerard Tel, Introduction to Distributed Algorithm, Second Edition,Cambridge University Press, 2000.
[3] Nancy A. Lynch, Distributed algorithms, Morgan Kaufmann Publishers,Inc. 1996.
[4] Ajay D. Kshemkalyani and Mukesh Singhal, Distributed ComputingPrinciples, Algorithms, and Systems. Cambridge University Press 2008.
[5] Kenneth P. Birman, Reliable Distributed Systems Technologies, WebServices, and Applications, Springer Science+Business Media, Inc. 2005
课程章节 | | 文件类型 | | 上传时间 | | 大小 | | 备注 | |
2.1 分布式系统的定义 |
. Introductio to Distributed Sys
|
2020-08-18 | 424.68KB | ||
3.1 分布式系统的体系结构概念 |
.pdf
|
2020-08-18 | 2.65MB | ||
4.1 线程 |
.pdf
|
2020-08-18 | 846.68KB | ||
5.1 网络分层模型 |
.pdf
|
2020-08-18 | 520.17KB | ||
6.1 命名系统的基本概念 |
.pdf
|
2020-08-18 | 393.49KB | ||
7.1 同步化 |
.pdf
|
2020-08-18 | 2.60MB | ||
7.2 一致性和复制 |
.pdf
|
2020-08-18 | 363.86KB | ||
7.3 容错性 |
.pdf
|
2020-08-18 | 370.33KB | ||
7.4 安全性 |
.pdf
|
2020-08-18 | 292.71KB |