基于MOOC和递进式小实验体系的微软UWP开发课程建设方案
2019-12-20冯玉翔杨怀玉左保河
冯玉翔,杨怀玉,左保河
(华南理工大学 软件学院,广东 广州 510640)
0 引 言
Windows10是微软公司发布的最新操作系统版本,该操作系统能够为不同的硬件设备提供统一的平台,包括pc机、平板电脑、智能手机、游戏机Xbox、微软智能眼镜HoloLens等,而通用Windows平台Universal Windows Platform(UWP)则是能够配合Windows10操作系统的统一硬件平台概念的应用架构。
UWP应用(UWP app)是在UWP应用架构上开发的新一代Windows应用程序。利用UWP应用架构的统一硬件平台特性,从最简单的物联网设备到最复杂的数据中心服务器,利用UWP开发的应用程序都可以在任何支持Windows10的硬件平台上运行。为了进一步提高应用程序对于不同类型设备的适应性,UWP应用还引入了自适应控件和多种输入方式。这样应用的界面设计就能够自动基于不同设备的屏幕大小自行调整,并能接收来自不同硬件的输入(如pc机的键盘鼠标、笔记本电脑的触摸板、游戏机的控制器等)。
软件开发类课程需要与时俱进,满足社会对软件工程师的需求,培养学生的动手能力,提高其专业方向的就业竞争力。目前很多高校的Windows编程类课程已经将教学内容随着微软开发平台的进步升级到UWP应用开发技术,但UWP应用的新特性带来巨大进步的同时,也要求学生在学习UWP编程时既要掌握较为复杂集成开发环境(IDE)的各种功能,又要掌握UWP应用开发与传统Windows应用开发不同的特性。另外,为了让学生掌握完整的软件项目开发能力,软件开发类课程的教学目标应当设置为贴合真实商业需求的完整商业软件系统。这样就使学生要通过课程教学掌握从合理设计UI到应用程序架构的多方面开发技能。与以前的Windows平台开发类课程相比,升级后的微软Windows10平台下的UWP架构应用开发课程具有涉及知识点多、对实际动手能力要求高的特点。
1 传统教学模式存在的问题
传统的“课堂讲授+实验+大作业”的教学模式在这类强调实践的高级编程课程中普遍效果不佳[1],存在几个问题。
(1)在知识点的教学环节,UWP架构应用开发涉及的知识点较多且较零散,如自适应的界面设计中各种控件的使用、物理设备的各种硬件使用、数据库的使用和优化等。在传统教学模式中,教师在课堂教学环节中对上述零散的知识点所涉及的理论知识进行讲解。虽然课堂教学所占比重较大,但是在UWP架构应用开发中涉及的知识点太多太零散,导致课堂教学效果不佳。学生既难以记住大量的知识点,又无法将所学的零散知识点串联起来应用到真实项目开发编程中。
(2)在知识点支撑实验的验证环节,传统教学模式中,为了帮助学生掌握零散知识点,通常在实验教学环节中要求学生针对每个知识点完成相应的验证实验,但在UWP架构应用开发中、在Visual Studio工具平台下,即使是一个简单的helloworld应用,也无法只写几行代码就实现出来。学生必须操作Visual Studio工具,经过大量步骤完成一个相对完整的项目,才能看到运行效果,这就要求学生必须要具备较完整的利用IDE开发软件项目的技能,完成单个知识点的验证实验。目前高校开设的这类课程通常都是面向大规模的学生,其中必然存在动手能力弱、开发基础差的学生群体。对于这类学生而言,可能仅仅是在操作系统配置、IDE环境搭建、数据库安装、app项目创建过程中出现一点小问题,就可能无法在指定的实验时间内完成要求的验证实验任务,甚至会让学生产生严重的挫败感,失去对本课程、对编程的兴趣。
(3)在基于真实商业需求的大作业环节,传统教学模式下的最后一个教学环节是大作业的完成,即设置一个贴合真实商业需求的完整应用系统作为大作业目标,促使学生掌握完整的商业项目开发技能,但是一个完整的真实商业应用系统通常涉及从前端到后台的多项开发技术,如果学生在知识点支撑的实验完成中存在问题,通常就会导致学习进度跟不上、丧失信心,最终无法完成一个具体的应用项目。
2 基于MOOC和递进式小实验体系的课程建设方案
传统的“课堂讲授+实验+大作业”教学模式对于基础编程技术类课程的教学是能够适应的,但在类似UWP架构应用开发这类高级开发类课程中的应用教学效果不佳,因此需要一种新的完整的教学实验体系提高这类课程的教学质量。基于MOOC的教学形式能较好地解决高级开发类课程中理论教学存在的问题,而递进式的小实验体系则能提高这类课程的实验教学效果。
2.1 基于MOOC的理论教学模式
传统的理论教学模式主要以传授知识为指向,教师讲、学生听,教师问、学生答,学生始终定位在被动接受知识的位置上,同时,这种教学模式还严重缺乏师生、学生之间的互动。随着时间的推移,学生很难培养出自主学习的习惯,并有很大可能丧失对编程的学习兴趣。学习,特别是编程技术的学习,是一项积极的知识构建过程,而不是被动接受知识的过程。
利用MOOC的教学模式能够将学生由被动接受知识转化为主动获取知识,从而培养学生对所讲授学科主要问题进行思考与分析的能力,调动学生的学习兴趣,使学生由被动接受知识变为主动获取知识。新的理论教学模式主要通过减弱理论教学所占的比重,从而将更多的教学学时投入学生实践开发、师生互动讨论中[2],即通过将课程体系中的主要知识点录制为时长较短的视频,允许学生课前预习、课后复习,从而在提高理论教学效果的前提下,减少教师在课堂上讲课花费的时间。
基于MOOC的理论教学模式主要由以下3部分组成。
1)课前预习和自学。
UWP平台下的各类概念和语法规则繁多,这些知识点是学习UWP应用开发的基础知识,本身没有学习难点,适合学生在线自学完成,因此,可以将这些基础知识提炼、分解为众多细微的知识点,如page navigation是UWP应用开发中的常见功能,可以将page navigation的原理、基本实现方法的讲解录制为一个短视频,再配合相应的习题以及其他相关的参考文献,构成MOOC教学模式下的课前预习系统。
在实际教学中,学生可以自行安排时间观看预习文档和教学视频,完成预习任务。对于预习中遇到的难点问题,学生可以在线讨论。对于重点问题可以向教师反馈,形成重点问题集,以便教师完善课堂教学内容。
2)课堂互动式教学。
在课前预习和自习的环节中,学生根据教师的预习任务完成知识点学习,并对学习中的重难点问题进行反馈。教师依据反馈信息,完善教学视频,梳理知识点脉络,设计课堂教学内容。在互动式课堂教学中,教师应避免直接讲授,而是主要以技术案例作为媒介引导学生发现、讨论、领会和用自己的语言表达新的知识。此外,教师收集学习难点,对学生遇到的普遍难题进行统一讲解。在新的教学模式下,学生将进行团队式的学习、讨论与合作。教师根据每堂课的知识点设计编程案例,学生以团队为单位进行思考、讨论,得到解决方案,必要时也可以对解决方案进行现场展示并与其他团队相互评价。这样的教学过程,不仅能够巩固学生课前预习的知识点,加深学生对知识点的理解,而且可以培养学生的软件工程思维能力,提高创新能力,同时,在案例展示和同行评审过程中,学生的团队精神和团队组织能力以及语言表达能力能得到很好的锻炼,这对学生的长远发展都是很有帮助的。
3)课后在线研讨、作业和测试。
UWP应用开发课程注重实践,因此,培养学生的软件工程思维和系统架构及开发能力至关重要,必须利用课后的教学手段配合课堂教学环节。学生可以利用MOOC平台在课后提交编程结果或对课堂上的案例有疑问的地方在线与同学和老师进行研讨。
由于课程内容繁多、知识复杂,课后完成一定量的作业可以有效地巩固本堂课所学知识。作业以讨论题、设计题为主,采用线上提交的方式。教师统计学生作业与测试的正确率、成绩等信息,为教学质量的评估和教学方法的改进提供参考依据。教师可以及时查看学生的作业情况,在线发布作业答案并帮助学生答疑。在课后,教师还可以补充一些微软Windows应用开发方面的最新动态与学习资料,供学生了解技术前沿与开阔视野。
2.2 递进式小实验体系
由于UWP应用开发所要求的编程技能较多,基础较差的学生在单次实验课中很难完成一个完整的项目来验证单个知识点,但如果拖延到实验课后,则极易出现抄袭、偷懒等问题,而单个实验没有完成所造成的编程能力缺失,又会最终导致学生无法完成更为复杂、完整的大作业项目。针对这些问题,可以采用递进式小实验体系。
(1)将一个完整的移动应用策划开发过程,分解为覆盖各个知识点的小实验,每次实验只针对很小部分的编程知识和能力,加快单次实验时间,帮助学生建立信心。
(2)在每个小实验中,提供已完成框架性内容的实验材料。实验体系中的大部分小实验,由教师完成框架性内容,只留下核心的部分由学生完成。UWP应用编程通常都需要很多框架支持的内容:窗体、界面的设计,类库的引用等。这些部分不是必需的,但是比较繁杂,对于入门阶段的学生来说,费时费力。在设计实验时,完成这些内容,让学生可以用较少时间掌握核心部分的技能。
(3)小实验有机组合为一个完整的应用。体系中的小实验之间存在关联,每个小实验的编程结果可以作为下一个小实验的起点,学生在轻松完成多个小实验之后,就相当于完成了一个完整的真实应用的实验成果。在此基础上,学生就能够较为容易地达到大作业的复杂要求。
以基于浏览器的Web应用开发技术为例,该技术实用性强,需要的编程技能较多,作为一个完整的实验要求,对于基础较差的学生来说难以实现,但采用递进式的小实验体系可以将其构建为一组序列化的实验设计,就能使学生快速地掌握一个应用的完整开发技巧[3]。
实验1:完成一个简单的静态网页helloworld设计,掌握自适应的UI设计。
实验2:将实验1成果部署到服务器中发布,掌握Web服务器的使用和管理。
实验3:将实验2的成果添加对用户动作的响应,理解服务器运行的机制。
实验4:将数据库访问章节对应的最终实验成果移植到实验3的结果中,使之能完成数据库中一张数据表的增、删、改、查操作,掌握前后端之间的通信原理。
实验5:完成两个page,并在两者之间实现信息传递。掌握page navigation以及传递参数的技术,并理解session的概念。
实验6:将实验4、5的结果整合到一个应用中,掌握应用管理机制。
实验7:在实验6的结果中添加登录、管理等功能,丰富功能内容,使之成为一个应用并发布。
2.3 课程评价考核体系
团队合作的形式将贯穿整个课程。团队合作方式不只是简单地锻炼学生的相互协作能力, 更多地是为了模拟实际项目开发小组的团队分工与合作, 从最根本开始树立软件开发中的一个重要思想——团队意识。
在项目的需求分析阶段就改变以往的教师分派工作任务的形式,模拟商业运作。教师在此过程中充当“目标客户”,给学生提出具体的任务需求,而后组织学生团队进行交流讨论。针对学生自身充分挖掘和记录3类问题: “我能解决什么”“我可能解决什么”“我不能解决什么”,在此基础上,对项目需求进行分解和处理,后续的项目内部管理、项目成果展示及评价都将按团队的形式完成,课程的评价考核体系也应当围绕团队来完成。
(1)能够实现MOOC平台自动批改的客观题,考查编程技能、设计技能等的主观题,均可以围绕团队来完成。在各学生完成主观题并提交之后,团队内部相互批改作业。这种方式要求学生理解对方的程序,从而既可以从别人的错误中加强自身对编程知识点的掌握,又可以体会到良好代码风格的重要性。
(2)以团队为单位的章节实验或大作业可以借鉴同行评审的形式,在学生或学生团队之间进行点评、讨论、分享[4]。每个团队需要对自身的成果进行演讲和答辩,其他团队在听取演讲和提问回答环节后,进行团队之间的互评。
(3)从以往的教学经验来看,开发类课程容易出现开发团队中的部分学生因为技术基础或学习热情等方面的因素在整个学习过程中,投入时间、精力较少,导致同团队的其他学生工作任务相对加重,或者该学生利用同组其他同学的成果获得高于其水平和工作量的分数的情况,因此,在评价考核中,应针对整个团队进行评价给分。团队获得整体分数后,在团队内部进行讨论协调,将总分以内部讨论结果的比例分给各团队成员,对团队成员所作的贡献比例进行更为精确的评价和确认。
3 结 语
微软Windows10平台下的UWP架构应用开发是一门典型的高级开发类课程,课程涉及较多的知识点和编程技能,还需要使用多种微软系统平台和工具软件。课程的最终目标是完成一个复杂的完整的应用系统,因此,课程难度较大,对学生要求较高。传统的教学模式很难获得良好的教学效果,基于MOOC和递进式小实验体系的课程建设方案能较好地适应这类课程的特点,利用MOOC形式能提高理论教学效果,而利用递进式的小实验体系也能够使学生相对容易地掌握完整的应用开发技能。