APP下载

课程设计项目驱动的“C语言程序设计”教学方法探索

2021-03-21佟强蒋玉茹赵淳杨大利

教育教学论坛 2021年51期
关键词:C语言程序设计工程教育程序设计

佟强 蒋玉茹 赵淳 杨大利

[摘 要] 针对工程教育专业认证对计算机类专业毕业生能力培养的要求,介绍“C语言程序设计”课程的特点,分析在目前教学过程中存在的问题,提出一种以课程设计项目为驱动的教学改革思路,通过对学生的实践能力、工程能力、学习能力、创新能力等多种能力进行提升培养,实现课程教学质量的提高。通过在实际教学中对“C语言程序设计”教学改革思路的实际应用,证明了该教学改革思路具有一定的有效性,基本实现了课程教学目标。

[关键词] 程序设计;工程教育;能力培养;教学改革

[基金项目] 2020年度北京信息科技大学教改立项项目“基于OBE的程序设计基础课程教学改革”(2020JGYB22);2019年度北京高等教育本科教學改革创新项目“面向工程教育专业认证的‘互联网+’一体化教学平台建设创新模式研究”

[作者简介] 佟 强(1985—),男(锡伯族),辽宁沈阳人,工学博士,北京信息科技大学计算机学院讲师,主要从事图像识别研究;蒋玉茹(1978—),女,辽宁沈阳人,工学博士,北京信息科技大学计算机学院副教授,主要从事自然语言处理研究;赵 淳(1980—),男,北京人,工学博士,北京信息科技大学计算机学院讲师,主要从事智能制造研究。

[中图分类号] G642.0   [文献标识码] A   [文章编号] 1674-9324(2021)51-0138-04    [收稿日期] 2021-05-06

一、引言

工程教育是我国高等教育体系的重要组成部分。自我国成为《华盛顿协议》成员后,高标准通过工程教育专业认证正逐渐成为内各大高校建设一流新工科专业的重要指标。基于学习产出的教育模式(Outcomes-Based Education,OBE)既是工程教育的核心理念,又是工程教育专业认证贯穿始终的重要标准。OBE以“实现学生特定学习产出的教育过程”推动了传统内容驱动、学科导向或投入导向的教育模式改革[1]。在工程教育认证背景下,如何在课程教学中强化对学生的学习能力、实践能力、创新能力和工程能力的培养,成为课程改革所关注的重点方向[2]。

工程教育理念要求课程教学以能力培养为目标。工程教育认证对工程类专业毕业生从工程知识、问题分析、设计开发解决方案、研究、使用现代工具、工程与社会、环境和可持续发展、职业规范、个人和团队、沟通、项目管理、终身学习等方面提出了12条毕业要求[3]。这12条毕业要求对毕业生的知识、能力和素养都提出了具体要求,其中,知识是基础,能力是关键,素养是保障。

美国高校在基于发展21世纪能力的课程设计与教学方法研究中提出,教学要“超越书本知识,培养能力和素养”。教学改革的关键是能力的培养。在新时代背景下,计算机科学技术发展迅速,很多专业知识和内容更新换代的频率越来越高,学生工作后很快就会面临新知识,需要掌握新技能。因此,大学阶段的教育,除了传授专业知识外,更重要的是教会学生掌握如何学习的本领,培养学生应用新知识、新技术解决专业问题的能力[4]。

二、课堂教学现状分析

“C语言程序设计”通常是计算机本科专业大学生的第一门专业基础课程,其教学内容具有点多面广、实践性强等特点,非常适合以能力培养为目标开展教学,为最终培养适应新时代、新技术发展需要,具有扎实基础、较强的创新能力、具备自我提升能力的高素质计算机人才打好坚实的基础。

在前期的教学过程中,“C语言程序设计”课程组自主开发了一套在线过程化考核平台,其中的在线评测模块实现了编程题的实时、自动化评测,为学生提供了自主做、自主学的环境。学生在线提交代码后,可以立刻得到代码是否通过测试的提示信息,进而反复修改程序,多次提交,直到最后通过测试。学生也可以在该平台上针对不同的编程题目阅读提示、查阅资料、查看参考答案,以获取解决问题的思路、方法和知识,从而培养学生自主学习的能力和意识。

在之前使用该在线过程化考核平台进行教学与评价的过程中,可以发现已有教学环节仍然存在若干问题,主要体现在以下几个方面。

1.学生基础差异大。有些学生在中学阶段已经学习过一定程度的编程知识,而有些学生是初次接触计算机,对于计算机编程没有任何概念。由于课堂教学内容相同,难以满足不同基础背景学生的不同层次的学习需求。

2.学生的主动学习能力有限。大学新生受限于中学期间建立的学习模式和环境,习惯了所学的知识来源于教材、课堂和教师,在解决问题时能利用的知识和技能局限于已学过的内容,遇到困难时首先想到的是找参考答案,或是向老师和同学求助,缺少主动学习新知识解决问题的意识和能力。

3.实践能力与创新能力不足。对教材上的例题能够理解,但对于需要自主完成的编程题目却不知道如何下手,不懂得如何分解问题与设计程序结构,而在面对具体编程题目时又拘泥于已有的固定方法和模式,不能突破原有思维,尝试新思路和新方法,缺乏独立思考、深入钻研问题的习惯。

4.缺乏有效的工程思维与沟通技巧。绝大部分学生在过去没有任何项目开发经验,更缺乏与他人合作完成软件项目的经验,对于程序开发过程中出现的各种问题,不知道如何进行分析简化,难以与他人协作解决问题并完成项目。

为了适应OBE理念并满足工程教育认证标准,就要促进学生理解计算机思维并提升解决复杂工程问题的能力,具体表现为遇到未知问题时能够自发地学习新知识,并尝试使用不同方法和手段解决问题,具有一定的分析问题能力。通过改革教学方式和方法探索能力培养的途径,通过能力的培养提高教学质量,进而为学生后续课程的学习奠定坚实的基础。

三、课程项目设计方法

在工程教育认证背景下,在课程教学中强化能力的培养是课程改革的必然趋势[5]。程序设计基础课程的教学内容具有点多面广、实践性强等特点,非常适合以能力培养为目标开展教学。为此,基于OBE理念分析课程教学中能力培养不足导致的问题,提出以任务驱动的方式[6]对能力进行培养的教学改革思路,拟定若干个课程设计项目题目,并将其开发过程贯穿于整个教学过程。在课程初期,由学生自由组队形成若干小组,每组4~5人,选择一个教师事先指定的项目题目作为本组的课程设计项目。每个学生负责本组项目中的不同部分,并在教学过程中对自己的程序不断进行改进,在期末以小组形式进行公开演示,由组长讲解整体结构和项目亮点,由组员讲解各自负责部分的功能和设计思路。以其中的一个项目题目“2048游戏字符版”为例,在教学过程中根据教学进度,设计不同的程序功能要求如下:(1)完成顺序结构、选择结构的学习后,练习使用printf函数在屏幕上绘制4×4的棋盘格,并能够接收用户通过键盘输入的一个字符,根据该字符内容输出相应文字。(2)完成循环结构、数组的学习后,练习根据用户输入的数字在屏幕上自动绘制相应尺寸的棋盘格,并能根据用户输入的内容在棋盘上的指定位置放置相应数字。(3)完成函数、指针的学习后,练习通过调用函数的方式实现数字在棋盘上的移动与合并,以及新数字的随机放置,并根据游戏进程提示游戏胜利或失败。(4)完成文件的学习后,练习对游戏历史操作记录在本地文件的存取和游戏历史成绩在本地文件的存取。

在整个教学环节中共设置5个不同的课程设计项目题目供学生选择,每个题目均能够以上述类似的方式分解为若干子项目,每个子项目也可以进一步分解为若干功能点,每个功能点由一名或数名学生负责,再将各个学生所完成的部分组合起来,实现具体子项目乃至整个项目。根据每次教学过程所面对学生的具体情况,也可以在已有课程设计项目题目的基础上,对其难度与工作量进行适当的增减,以适应具体的教学情况。

通过使用课程设计项目题目的方式,主要从以下四个方面对学生的能力进行提升培养。

1.强化实践能力训练。针对学生将理论知识运用到实际场景中解决问题的能力较弱的问题,采用综合项目的模式,从模块化、层次化、应用型等三个方面强化学生的实践能力。其中,模块化用于强调对某一理论知识和概念模块的集中训练,层次化可以满足不同能力层次学生的学习需求,而综合项目的内容采用具体的应用问题,要求学生能够理论联系实际,从而解决问题。

2.融入软件工程思维。考虑到学生没有任何项目的开发基础,在实施课程设计项目教学过程中,可由教师指导学生进行项目需求分析、数据模型设计、系统功能规划、项目汇报报告等内容,要求学生以小组形式独立完成函数设计与实现、系统调试与功能测试等工作。通过完整的课程设计项目开发,让学生理解结构化和模块化的程序设计思想,并在小组合作开发的过程中,培养学生严谨、清晰的程序设计风格和良好的编程习惯,为后续的专业课程学习打好基础。

3.促进自主学习。在传统课堂教学的基础上利用现有的在线过程化考核平台与课程设计项目相结合,为知识传授与编程实践提供自主学习的平台和环境。在线过程化考核平台能够提供编程题的实时、自动化评测,为学生提供自主做、自主学的实验环境和机制。课程设计项目促使学生在课外时间学习并尝试课内所没有涉及的技术与方法,让学生体会自己攻克难关、解决问题的成就感和乐趣,激发钻研新知识、新技能的劲头,培养学生自主学习的能力和意识。

4.培养创新意识。结合传统的以教师讲授为主的课堂教学,探索与课程设计项目相结合、由实际问题引导的教学方法。课程设计项目要兼顾典型性与趣味性,并包含一定的计算思维,引导学生思考、研究在项目中遇到的具体问题,并让学生带着问题在课堂上和课堂外寻求答案,在探究的过程中学习新知识、掌握新技能、发现新问题、探索新领域,潜移默化地培养学生的计算思维能力和创新意识。

四、实验与分析

通过将本文所述课程设计项目题目应用到实际教学工作中,对这种教学方式的实际效果进行了评价。北京信息科技大学计算机学院的一年级本科生共分为10个班,各班学生的入学成绩分布较为平均。在“C语言程序设计”教学过程中,每两个班组成一个教学班级,共5个教学班。各班学生对程序设计的掌握程度在课前基本处于相同的统计水平。在2020—2021学年秋季学期的教学中,在针对2020级01~02班的课程教学中引入了课程设计项目题目,而在其他班级中仍然沿用以往的教学方式。教学结束后,在前文所述的自主开发在线过程化考核平台进行期末考试,使用在线评测模块共设置5道不同难度的实际编程题目,对学生在考试时间截止前最后一次提交的代碼进行自动化评测,并给出学生的期末考试分数。表1是2020级各班的期末成绩分布情况。

由于期末考试成绩全部由实际编程题目进行考核,该成绩如实衡量了不同学生的编程能力差异。从表1可以看出,对于在课程教学环节中引入了课程设计项目题目的2020级01~02班,期末成绩70分以上的学生比例达到了77.59%,显著高于未引入课程设计项目题目的班级。可以认为2020级01~02班学生的编程能力相比其他班级学生有了明显的提高。

为了进一步分析该项教学实验的成果,计算了2020级各班期末成绩的均值与均方差,如表2所示。其中01~02班的分数均值为75.93,比其他班级的分数均值(72.71)高出3.22,表明该班级的期末成绩相比其他班级有较明显的提高。同时,01~02班的分数均方差为13.91,低于其他班级的分数均方差(18.76),这表明该班级在取得更好平均分的同时,整体成绩的分布更紧密,班级内部的成绩差异相对较小,有效提高了学生的成绩。

以课程设计项目题目的方式进行学生能力培养的教学目标,主要包括以下两方面:一是将以课堂教学为主转变为课堂内外结合,要求学生能够自觉地学习新知识,遇到问题时尝试用不同的手段解决,变以教师讲授为主的学习为以学生自主学习为主的学习;二是提高学生的编程能力、合作与沟通交流能力、自主学习能力和创新能力。从教学实践来看,学生对“C语言程序设计”的学习兴趣和热情有了显著提高,自主学习能力得到了一定程度的训练,编程能力也通过课程设计项目题目的锻炼得到了普遍提高,基本实现了对学生能力进行培养的教学目标。

五、结语

作为对计算机本科专业学生能力进行培养的重要课程,结合学生的实际情况,从激发学生对编程学习的兴趣出发,以课程中具体的课程设计项目题目为核心,围绕各个课程设计项目题目进行内容讲解,并通过将课程设计项目题目分解为不同阶段和不同目标的子项目,让学生对具体技术的应用场景有更直接的认识,同时培养学生的工程思维与协作沟通技巧。所使用的课程设计项目题目覆盖了程序控制结构、数组、函数、指针、结构体、文件存储等教学重点内容,综合性较强,也具有一定的可扩展性。对2020级学生的教学实践结果表明,该方法在提高学生对“C语言程序设计”课程的学习兴趣和热情,以及提高学生的编程能力与沟通合作能力方面,都取得了良好的效果,基本实现了提高学生理解计算机思维,并提升解决复杂工程问题能力的教学目标。

参考文献

[1]欧阳勇,李红.工程教育认证背景下的大学计算机基础课程改革及实践[J].计算机教育,2019(4):45-48.

[2]张海生.跨界融合:“互联网+”背景下“新工科”的发展逻辑与建设目标[J].应用型高等教育研究,2017,2(3):13-18.

[3]中国工程教育专业认证协会.工程教育认证标准[EB/OL].(2020-02-17)[2021-04-10].https://www.ceeaa.org.cn/gcjyzyrzxh/rzcxjbz/gcjyrzbz/tybz/599711/index.html.

[4]吴爱华,侯永峰,杨秋波,等.加快发展和建设新工科主动适应和引领新经济[J].高等工程教育研究,2017(1):1-9.

[5]沈海波,周如旗,朱雄泳.新工科+工程教育认证背景下软件工程特色专业建设探索[J].软件工程,2018,21(3):57-59+30.

[6]周原,梁鹏.以学生为中心的《数据结构》课程教学改革实践[J].高教学刊,2019(5):142-144.

3854501908215

猜你喜欢

C语言程序设计工程教育程序设计
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
基于CDIO理念的计算机类人才培养模式改革探索
法国高等工程教育的早期发展
高职高专院校C语言程序设计教学改革探索
基于工程思维的Java程序设计课程教学研究
金属材料类工程教育人才培养初探
以“学生为中心”的《C语言程序设计》教学设计探究
浅谈《C语言程序设计》课程的教学改革
《C语言程序设计》课程的教学改革与实践