新工科背景下程序设计语言课程的探究式教学

2021-06-11 20:28马华
计算机时代 2021年3期
关键词:探究式教学新工科教学改革

摘  要: 针对新工科背景下程序设计语言课程在实际教学中面临的主要问题,结合探究式教学模式,建设程序设计语言课程的开放式教学体系。采用探究式教学,改革传统的教学内容和教学方法,利用在线学习平台,支持学生进行“自主学习”和“在线实验”,开展竞争性学习和创新性实验的教学改革实践。这些教学改革的探索,有效地提高了程序设计语言课程的教学质量和教学效果,有利于实现新工科人才培养的目标。

关键词: 程序设计语言课程; 新工科; 探究式教学; 教学改革

中图分类号:G642          文献标识码:A     文章编号:1006-8228(2021)03-72-04

Inquiry teaching for programming language courses in the context of New Engineering

Ma Hua

(College of Information Science and Engineering, Hunan Normal University, Changsha, Hunan 410081, China)

Abstract: Aiming at the main problems in the practical teaching of programming language courses in the context of New Engineering, the inquiry teaching mode is applied to build the open teaching system of programming language courses. The traditional teaching contents and methods are reformed by using the inquiry teaching mode, and the online learning platforms are used to support students to carry out "autonomous learning" and "online experiment", and the teaching reform practice with competitive learning and innovative experiment is put into effect. These explorations of teaching reform effectively improved the teaching quality and teaching effect of programming language courses, which are beneficial to achieve the goals of talents training in the context of New Engineering.

Key words: programming language course; New Engineering; inquiry teaching; teaching reform

0 引言

近年来,教育部积极推进新工科建设,新工科背景下的人才培养对高校的教育教学提出了新要求,需要我们更新人才培养体系,将新技术和发展前沿引入教学过程,更新课程体系和教学内容,促进学生全面发展。对于计算机类本科专业的学生而言,新工科建设要求他们应具有计算思维能力、程序设计与系统开发能力、算法设计与分析能力等。程序设计语言课程正是培养学生具备上述能力的重要途径。以基于C或Python的程序设计基础、基于C++或Java的面向对象程序设计等为代表的高级语言课程,具有较强的专业性和实践性,这类课程的学习对于提高学生分析和解决工程实践问题的能力有关键作用。然而,现有的教学过程仍通常采用以教师为中心的“单声道”教学模式,难以满足新工科背景下培养卓越工程师的需求[1-2],因此,对现有教学模式进行改革已成为当前高校面临的迫切需要。

目前,一些高校已对程序设计语言课程的教学进行了改革[1-5],但是,以新工科为背景的改革研究尚处于探索阶段,如何调整适应新工科发展需要的教学模式与方法仍是值得研究的重要问题。探究式教学是一种将研究与教学相融合的师生互动型教学,具有创新性、实践性和开放性等特点,是现代高校在培养创新创业人才中探索、建构的互动型教学模式[6]。国内一些高校通过创新探究式教學模式,已取得了具有代表性的成果[7],从而为相关教学改革活动的开展提供了宝贵的经验。近年来,我们努力探索面向新工科人才培养的程序设计语言课程的探究式教学改革,以期不断改进相关课程的教学质量和效果。

1 新工科背景下程序设计语言课程的教学改革现状

新工科背景下程序设计语言课程的教学尚存在四个方面的不足[1-2]。①教学中理论和实验课时不足,学生只能掌握基础知识和教材中有限的例程。②传统教学方法与当前的培养目标不相适应,多数学生在实验时停留在对教材例程进行调试验证,尽管学生能掌握基本的编程语法和程序的调试技巧,但远未达到自主分析和解决实际问题的程度。③教学质量评价方式单一,与新工科背景下的人才培养理念不相符,当前教学质量评价仍普遍是依据学生的笔试与实验报告成绩,难以全面、客观地反映学生对知识的掌握情况和对知识的灵活运用能力,从而容易出现高分低能的现象。④缺少与新工科背景下人才培养相适应的线上教学资源,而优秀的在线教学资源对于学生开展课前预习、课后辅导和答疑解惑具有重要作用。

近年来,一些高校对新工科背景下程序设计语言课程的教学进行了改革实践。桂林理工大学基于C程序设计课程,进行了针对非计算机专业学生的计算思维能力的“一线三层四维”培养模式教学改革,在教学实践活动中以“创设环境、项目引导、讲授新知、合作探究、总结拓展”为主线,对学生的思维能力分层培养,并从多维度启发学生思维,激发其兴趣[2]。西安工程大学充分发挥传统教学与互联网线上教学相结合的优势,按照程序设计语言课程的“教学目标、学习重点与难点、线上资源和学生个人能力”等四个方面综合分析实现混合式教学的新思想、新模式[1]。河南大学在Java程序设计课程教学中提出了以“过程性评价、项目驱动”为核心的新教学体系改革[3]。武汉理工大学在Python程序设计课程中开展交叉融合案例教学的改革实践[4]。兰州理工大学结合MOOC和SPOC来改革教学模式,设计了工程领域的教学案例[5]。

2 新工科背景下探究式教学改革的理论基础

探究式教学由芝加哥大学教授施瓦布倡导。在探究式教学过程中,学生在老师的指导下,对教学内容中的重要知识点进行“自主学习”、“深入探究”、“小组合作交流”,以实现课程教学的认知目标与情感目标。随着建构主义、人本主义等思想的普及,探究式教学凸显出其重要的理论和实践价值,受到了全球教育改革者的关注。通过近几十年的发展,探究式教学在美国已成为最有影响力的科学教育方法之一。在我国,教育部印发的《基础教育课程改革指导纲要(试行)》大力提倡了探究式学习,在《关于进一步加强高等学校本科教学工作的若干意见》中,也强调要积极推动研究型教学。当前,许多高校已把探究式教学模式作为培养创新人才的重要途径之一。例如,汕头大学结合CDIO工程教育改革背景进行了工科课程的探究式教学改革的实践[8];天津大学在材料力学课程的探究式教学改革结果显示,基于问题学习的探究式教学有利于统一教与学两个过程,有利于培养大学生的创新意识,可为培养高素质工程技术人才打好基础[9]。近年来,四川大学正是以“探究式--小班化”课程改革为突破口,在2018年获得了国家级教学成果特等奖[7]。这些工作为开展新工科背景下程序设计语言课程的教学改革提供了关键的理论支撑和实践指导。

3 新工科背景下教学改革的主要内容

⑴ 构建基于探究式教学模式的开放式程序设计语言课程教学体系

针对传统封闭型教学体系的不足,我们基于探究式教学模式摸索适用于程序设计语言课程的开放式教学体系。该体系以“小组协作在线学习”为主要方式,形成一个有利于开展个性化教学、探究式学习和实践创新活动的综合平台。通过应用“及时教学”模式,形成教学“反馈链”,将学生的课前预习、课中协作和交流、课后总结等三个环节有机整合,充分调动学生作为教学过程中的“双主体”之一的积极性,也充分发挥教师作为教学组织者和参与者(但不是领导者)的作用。从而,适应新工科背景下培养实践能力强、具有创新素质的高层次人才的需求。以面向对象程序设计课程为例,鉴于当前计算机类本科专业班级人数规模大多在50~60人的现状,摸索在“探究式教学”中实施基于公共在线教学平台的“小组协作学习”,在学习中,注重强化落实工程案例讨论、开源项目源码分析、软件系统重构、分组协作与竞争、全过程学业评价和非标准答案考试、学生的个性化学习等。

⑵ 面向项目探究式教学的教学内容和教学方法改革

结合新工科对本科教育提出的新要求,我们通过探究式教学模式改革程序设计语言课程的现有教学内容和方法。从情境构建、任务分解、独立探究、协作学习、综合评价等方面研究教学方法的设计要素和教学步骤的指导性原则。我们紧密结合现实的软件项目需求,构建适用于探究式教学的项目环境,从面向学生工程应用能力发展的角度进行任务分解,促进学生在完成任务过程中做到学以致用和活学活用。

在具体的实践方面,我们利用在线教学平台和开源软件社区的学习资源,丰富教学内容;利用在线学习社区,组织多样化的学习协作小组,增强学生的自主学习与团队协作能力;通过增设研究生助教的形式来强化对学生实践环节的线下和线上辅导,以缓解实验课时不足的矛盾。同時,在教学内容和教学方法方面也进行了重点改革。①基于EduCoder系统(educoder.net)设计游戏通关式的练习与测试资源库,引导学生从游戏中学习、在学习中竞争,引导学生真正喜欢编程。近年来我们已在EduCoder建设了多门课程,构建了可以支撑探究式教学的较为完善的资源库。②从开源中国和GitHub等开源软件社区引入一些具有新意的开源软件,帮助学生快速体验到程序设计的乐趣感与成就感。以面向对象程序设计课程教学中的游戏作品开发环节为例,我们不再拘泥于要求学生手工编写作品的全部代码,而是引导学生自主性地探究一个给定的代码行在2000到5000行左右的开源游戏源码,完成一系列针对该开源项目的Bug分析与修复、系统重构设计与实现、游戏功能的扩展与完善等开放性任务。我们以学习小组为单位,组织“游戏测试与开发迭代”的开放式挑战赛,营造小组间的竞争与相互学习氛围。通过引入设计模式的原理和思想,教师以具体的项目案例为基础,引导学生直观地体会编码的艺术性,理解实现系统的可维护、可重用的重要性,让学生身临其境地感受经典的代码编写模式、高效的程序开发框架、强大的界面表现力等,从而快速培养学生的学习兴趣。

4 新工科背景下教学改革的实践

近年来,我们在面向对象程序设计课程的教学中进行了改革实践。该课程的教学目标和教学要求确定为:①基于Java语言讲授面向对象程序设计,进行面向对象思维、方法的训练;②通过学习、设计及编程实现,学生能熟练使用UML类图和常用的设计模式,具有一定的面向对象设计、开发能力;③通过开源项目分析与重构训练,为后续课程及大型应用软件的研究、设计打下基础。

教学过程采用多媒体教室授课和实验室实践相结合,分组学习与课堂讨论相结合,学生的个性化学习与分组汇报相结合,进行任务驱动的探究式教学。在具体教学实施时,我们基于EduCoder平台开展线上与线下教学下结合的混合式教学方式。

⑴ 基于平台的“试卷”模块,通过设计多次知识能力测试和综合能力测试,以对学生进行认知能力分析和综合素质诊断。一方面,这些分析与诊断结果将直接用于指导任课教师优化现有的教学内容及教学过程,可有针对性地对学生进行辅导和指导。另一方面,根据测试所获得的学生在学习能力、学习状态和协作能力等方面的量化评分数据,按照“组间同质、组内异质”的原则,指导任课教师构建更加合理的学习小组[10],以更高效的开展合作学习。

⑵ 基于平台的“实训作业”模块,导入平台现有的丰富“实训”资源,并发布给学生在课后针对“面向对象编程”相关的知识点进行全覆盖的密集式训练,以确保学生能够扎实地理解封装、继承、多态等基本概念,正确地运用重载和重写、抽象类和接口、常用的工具类等。

⑶ 基于平台的“普通作业”模块,手工新建十余个“实验”项目,任课教师在实验课时可对学生进行涉及重点、难点知识的针对性辅导,尤其强调培养学生利用UML进行系统分析和设计的能力,也要求学生至少熟练应用工厂模式、建造者模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、命令模式、策略模式等经典设计模式。

⑷ 通过“分组作业”模块手工新建两个“作品设计”项目(包括一个拥有1000多行代码的坦克大战游戏和一个拥有数十万行代码的工作流系统开源项目),组织学生进行开源项目的源码分析、Bug识别与修复、系统重构的设计与实现、功能扩展与完善等,并鼓励和落实作品的合作学习及相互点评,启发学生自主思考和自我提升,实现学生发现问题、分析问题和解决问题能力的培养。

⑸ 利用平台的“统计”模块,定期公布学生在线学习情况的综合排名及得分,点评有代表性的学生在平台上的表现,这样能对大多数学生起到督促和导向作用,并且,对于改进学生的学习积极性和提高在线学习的活跃程度也均是有益的。

5 结束语

通过近年来的努力,我们在新工科背景下基于程序设计语言课程的探究式教学过程取得了较好的改革效果,主要表现在:学生对于程序设计语言的学习兴趣较浓;学生的自主学习和协作学习的意识不断提升;学生解决实际应用问题的能力有一定程度的增强;学生期末考核的不及格率呈明显下降趋势;参加省级学科竞赛的学生人数持续增加,特别是软件工程专业学生,近三年来均取得了多项省级大学生程序设计竞赛的一、二、三等奖;不少学生获得了校级或省级大学生研究性学习和创新性实验计划项目资助,人才培养质量得以提升。接下来,我们将进一步结合校企合作背景来构建与大数据、云计算、人工智能等相关的教学案例,引导学生进行跨学科、跨专业的迁移学习。

参考文献(References):

[1] 陈亮,薛纪文,霍炜.新工科背景下的程序設计语言课程教学研究[J].计算机教育,2019.5:133-136

[2] 王宇,陆秋.新工科背景下非计算机专业计算思维的培养模式探究[J].计算机教育,2019.5:150-153

[3] 周黎鸣,郭拯危.新工科背景下Java程序设计课程改革探索与思考[J].计算机时代,2019.4:93-95

[4] 赵广辉.面向新工科的Python程序设计交叉融合案例教学[J].计算机教育,2017.8:23-27

[5] 王春霞.新工科背景下Visual Basic程序设计教学改革与索[J].大学教育,2019.103(1):101-103

[6] 许健松.高校探究式教学模式的创新与拓展[J]. 中国大学教学,2018.11:35-37

[7] 腾讯网.从“课堂革命”到国家级教学成果奖特等奖:川大的探索[EB/OL].2018-10-25[2020-08-13]. https://new.qq.com/omn/20181026/20181026A0KM07.html.

[8] 胡文龙.基于CDIO的工科探究式教学改革研究[J].高等工程教育研究,2014.1:163-168

[9] 冯露,亢一澜,王志勇,孙建,王世斌,贾启芬,沈岷. 基于问题学习的探究式教学改革实践[J].高等工程教育研究,2013.4:176-180

[10] 张红宇,王坚强,马华.结合社会网络分析和多维特征聚类的学习小组划分方法[J].计算机应用研究, 2013.30(3):732-735

猜你喜欢
探究式教学新工科教学改革
面向新工科的Python程序设计交叉融合案例教学
新工科形势下高校二级学院毕业设计管理探索
新工科背景下大学生创新创业教育探索
高中化学习题课探究式教学设计的研究
探究式教学法在立体几何教学中的应用分析
浅谈农村小学数学教学中探究式教学方法的运用
要将探究式教学融入到高中物理实验教学之中
基于人才培养的技工学校德育实效性研究
现代信息技术在高职数学教学改革中的应用研究
以职业技能竞赛为导向的高职单片机实践教学改革研究