基于OBE理念的Python语言程序设计课程教学改革
2023-02-15余丙军郭芬张永雄王亮明
余丙军,郭芬,张永雄 ,王亮明
(1.华南理工大学软件学院,广东广州 510641;2.广州工商学院,广东广州 510850)
OBE是一种先进的教育理念,引入OBE理念是近年来教育部门的一种趋势。华盛顿协议主张OBE,促进工程学位互认和工程技术人员的国际流动[1],越来越多的国家成为华盛顿协议的成员,2016年,中国成为华盛顿协议的正式成员国[2]。我国工程技术人才的规模已经居世界第一[3],工程教育决定人才未来[4],为《中国制造2025》提供了人才保障。
2020年华南理工大学软件工程专业已申请工程教育专业认证,笔者曾参与自评环节的资料准备工作,最初对工程认证相关概念及其关系并不了解,后来经过学院聘请校外专家培训和自行查阅资料,笔者逐步正确理解相关概念,并将OBE理念应用到笔者讲授的Python语言程序设计课程教学实践中。
OBE主张基于“Outcome”的教育,以学生为本,采用逆向思维方式进行课程体系建设,是一种先进的教育理念。该理念有着深厚的理论基础,包括泰勒原理(又叫目标模式)、布鲁姆掌握学习理论[5]。
学术界对“Outcome”的理解各不相同。顾佩华等学者[5]指出:ABET定义了毕业生的11条能力。济南大学赵蔚琳等学者[6]提及“成效基准教育”。不少学者(如李志义等[7]、常建华等[8]、刘杰等[9]、肖鹏等[10]、孙传猛等[11])将“OBE”翻译成“成果导向教育”,学者对“成果”的理解通常是“奖状、证书、论文、专利、项目[12]等”。ABET对“Outcome”一词的原始描述[13]中列举的全部都是“ability”。
综上所述,“Outcome”并不仅指“奖状、证书、论文、专利、项目等”,更指各种能力。因此将“Outcome”翻译成“成绩”更为贴切。
1 传统教育与OBE的区别
传统教育与OBE并不冲突,李志义等学者[7]指出“应将成果导向教育理念融入高等工程教育体系中,改革与此不相适应的做法”,因此传统教育应借鉴OBE,明确教学目标、充分强调持续改进的理念并重视实施持续改进工作。李志义等学者还提出:“基于成果导向教育的高等工程教育教学改革,应着力实现三个转变,即:从学科导向向目标导向转变、从教师中心向学生中心转变、从质量监控向持续改进转变。”
第一,从逻辑上分析,上述前两项转变可以作为改进的内容,因此前两项转变从属于第三项转变,因此,持续改进才是OBE的关键。
第二,无论是传统教育还是OBE,都存在反馈机制,包括学生的作业情况反馈、答疑情况反馈、考试情况反馈、用人单位反馈、校友反馈等。
第三,基于OBE理念的教育是闭环[6,7]。“开环”和“闭环”是控制工程专业术语,“闭环”指存在反馈回路。基于OBE理念的教育中起点和终点并不重要,因为是闭环,在后面的环节发现问题可以向前反馈信息。传统教育有反馈就是闭环,学科导向与目标导向是一致的。
综上所述,OBE所需实现的三个转变之中,关键在于第三个转变,因而,传统教育与OBE的根本区别在于OBE更加强化持续改进。
2 Python语言程序设计课程教学存在的问题
教学活动关联诸多要素,有教师、学生、教学形式、课堂内容、技术应用、评价方式[12],笔者对照上述诸要素,尝试在教学实践初期寻找不足,以期望在中后期尽快改进并提高教学效果。
2.1 实践课时少
我校Python语言程序设计课程是面向非计算机专业本科学生的必修课,采用大众化的Pyhon语言程序设计类教材。该课程共40学时,其中上机实验只设计了8学时。经不完全统计,该课程教材上的案例源代码至少4.5万个字符。倘若学生逐一调试这些源代码,仅录入代码就至少需占用5-6学时的时间,程序结构设计、算法设计、在线测试和上机实验等学习任务还需要占用一些时间。因此仅依靠设计的8学时远远达不到学习目标。
另外,时间紧、内容多,教师没有充足的时间给学生现场演示程序代码案例的调试运行,仅通过在PPT上贴图展示,难以达到预期的教学效果。
2.2 缺少复杂综合的案例
考虑到我校该课程面向非计算机专业学生设置,绝大多数学生在本科学习生涯中没有机会进一步学习计算机语言类实训实习课程,因此,至少需要设计一个复杂综合的案例,以拓宽学生视野,充分培养学生协作处理综合问题的能力, 激发学生的团队精神。
2.3 教学设备不完全匹配编程需要
教师授课时经常存在演示代码调试的需求;演示和播放PPT课件期间,有时候需要强调一些内容,而存在板书或做标记的需要。教师或是在PPT上标记或录入,需要操作鼠标和键盘,效率低,或是在白板上板书。而这使得内容多、课时安排紧张的问题更加突出。
3 Python语言程序设计课程教学改革
3.1 确定教学目标与能力矩阵
首先,明确该课程的教学目标,参考ABET官网文档[13],为该课程设计出一系列目标“Outcome”:a.有效沟通能力;b.团队协作能力;c.解决实际工程问题的能力;d.流程设计能力;e.实验设计和验证能力,建立该课程的能力矩阵见表1。
表1 Python语言程序设计课程能力矩阵
其次,针对该课程教学活动中存在的不足提出以下改进措施。
3.2 实事求是调整教学大纲
Python语言程序设计课程实践性非常强,学生在学习过程中,随时需要在计算机上动手操作,对教师讲解的内容进行验证,同时增加对知识点的理解和记忆。目前该课程教学大纲规定:总学时40学时,上机实验课占8学时。大纲设计者可能考虑到该课程内容多,总学时有限。但上机实验学时仅占1/5的方案不是科学的时间分配方案,建议更改教学大纲,使上机实验学时占该门课程总学时的比例超过40%[14]。
3.3 设计复杂综合的案例
笔者设计了一个有一定复杂度的综合案例,源代码超过200行,具体功能是在服务端修改至少两个客户端的IP地址。该案例需要两名学生合作完成,学生甲完成服务端编程,学生乙完成客户端编程,甲乙同时联合调试代码并打包运行。该案例涉及 winreg、os、socket、pyinstaller等多个模块,涉及顺序结构、分支结构和循环结构三种基本结构,涉及函数及其参数传递、列表、文件的读写和程序的异常处理等多个知识点,非常适合本科学生学习。该案例关键算法是:服务端从本地文件读取IP等信息,封装成消息发往客户端;客户端先搜索注册表找到有效网卡,再依据网卡ID找到修改IP的名值对所在键,再解析从服务器收到的消息,得到IP等信息,并修改名值对。由于该案例需要两名学生配合完成,因此可以锻炼学生的沟通能力和团队协作能力。Socket编程涉及到“三次握手”[15],因而还能培养学生流程设计的能力。
3.4 利用在线实验平台考勤
目前教学设计为一名教师每堂课面对上百名学生,考勤存在一定难度。现场点名,花费约10min;使用AI工具统计,存在泄漏个人隐私问题,坐在后面的学生容易被显示器阻挡而未被统计;使用信息系统统计,存在学生通过他人代登录帐号作弊的可能,而教师忙于授课无暇查验。
本文通过使用在线实验平台,给学生布置8-10min的课堂小测,并设置较短的有效测试时间。学生即使在现场,也难以按时做完试题;因此,可以根据课堂实到总学生人数(通过其他系统获取开机总数,减去开机但处于空闲的机位数量),课堂小测完成的学生人数,以及实验平台日志甚至监控系统的数据,教师基本可以判定学生的出勤情况,从而实现高效考勤,既解决了教学过程中的考核公平性问题,又提高了有限的课内学时的利用率。
3.5 使用屏幕同步软件
据反馈,部分学生看不清屏幕上的内容。该问题可以通过使用屏幕同步软件来解决,同时还能利用该软件锁定学生屏幕的功能,防止学生打游戏或看电影,效果显著。另外,使用屏幕同步软件既方便学生拍清晰的照片留存,也方便学生做笔记,有利于学生学习理解。
云机房中,教师和学生用机模式稍有不同,需要先连接远程虚拟桌面,在虚拟桌面系统上进行教学。但由于每个座位所对应的本地系统唯一而虚拟桌面系统不唯一,所以屏幕同步软件必须安装在本地系统上。考虑到学生使用的优盘等USB设备默认自动映射到远程虚拟桌面,教师使用屏幕同步软件教师端之前,须手动设置,使屏幕同步软件的加密狗(USB接口)保留在本地系统。
3.6 改造教学设备
针对教师授课时板书不方便、板书效果不佳和板书效率低的问题,本文考虑通过增加写字板解决。播放PPT时,教师直接使用画笔在写字板上板书和做标记来实现在PPT播放页面上写字和画线做标记,非常高效便捷。
云机房中,教师播放PPT文件在远程虚拟桌面中进行,为了避免在远程和本地两个桌面之间来回切换,须将USB接口的写字板映射到远程虚拟桌面。
4 结语
传统教育需借鉴OBE,高度重视并持续改进教学活动。教师在云机房中使用教学软件和教学设备,需遵循云机房的特点稍作调整。笔者在教学初期就发现教学中存在的上述问题,后来及时调整并实施上述各项教学改革,课程也全部作为实践课及时调整安排到计算机实验室进行,问题全部得到解决。