杨 佳 钟剑丹 陈 超
成都信息工程大学通信工程学院 四川成都 610225
随着“中国制造2025”等一系列国家重要战略的制定,新工科教育建设已成为我国经济发展的迫切需求。新工科教育以探索工程人才培养的新理念和新方法为手段,着重培养和提升学生解决复杂工程问题的综合能力与素质,为新一轮技术革新培养高质量的技术人才[1]。程序设计类课程是我国高等教育发展规划当中的核心课程之一,是培养工程技术人才的重要环节。“互联网程序设计”以Python语言为基础,采用由浅入深的方式教授学生理解和掌握互联网应用程序设计的基本原理和编程方法。作为一门重要的通信专业软件类课程,“互联网程序设计”在本学院的培养方案中起着承上启下的关键作用。该门课程不仅融合了“C语言程序设计”“数据结构与算法设计”“数据通信与计算机网络”等课程的基础知识,更是引导学生采用先进的面向对象程序设计的编程思想和方法解决互联网中的复杂工程问题,为后续以“互联网软件综合设计项目”为代表的各类综合实践类课程以及毕业设计的顺利开展奠定必要的理论和实践基础。在新工科背景下,借鉴教改成功经验,深入剖析该门课程讲授的不足之处,进行教学改革,具有非常重要的现实意义。
“互联网程序设计”课程大纲的最初制定即遵循过程化管理考核的要求,从课堂测试、实验、期末上机和综合项目四大方面,循序渐进培养学生的编程能力,目前课程建设情况如下:
(1)课程组已经编制了对应的PPT教学资源和完整的实验指导书,并且根据每年的实际教学情况进行教学和实验内容的调整和完善。
(2)课题组老师借助PTA(程序设计类实验辅助教学平台)在线平台,针对Python语言重要的序列结构、函数设计、异常处理、面向对象等关键知识点设计了以编程为主的题目集,为近400余人实现了线上实验与考试。
(3)课程组开展了基于腾讯课堂线上、QQ作业等互动教学方式,将互联网教学工具与传统课堂教学结合起来。
(4)采用综合设计项目的方式,让学生充分利用互联网资源库调研并了解本课程相关技术发展和行业动态,通过综合设计项目的设计与实现,进一步培养学生的动手能力及利用现代工具解决实际应用问题的能力,项目的检查和答辩便于教师更全面地掌握学生的编程能力以及学生对知识的掌握程度。
尽管课程前期已进行了一定程度的建设,但在教学手段方面还存在问题,主要表现为课程还是以知识点教授为主,辅以知识点的应用例程讲解,例程之间连贯性较差,未能对课程全部知识要点进行归类、整合,学生的学习积极性未能被充分调动。因此,本次教学改革的核心任务是进行案例教学的研究,将知识通过案例串联起来,增加学习的趣味性,使学生更直观地感受到程序设计的应用价值。
程序设计类课程通常以讲授语法为主,知识点多、散的特点造成课程讲授缺乏连贯性,学生兴趣不足。针对这一问题,以项目引导的教学内容改革逐渐得到了高校教师的重视。现阶段教学改革在案例选择、案例教学的实施、教学效果评价等各个重要环节都取得了显著成果。
在案例选择方面,蔡长安等[2]阐述了教学案例设计应该遵循的三大原则:真实性和有效性、目的性、可扩展性。陈月娟[3]讨论了教学案例选择的标准,即每个案例应该包含多样相关性知识,案例分类应该体现知识的系统性和整合性并应具有一定价值。案例教学实施过程中,高望[4]提出了基于工程实践的问题引导式教学改革措施,以简单游戏的设计为主线引导学生学习和应用Python中的知识要点。罗晓丽[5]总结了趣味教学实施策略,创设情境,构建学生感兴趣的案例,引导学生探究和交流、选择合适的问题解决策略。刘鑫等[6]给出了以学生为中心和老师为主体的创新性案例教学实施关键步骤。张见威等[7]则是在案例教学过程中强调了语法产生的动机和原理,帮助学生更合理地应用所学知识。对于案例教学评价,邢旭峰等[8]首先从毕业要求和复杂工程问题的描述两方面分析了工程教育的内涵,然后根据工程教育专业认证中产出导向(Outcome Based Education,OBE)的教学理念,提出了以学生学习结果作为教学效果评价的机制。周萌等[9]在考核机制方面也作了调整,用课程大作业形式代替传统的考试模式,学生根据自己的兴趣任意选择机器人领域的某一课题完成一件作品。
目前,程序设计类课程的案例教学改革已取得了显著的成效,但在新工科背景下,如何以专业为导向,从教学模式、教学内容及其考核方式全方面进行程序设计类课程的案例教学改革还有待研究,这也是本门课程亟须解决的问题。因此,本门课程紧密结合本专业工程教育要求,以打造具有高度灵活性和启发性的课程教学为核心任务,积极开展课程教学改革。
根据《华盛顿协议》中提出的以学生为中心(SC:Student-Centeredness)、产出导向(OBE)、持续改进(CQI:Continuous Quality Improvemen)的教育理念,参考文献[2]、文献[3]和文献[5]的做法,本门课程按照下列几项依据进行案例的选择和设计:
(1)案例的专业特色。本门课程主要面向通信工程专业的学生,以专业为导向,针对本门课程需要支撑的毕业要求,选择能体现专业特色的案例。
(2)案例的真实性。新工科教育着重培养和提升学生解决复杂工程问题的综合能力与素质,因此,案例选择最基本的要求是案例应该真实,能反映出实际工程问题。这样在解决案例问题时,才能真正起到培养学生工程实践的能力的作用。
(3)案例的趣味性。案例应该具有趣味,这样才能激发学生的学习积极性,从而达到更好的教学效果。
(4)案例的难易程度。在案例选择时,应该充分考虑学生编程能力,选择和设计符合学生认知规律的案例进行讲解。
(5)案例的多样性和连贯性。案例应该覆盖多样相关知识点,并且案例应该有连贯性,能合理整合整个教学内容。
(6)案例的可扩展性。选择的案例应该留有功能再扩展和创新的空间,给学生进行二次开发的机会,促使学生提升自己的工程实践能力。
根据3.1节教学案例选择和设计的参考依据,课程组认真研读了本门课程支撑的毕业要求,提炼出了课程教学目标:(1)使学生具有设计开发信息通信领域复杂工程问题解决方案所需的专业知识和技术手段;(2)培养学生利用信息通信领域的专业工具对专业问题进行预测与模拟的能力;(3)培养学生能够针对信息通信领域的问题,设计实验、分析处理和解释实验数据的能力。
根据教学目标,对课程内容进行总体划分,其中Python序列知识、条件与循环、函数设计等教学内容支撑教学目标(1)的要求;面向对象程序设计和基于面向对象程序设计的用户图像界面相关知识作为目标(2)的教学支撑内容;互联网通信应用的相关知识则支撑教学目标(3)的要求。在此基础上,考虑到学生的编程能力,按照知识点的难易程度和相关性,创设了分层次案例教学的模式,围绕教学案例整合教学内容,以此循序渐进培养和提高学生的编程能力。案例教学的层次架构如下图所示:
案例教学层级架构图
第一层次,以Python序列为核心知识,辅以条件与循环、函数设计的讲解。首先以加密技术为主线,对列表、元组、字典和集合等序列中分散枯燥的知识点进行了整合。在此基础上,以文字处理为主线,整合了实现文字处理的相关技术,提高教学趣味性,拓展其知识面,同时也有意识地突出Python与C语言的不同之处,培养学生理解和掌握具有Python风格的编程方法,使学生具有设计开发信息通信领域复杂工程问题解决方案所需的专业知识和技术手段。
第二层次,以Python面向对象程序设计作为核心知识,以基于图形用户界面的人机交互作为案例,引导学生接受、理解和掌握面向对象程序设计的风格和编程方法,提升学生编程逻辑思维,培养学生利用信息通信领域的专业工具,对专业问题进行预测与模拟的能力。
第三层次,以Socket通信为案例,融合前两个阶段的知识要点,回顾和拓展与计算机通信相关的互联网知识,辅以文件操作、异常处理与调试的讲解,帮助学生理解和掌握网络通信中数据存储与传输的方法,以及提高编程效率的技巧,培养学生能够针对信息通信领域的问题,设计实验、分析处理和解释实验数据的能力。
本文以加密技术案例为例,简单说明案例教学的实施细节。列表、元组、字典与集合四大基本序列是Python基础编程的核心知识。此部分授课主要是讲解各序列主要功能函数的使用,知识点较为枯燥,因此,创设了以加密技术为主线的案例教学,将各序列分散枯燥的功能函数进行了整合,提高教学趣味性,并拓展学生的知识面。
在案例教学的实施过程中,首先进行授课内容引导(10分钟时间),以特工攻略之秘密信息的讲解开始,导入恺撒加密、密码棒与摩尔斯电码三种加密方式的介绍,使学生产生好奇心,探究加密与序列结构之间的联系,提升其学习主动性。然后以加密技术为主线,设计了4个案例。案例1是恺撒加密与列表,首先简述恺撒加密的原理,接着说明加密时的关键步骤,最后分析采用列表相关操作实现加密的方法。这样就把列表创建、删除、元素操作等比较枯燥的知识点通过案例串联了起来。案例2密码棒和列表推导式、案例3摩尔斯电码与字典与案例1的设计与实施步骤一致。案例4针对加密中随机数的产生问题,对基于列表与集合两种方式产生随机数的程序进行了性能对比,在此基础上引出集合与字典的数据存储方式的讲解,以及集合所特有的序列结构特点。在此部分对列表和字典相关知识进行回顾,并进一步说明了各序列的应用场景,以此提升学生的编程能力。
在教学模式上,采用学生为中心的教学方式,充分调动学生自主学习的积极性,尽量让每一位学生参与到课堂学习当中。具体来说,针对加密的每一关键步骤的实现,主要通过提问引导的方式,促使学生通过查阅教材和资料,积极思考怎样用序列相关功能函数实现加密功能,然后老师进行程序演示并引导学生一起进行功能代码分析,在适当的时候进行课堂测试,加深同学们对知识要点的理解和掌握。
课程按照工程教育专业认证中OBE的教学理念,采用“刚柔并济”的方式,通过当堂测试、实验、上机考核和项目设计几大环节来综合考核学生对知识的掌握和应用能力,避免了期末考试“一刀切”的问题。当堂测试和上机考核统一考核学生是否有过硬的编程基础知识,而实验和项目设计则针对学生个人能力和特点进行更灵活的考核。四大考核环节所得分数按照一定的分值比例进行计算,最终给出学生能力的综合测评结果。多元化考核方式有助于教师及时了解学生学习进度、个人能力特点,发现学生存在的问题,调整教学进度、侧重点和完善教学手段。
本次课程改革以专业为导向,紧扣学院制定的工程教育专业认证的毕业要求,创设了层次化案例教学方案,整合了分散枯燥的知识要点,并采用学生为中心的教育模式,充分调动学生自主学习的积极性,尽量让每一位学生参与到课堂学习当中。在整个教学过程中利用了多元化考核手段,一方面促使学生具备过硬的编程基础知识,另一方面针对学生个人能力和特点进行考核,使整个评测方式更加综合和全面,有助于教师及时了解学生学习进度、个人能力特点,发现学生存在的问题,循序渐进地培养学生相应的工程实践能力。