Andr​​oid 手持系统移动服务程序设计:并发模式

Programming Mobile Services for Android Handheld Systems: Concurrency

本课程将学习如何应用不同的模式、模式语言以及框架,简化并发和网络化软件的开发过程。 课程概述 随着多核处理器和…

范德堡大学

分享

Andr​​oid手持系统的移动应用编程
  • 分类: 计算机
  • 平台: Coursera
  • 语言: 英语

本课程将学习如何应用不同的模式、模式语言以及框架,简化并发和网络化软件的开发过程。

课程概述

随着多核处理器和分布式核心处理器的相继出现,以及无处不在的有线和无线网络连接,行业对掌握并发网络化软件开发技术的软件工程师和程序员的需求不断增加。虽然我们在处理器和互联网领域已经取得了诸多进步,但是开发并发网络化软件仍然比较困难,开发高品质、可重复使用的并发网络化软件,难度就更大了。想要开发出这样的软件,我们首先要了解相关的模式、模式语言和框架,然后才能更好地学习开发原理、方法和技巧。

“模式”是指在软件设计过程中已知环境下针对常见问题而提出的可重复使用的通用处理方案。当相关模式交汇在一起时,就会形成“模式语言”,模式语言为软件开发过程中遇到的问题提供了规范的解决方案流程。“框架”可以视为对模式语言的具体化实现,可以促进设计方案和代码的直接再利用。
本课程介绍了通过利用面向对象的软件设计方法、编程语言特点、中间件技术以及高级操作系统机制,应用模式、模式语言和框架,简化并发网络化软件的开发过程。分析移动应用程序、网络服务器、通信中间件以及航空电子系统等领域中的案例,学习并发网络化软件的模式导向型软件架构的设计与编程技术。

课程大纲

课程组织形式如下:
第0章:课程内容概述(1小时)
我们设计了多张幻灯片来帮助大家了解互联网并发网络化软件领域的发展动机以及面临的挑战,概述模式和框架如何帮助我们应对并发网络化软件领域的主要挑战。

第1章:并发性与网络化(3.5小时)
主要为大家提供一些与操作系统和中间件层级有关的背景信息。讨论并发网络化软件的关键设计规格,回顾常见的操作系统编程机制和安卓编程机制。本章重点关注各种概念,基本上不涉及编程语言。

第2章:模式与框架概览(6小时)
重点介绍面向模式软件架构,特别强调涉及并发网络化软件的内容。学习关键模式和框架的概念、关系,并举例说明。评估不同模式和框架的优劣。本章会使用很多小段的代码实例,以C++语言和JAVA语言编写,不过本章内容还是侧重于设计,而非编程。

第3章:应用模式与框架,开发并发网络化软件(6小时)
本章涉及大量代码,以开源网络服务器作为运行示例,展示适用于不同任务的软件模式和框架,包括服务接入、通讯、同步事件处理、建立连接、服务初始化、服务配置与激活、并发性与同步性、以及异步事件处理等。多数示例均使用C++语言,另外还列举了一些使用JAVA语言的例子来共同说明模式和框架的普遍性。

附录:案例分析,程序中应用了许多“四人组”设计模式(3.5小时)
这些模式与并发网络化软件并无直接联系。案例从算法设计的角度评估方案的局限性,进一步说明模式导向型设计如何减小局限性。案例中主要使用C++语言,部分为JAVA语言,共同说明面向模式设计如何跨语言提高程序的可移植性。
课程录像上传到公开课网站之后,本课程使用的所有幻灯片的PDF和PowerPoint版本也将一并发布到网站上。可以从这里下载材料。

背景知识

在理想状态下,选修本课程的学生应大致了解面对象设计和编程概念(如:封装、抽象、多态、可扩展性、统一建模语言UML),面向对象编程语言的基本特点(如:类、继承、动态绑定、参数化类型,语言类别包括JAVA、C++和C#),基本的系统编程概念(如:事件处理、进程/线程、同步性、进程间通讯和动态链接)以及网络术语(如:客户端、服务器、点对点架构、TCP/IP和分层)。课上我们会复习面向对象设计、系统编程以及网络概念与技术,只要你知道如何阅读由C++和JAVA代码编写的示例,就应该没什么问题。

参考资料

课程内容基本独立,推荐(并不强制要求)学生参考以下书籍:
伽马等人著: 《设计模式:可重复使用的面向对象软件的元素》,Addison-Wesley出版社, 读物, 马赛诸塞州, 1995, ISBN 0-201-63361-2。
施密特等人著: 《面向模式型软件结构 第二卷:并发网络化对象的模式》,Wiley and Sons出版社,2000年, ISBN 0-471-60695-2。
布施曼等人著:《模式导向型软件结构 第四卷:分布式计算的模式语言》,Wiley and Sons出版社, 2007年, ISBN 0-470-05902-8。
布施曼等人著:《面向模式型软件结构 第五卷:论模式和模式语言》,Wiley and Sons出版社, 2007年, ISBN 0-471-48648-5。
施密特等人著:《C++网络程序设计 第一卷:使用ACE和模式化繁为简》,Addison-Wesley出版社,2001年,ISBN 0-201-60464-7。
施密特等人著:《C++网络程序设计 第二卷:使用ACE和模式实现系统再利用》,Addison-Wesley出版社,2002年,ISBN 0-201-79525-6。
道格·李著:《JAVA语言并发程序设计》,Prentice Hall出版社,1999年, ISBN 0-201-31009-0。
大部分资料可在这里找到。

授课形式

本课程包含若干授课视频,课堂测验和问答题,旨在确保大家理解视频中涉及的材料。考虑到大家的学习目标和学习时间不一致,本课程分为两个等级:

标准等级—预计每周需要时间:3-5小时。
本等级的学生会收到一份结业证明,以证明该学生通过了每周进行的独立自动评分测试,已了解并掌握课程中所涉及的概念。标准等级专为以下学生设计:希望通过完成自动评分测试和期末考试,参与在线论坛的讨论活动来学习相关知识,但是没有时间或兴趣完成由同学评分的小论文和编程作业。

精通等级–预计每周需要时间:5-7小时。
本等级的学生会收到一份结业证明,以证明该学生已熟练掌握课程内容并能解决实际问题,本等级学生除了要完成标准等级所包含的每周自动评分测试和期末考试以外,还要完成小论文和编程作业(均由同学评分)。编程任务包括为某个常见的面向模式软件架构编写并发网络化软件,使用JAVA语言(如:安卓)或C++语言(如: ACEBoost)。本等级专为以下学生设计:希望熟练掌握课程知识,并了解这些知识在真实项目中的实际应用情况。

常见问题

有关课程的常见问题请访问这里

(课程中文简介转自网易公开课)

声明:MOOC中国收录之课程均源自下列机构,版权均归他们所有。本站仅作报道并尊重其著作权益,感谢他们对MOOC事业做出的贡献!(排名不分先后)
  • Coursera
  • edX
  • OpenLearning
  • FutureLearn
  • iversity
  • Udacity
  • NovoEd
  • Canvas
  • Open2Study
  • Google
  • ewant
  • FUN
  • IOC-Athlete-MOOC
  • World-Science-U
  • Codecademy
  • CourseSites
  • opencourseworld
  • ShareCourse
  • gacco
  • MiriadaX
  • JANUX
  • openhpi
  • Stanford-Open-Edx
  • 网易云课堂
  • 中国大学MOOC
  • 学堂在线
  • 顶你学堂
  • 华文慕课
  • 好大学在线CnMooc

Copyright © 2008-2015 MOOC.CN 慕课改变你,你改变世界