项目式学习的模块化教学内容组织方法实践
2020-10-09张引赵玉丽张斌高克宁
张引 赵玉丽 张斌 高克宁
[摘 要] 项目式学习并非是添加了项目学时的传统课程,而是基于项目式学习的理念重构教学内容和具有示范性的教学项目。可视化程序设计技术及应用课程实践了面向项目式学习的模块化教学内容组织方法,构建符合行业标准的示范性教学项目并组织模块化的教学内容,帮助学生形成解决复杂工程问题的能力。
[关键词] 项目式学习;模块化;教学改革
[基金项目] 2018年教育部产学合作协同育人项目;东北大学PBL教学法研究与应用项目(NEUJX04214)
[作者简介] 张 引(1985—),男,辽宁沈阳人,工学博士,东北大学软件学院软件工程系副教授,主要从事搜索学习研究;赵玉丽(1985—),女,内蒙古赤峰人,工学博士,东北大学软件学院软件工程系副教授,主要从事信道编码研究;张 斌(通信作者)(1964—),男,辽宁本溪人,工学博士,东北大学软件学院软件工程系教授,博士生导师,主要从事边缘计算研究;高克宁(1962—),女,北京人,工学博士,东北大学计算机科学与工程学院教授,主要从事社会计算研究。
[中图分类号] G642 [文献标识码] A [文章编号] 1674-9324(2020)36-0222-02 [收稿日期] 2019-12-15
一、引言
项目式学习作为实现新工科改革目标的一种有效的途径,受到越来越多的关注。一种广泛采用的项目式学习模型,是“讲授课时”+“项目学时”的课程及项目式学习模型。然而,项目式学习并非是添加了项目学时的传统课程,还需要基于项目式学习的项目中心、实践导向、整合学习等理念重构教学内容,并构建具有示范性的教学项目。
传统课程在组织教学内容时,通常力求内容之间彼此独立,这样虽然降低了教学内容的复杂度,方便了教学活动的开展,却违背了知识的使用规律,也有悖于项目式学习的整合学习理念。同时,传统课程虽然也使用案例教学法,但所选项目只注重知识点的覆盖率,却忽视项目的示范性,导致教学项目严重脱离实际,难以激发学生的学习兴趣,也导致所学知识无法应用于实际。解决这些问题的一种可行的方法是按照实际应用的需求,依据行业标准构建具有示范性的教学项目,并围绕教学项目组织教学内容。
本文介绍可视化程序设计技术及应用课程(以下简称“可视化”)开展的面向项目式学习的模块化教学内容组织方法实践。通过构建符合行业标准的示范性教学项目,并围绕教学项目组织模块化教学内容。“可视化”实现了对复杂可视化应用开发方法的示范性学习,有效帮助学生形成解决复杂工程问题的能力。
二、教学项目构建
传统课程在构建教学项目时,通常只注重项目能否覆盖知识点,缺乏对项目示范性的关注,经常导致“大题小作”,即选取一个“大”的项目问题,却又作出种种不切实际的假设,从而把项目做“小”以方便教学。这导致教学项目严重脱离实际,难以激发学生的学习兴趣,也使得学生学习到的知识无法匹配实际问题,导致学生缺乏解决实际问题的能力,更传达了一种好大喜功的错误价值观。以下以常见的教学项目为例。
1.学生/图书馆信息管理系统。从表面来看,信息管理系统的核心是数据的“增删改查”,但其真正的关键技术却体现在如何实现极高的安全标准、复杂的数据统计,以及可靠的备份机制等。然而,作为教学项目的信息管理系统通常忽略安全、统计、备份等需求,导致学生缺少对关键技术的了解。
2.电梯/路网/产线调度系统。调度系统的核心似乎是调度算法,但工业软件最重要的是如何利用极其有限的计算资源满足性能需求,同时确保万无一失的稳定性与安全性。然而,作为教学项目的调度系统通常忽略除算法外的所有其他的要求,导致学生不了解也没有能力实现工业软件的核心价值。
为确保教学项目的示范性,“可视化”在构建教学项目时,从小题目入手,同时按照实际应用的要求,依据行业标准将项目做复杂,做完整。这种“小题大做”的教学项目与实际问题紧密契合,给学生以强烈的代入感,有效地激发了学生的兴趣。通过完整、真实的教学项目,学生学习解决实际问题所需要的方方面面的知识,从而形成复杂工程问题的解决能力。同时以小见大,切身体会如何脚踏实地完成项目,形成正确的价值观与专业精神。
“可视化”的教学项目“DailyPoetryX”是一款古诗词推荐、搜索、收藏以及同步应用,其已在App Store发布。除了功能性需求,该项目按照行业级标准制定了一系列非功能性需求,从而确保项目的示范性:①严格贯彻数据—业务—视图分离的软件架构,同时严格贯彻编码规范;②规范数据库使用场景,贯彻数据库版本管理,全面使用ORM工具操作数据库,实现纯动态的数据库查询;③深度推广单元测试,实现可测试的软件架构;④全面引入源代码管理与分支开发;⑤严格对象创建过程管理,深度引入依赖注入容器;⑥深度使用缓存、异步调用、多线程等技术提升用户体验;⑦完全服务化的导航机制与参数传递机制;⑧使用事件与消息机制传递信息,实现跨页面数据同步刷新;⑨使用符合行业最新标准的安全认证机制同步数据。
这些非功能性需求有效确保了项目的示范性,为帮助学生形成复杂工程问题的解决能力提供了坚实的基础。
三、内容模块构建
“可视化”在组织教学内容时,采用了软件设计的模块化思想,将教学内容按照实际项目的软件架构划分为一系列教学模块并连接成网。通过这种方法,“可视化”实现了对复杂可视化应用开发方法的示范性学习,有效帮助学生形成复杂工程问题的解决能力。
1.基础知识模块组。基础知识模块组是学习课程的基础,该模组包括:①平台与工具模块,涉及在Windows 10/macOS操作系统下进行iOS、Android,以及UWP开发所需的不同工具组合;②控件模块,涉及完成项目所需的9种控件,重点介绍基于属性与事件控制控件外观与行为的使用模式;③基础数据管理模块,涉及使用键值存储、关系数据库,以及Web服务管理本地或远程存储的少量或大量数据。
2.核心架构模块组。心架构模块组为复杂可视化应用的开发提供了统一、标准化的核心架构。该模组包括:①MVVM+IService架构模式模块,涉及MVVM+IService架构模式的设计、实现与运行机制;
②View-ViewModel融合模块,涉及设计时数据、View-ViewModel初始化、ViewModel单元测试、扩展控件功能、并行执行代码、自定义属性、ViewModel in ViewModel等;③依赖注入模块,涉及复杂对象初始化、工厂函数、依赖注入容器、反射等内容;④编码规范模块,涉及命名、排版、注释规范;⑤协作开发模块,涉及源代码管理、MVVM+IService架构的分支开发、Git等内容;⑥测试模块,涉及单元测试,Mocking、面向测试的设计、副作用清除等;⑦高级数据库模块,涉及数据库的类型、运行模式、许可方式、ORM、以及數据库的IService架构等;⑧高级Web服务模块,涉及异常处理、警告服务、内存-存储两级缓存、HTTP请求头、Mock Web服务等。
3.扩展技术模块组。扩展技术模组涉及到构建复杂可视化应用所需的一系列可选技术。该模组包括:①文件下载与缓存模块,涉及文件下载、检查更新、文件缓存、文件单元测试、文件压缩等。②页面导航模块,涉及内容导航、根导航、导航的MVVM+IService架构、页面激活与缓存、带参数导航的MVVM+IService架构等;③动态查询模块,涉及LINQ、动态LINQ、单元测试动态LINQ等;④消息机制模块,涉及信息传递的函数、事件与消息方法,事件的定义、触发与处理,消息的定义、发布与监听等;⑤数据同步模块,涉及面向同步的设计、同步算法与服务的实现等;⑥OneDrive模块,涉及OneDrive安全机制、登录与注销、上传与下载、基于OneDrive的数据同步等。
四、结论
面向项目式学习的模块化教学内容组织方法以示范性的教学项目为核心,组织模块化的教学内容,帮助学生将知识连接成网,从而解决复杂的实际问题。基于该方法,“可视化”有效确保了学习的示范性,为培养学生的复杂工程问题解决能力提供了坚实的基础。