基于编程驱动的《C语言程序设计》教学改进的探索

2022-05-17 08:05:56程海水
江西广播电视大学学报 2022年1期
关键词:程序设计编程实训

程海水

(江西开放大学,江西 南昌 330046)

2019 年,国务院印发《国家职业教育改革实施方案》,明确指出职业教育与普通教育是两种不同教育类型,具有同等重要地位,强调职业教育是深化教育改革的重要突破口。高职课程教学改革对于提升职业教育质量和推动职业教育发展具有重要作用。在知网上,以关键字“高职;教学法”搜索,可搜索到2019 年以来发表的300余篇相关论文,经分析梳理,从内容上看,相关研究主要集中在项目驱动、任务驱动、情境式、体验式、问题式等教学改革模式的探索。从对象上看,大多针对具有普遍性、常规性特点的高职课程,对在课程特点和学习对象具有自己独特性的“特色”课程,研究得较少,创新性的课程教学研究成果不多。

为对接科技发展趋势和市场需求,高职教师需要针对有特色的课程本身进行更加深入的挖掘。在现有教学研究成果的基础上,本课题组以高职课程《C 语言程序设计》为切入点,探索“因课制宜”的课程教学改进思路,为其他课程改进教学方法提供参考。

一、《C语言程序设计》课程教学存在问题

《C 语言程序设计》课程是高职院校计算机相关专业的必修课和编程入门课。鉴于课程的重要性以及编程独有魅力,学生普遍对其感兴趣。根据课题组对1797 份问卷调查结果进行统计显示:73%的学生认为C 语言课程很有趣。但是,学生能做到从始至终认真学、喜欢学的却很少,学生普遍存在感兴趣、很想学,但又学不好、学不深,甚至心存畏惧的现象。问卷调查结果显示:56%的学生认为C语言课程很难学。为此,改进《C语言程序设计》课程教学方法,探索如何保持学生兴趣、增强学生信心、提高学习效果非常有必要。

(一)教学方法有待完善

1.教学研究成果方面

在知网上,以关键字“C 语言程序设计”搜索,可搜索到2019 年以来发表的123 篇相关论文,但主要都是基于项目驱动和基于任务驱动的教学改革模式。比如:杨兰,苗永梅,王核心的《“C语言程序设计”课程教学改革研究》、夏宇的《项目化教学在C 语言程序设计课程中的应用》等等。还有部分其他方面的研究成果,如:陈暄的《基于认知学徒制的虚拟学习情境的设计与实践—以为例》探索了运用认知学徒制的学习方法,构建虚拟学习情境,提高学生学习兴趣;[1]曾燕的《基于“雨课堂”的课程教学实践探索—以高职为例》,探索依托“雨课堂”教学辅助工具开展辅助教学,提高了学习效果;[2]王玉星的《混合式教学在课程中实施的初步探究》探索了线上线下混合式的教学模式在《C 语言程序设计》课程中的运用,指出线上线下混合式的教学模式提高《C 语言程序设计》课程的教学效果。[3]王晓娟的《基于OBE 理念的翻转课堂教学模式在“C语言程序设计”课程教学中的应用研究》积极探索如何使用国际上广泛认可的工程教育主流理念OBE 工程教育理念融入到翻转课堂教学模式的课程设计与教学实施中。[4]这些研究成果基本都是结合特定的教学模式进行研究与探讨,但目前为止针对课程本身的特性做进一步研究探索还较少见。

2.课程实际教学方面

在江西省高等学校人事管理研究会的大力支持下,课题组从教师和学生两个维度就课程教学情况进行了问卷调查。(1)通过对江西建设职业技术学院、江西交通职业技术学院、江西电力职业技术学院、江西工程职业学院等省内高职院校课程教师进行调查,课程教师均是按照课程的章节顺序,从语法规则入手开展教学;(2)对江西信息应用职业技术学院、江西交通职业技术学院、江西工程职业学院、江西电力职业技术学院等高职学院的学生开展大规模的问卷调查,共计收回有效问卷1797 份。经对这些学生的问卷进行统计分析:56.04%的学生认为教学效果不好;60.27%的学生认为前几章纯理论内容会影响学习积极性;62.88%学生认为课程的前后难度差别很大,学习曲线陡峭;53.14%的学生认为教学组织安排不合理。

由上述统计数据可以看出,目前C语言课程在教学安排上不尽合理。这主要体现在两个方面:(1)课程教学组织安排不合理。课程教师均按照课程的内容设计进行教学,在教学过程中过于注重语句、语法等相关知识的系统性、全面性,忽略了学生的接受度和学习热情。前期的理论知识学下来,很多学生基本没有了原有的学习热情。把一门原本趣味性很强的编程课程变成了枯燥难学的理论课,打击了学习者的学习兴趣。(2)学习曲线过于陡峭。在教学内容的安排上过于强调知识点本身的完备性,但是对学习曲线关注不够,导致学生容易在学习中途产生挫败感。

根据问卷调查数据,从“纯理论学习”“学习曲线陡峭”以及“教学组织安排不合理”这三者与“教学效果不好”的相关性,开展了相关分析,相关系数矩阵如表1所示:

表1 课程教学相关系数矩阵

从相关系数矩阵中可以看出,“纯理论学习”“学习曲线陡峭”以及“教学组织安排不合理”这三者与“教学效果不好”均成正相关,相关系数分别为0.53、0.59 和0.52,并且P 值均小于0.01,说明结果显著。根据皮尔逊相关系数经验:三个因素和“教学效果不好”有强的相关性。即“纯理论学习”“学习曲线陡峭”以及“教学组织安排不合理”这三者对“教学效果不好”确有一定影响。

(二)课程教材亟待改革

课题组选取了部分高职院校选用的教材以及市场上不同出版社出版的教材进行分析。对江西工程职业学院、现代职业技术学院、江西机电职业技术学院、江西软件职业技术大学、江西建设职业技术学院等多所高职院校目前使用的教材进行了调研,此外,我们还查阅了市场上已出版的多部教材。无论是高职教材还是普通本科教材,大部分教材基本集中在传统编写方式、项目驱动或任务驱动编写方式。只有很少部分教材针对课程特点进行了优化。比如:西南师范大学出版社出版,赵克林、游祖元主编的全国高职计算机专业教材《C语言实例教程》,该教材指出了目前教材普遍存在的问题:过分讲语法,把简单问题复杂化,太重系统性,长篇累牍,大段文字,致使书篇幅太厚,老师上课时不好做教学计划,一般前3章堆砌纯知识,第4章才能见到程序的影子,不能满足各层次学员的需求等等。该教材对上述问题进行了改进。

从内容体系、任务驱动或项目驱动的编写方式、特点等几个维度对目前各高职院校采用的多种教材和市场上收集的部分教材进行了总体情况分析,具体情况如表2所示:

表2 C语言程序设计教材分析

序号 教材名称(使用学校) 出版社及主编 前三章知识点 编写方式和特点6 C程序设计(第五版)(萍乡学院)清华大学出版社、谭浩强计算机语言、发展及其特点、简单的C 语言程序举例、运行程序的步骤与方法;算法定义、算法特性、算法表示、程序设计方法;常量和变量、数据类型、数据类型、运算符和表达式、语句、输入输出。传统方式。前三章全是理论知识,且较为集中7 C语言程序设计基础教程(市场上查阅)黄河水利出版社、张水利,朱光波C语言概述、程序结构、书写规则;数据类型、类型转换;库函数简介、输入输出函数、标准库函数8 C语言程序设计(市场上查阅)高等教育出版社、赵彦C 语言的发展历史、特点、运行方法与步骤;算法的特性、流程图设计算法、N-S盒图设计算法;“身高体型判定系统”数据处理9 C语言程序设计基础教程(市场上查阅)清华大学出版社、李少芳,张颖C语言的发展历史、特点、算法概述、开发环境;数据类型、常量、变量、运算符及表达式、常用数学函数、字符输入输出函数;结构化程序设计任务驱动,把章节改成了项目和任务项目驱动,以三大真实项目(身高体型判定系统、考试系统、学生信息管理系统)为引领传统方式。前三章全是理论知识,且较为集中

综合各个学校选用的教材以及市场上不同出版社出版的教材情况分析,目前的课程教材主要有以下几个方面的特点:(1)语法知识过于集中:C 语言涉及的概念复杂、规则繁多、语法严格、使用灵活。一个简单的输出函数printf,涉及的格式字符就有d格式符、u格式符、c格式符等,达10 个之多。每个格式字符又有若干种用法。如,s 格式符就有%s、%ms、%-ms、%m.ns、%-m.ns 等五种用法。涉及C 语言概况、特点、基本结构、算法、数据类型、运算符、常量、变量、输入输出函数等这些枯燥而又繁多的知识点基本都集中在课程前三章。江西软件职业技术大学和江西工程职业学院分别使用的胡则辉的《C 语言程序设计案例教程》和占俊的《C 语言程序设计项目教程》教材更是集中在前两章.呈现的结果就是枯燥的理论知识全在课程前面,有趣的内容全在后面。(2)从编排上,普遍采用先介绍基本知识后使用实例巩固知识的顺序。(3)从教学设计上看,大多还是反映出以“教”为主的思维,教师在教学过程中占据主导地位。(4)从任务设计上看,不管是按照传统教学方法设计,还是按照项目驱动或任务驱动教学方法设计,均重点关注知识点,没有充分发挥《C语言程序设计》课程的特点去吸引学生。

作为较为集中的项目驱动和任务驱动两种教材设计模式,主要有两种设计方式[5]:一是整体设计。选择一个完整的大项目,贯穿教学全过程。以此为主线,紧扣各章节知识点,将项目分解成若干个相对独立的子项目;二是章节设计。每一章中设置一个较大的项目或者任务,以此为主线,紧扣各节知识点,将项目分解成若干子任务。但是上述两种设计方法在实际教学中都存在一定的问题:(1)学生认知现状与项目或任务情境实际情况有偏差。大多数任务都是脱离现实生活的理想化虚构任务,学生难以对任务情境有认同感和兴趣点。(2)任务难度安排不尽合理。程序代码复杂、难度较高,不适合没有编程基础的学生。学习者往往会遇到很多问题而束手无策,导致出现与教学改革初衷适得其反的效果,严重打击学习者自信心、降低学习者学习兴趣。(3)许多职业教育教材在前言部分都纷纷表明是以“职业能力导向”的先进理念进行编写的,实际只是在目录上简单地用“项目”“任务”代替“章节”,在知识结构和体例结构上并未落实[6]。

就教材使用的效果,也同步开展了问卷调查。经对1797 份有效问卷调查结果统计:54.15%的学生认为课程教材内容体系编排不合理,影响学习积极性;56.7%的学生认为教材中安排的程序实例较难,不容易上手。

(三)教学实训水平有待提升

理论课程与实践课程是相互依存、相互促进的教学体系。经对调查问卷进行统计:55.37%的学生认为课程实训不科学,不能对学习起到很好支持作用;54.15%的学生认为课程实训任务层次不合理;54.2%的学生认为课程实训任务难易程度不合适。

根据综合问卷调查结果可以看出,在实际的教学过程中,教学实训环节还有待优化。主要体现在:(1)实训任务的层次性不合理,设置上不够系统、完整;(2)实训任务的差异化、难易度等设计不合理,普遍存在随意性布置任务的现象。[7]

对上述“课程实训任务层次不合理”以及“课程实训任务难易程度不合适”这两个内容的调查数据与“课程实训不科学,不能对学习起到很好支持作用”调查数据的相关性开展了相关分析,相关系数矩阵如表3所示:

表3 课程实训相关系数矩阵

从相关系数矩阵中可以看出,“课程实训任务层次不合理”以及“课程实训任务难易程度不合适”这两者与“课程实训不科学,不能对学习起到很好支持作用”均成正相关,相关系数分别高达为0.9 和0.85,并且P 值均小于0.01,说明结果显著。根据皮尔逊相关系数经验:“课程实训任务层次不合理”“课程实训任务难易程度不合适”这两者和“课程实训不能对学习起到很好支持作用”有强的相关性,即“课程实训任务层次不合理”以及“课程实训任务难易程度不合适”这两者对“课程实训不能对学习起到很好支持作用”确有一定影响。

二、基于编程驱动的《C语言程序设计》教学改进的核心思想

传统教学中《C 语言程序设计》这门课的教学效果还是有待提高的。经过多年教学实践和探索,结合课程以及学习者的特点,课题组创新性地提出编程驱动教学法。它的核心思想主要包括:

(一)关注学习者需求

课程学习者是刚刚步入高职学院的新生,没有编程基础,学习能力和主动性不强。目前的课程教学没有根据学习者实际去思考如何改进教学方式。因此,首先要对学习者需求进行详尽地分析,包括(1)现有知识结构和基础;(2)兴趣爱好;(3)职业发展愿望。基于此,所有的教学内容和教学组织都应当契合学习者的现实情况和需求来展开。

(二)以编程驱动学习

项目驱动和任务驱动教学法都是以学生为中心、注重学生能力培养的教学方法。理论上,两种教学方法均可以在教师和学生的配合下,达到良好教学效果。但是在学生缺乏基础的前提下推广这两种教学法,学生会因项目太大、难度太高,遇到较大困难,达不到理想的教学效果。因此,编程驱动学习的核心思想在于:(1)以构建学习理论为指导,提供真实情境下的编程任务;(2)结合职业需求、联系日常生活,挖掘课程的亮点和兴趣点,合理组织教学内容和教学任务;(3)构建合理的学习难度曲线,使学生在学习过程中能够保持信心;(4)控制编程任务的合理规模与难度;(5)关注各个任务之间的内在联系与逻辑上的整体性。

编程驱动学习将知识点融入到较为简单、贴近生活、趣味性强的编程实例中讲解,让学生在程序中吸收消化知识点,让课堂教学更加科学、更加生动、更加贴近课程特点,最终实现在持续保持学习兴趣的前提下,帮助学习者高效、快速地掌握课程知识,同时提升学习者的编程能力。

三、《C语言程序设计》课程教学改进措施

(一)重组知识体系

为实现编程驱动思想,将知识点融入到程序实例中去,就应对课程的知识点进行全面梳理,并综合考虑程序实例和知识点之间的契合度,合理优化原知识体系的组合方式与组合顺序。主要应采用以下方式:(1)在知识选取上,突出编程驱动设计思想,将以往对语法规则全面系统的讲解改为将语法知识与编程任务融合在一起,避免过于集中的纯语法讲授;(2)在知识编排上,突破常规的章节局限,选取部分简单、必备的知识点与程序充分融合;(3)在知识完整上,可以在各章节的最后,通过知识补充的方式将剩余知识呈现出来,最终保证了知识体系的完整,实现“先入门再深入再全面系统”的主要思想;(4)在知识呈现上,每个章节引入思维导图,直观展现本章节的体系和知识内容,有利于教师有条理、有层次、有逻辑地教授课程,有利于学生梳理知识脉络、深入理解与应用知识;[8](5)在知识编排上,不追求为了重组而重组,C语言程序设计课程的各章节都有不同的特点,就理论知识多、语法灵活复杂的前三章进行多方位的知识重组,对后面的分支结构、循环结构、数组等章节,因概念、理论知识不多,为了在高效、完整、成体系的呈现知识,不进行知识重组。

(二)精选程序实例

始终保持学习者学习热情的关键是精选程序实例。在保证知识点和程序充分融合的前提下,应选取与现实贴近、趣味性强、具有吸引力的程序实例。应主要采用以下几种原则开展程序实例精选工作:一是选取与生活密切相关的程序实例,比如圆的面积、解二元一次方程、闰年判断等;二是选取有名的世界性问题,比如Fibonacci数列问题、汉诺塔问题等;三是选取具有实用性价值的程序实例,比如:实现计算器功能、模拟自动饮料机等;四是在学习者需求分析的基础上,精选程序实例,根据要教授的学习群体的学习目标、知识结构、兴趣爱好以及职业发展愿望等需求开展程序事例精选工作;五是控制程序实例难度和规模,平缓学习难度曲线,使学习者逐步深入。

这些包含一个或多个知识点的大量程序,形成一个较为完整的《C 语言程序设计》课程程序库,整个程序库将覆盖课程绝大多数知识点,最终形成一个有机整体。[9]通过精选实例组成的程序库,能够实现提升整个课程的实用性、趣味性和吸引力。

(三)上好第一堂课

正如爱因斯坦说过的“兴趣才是最好的老师”,学生对课程是否感兴趣直接影响到教学效果的好坏。因此,第一堂课至关重要。第一堂课应该扬长避短,充分发挥编程的独特魅力。要改变传统的第一堂课滔滔不绝介绍C 语言基本概念、发展历史、语言特点、语言优缺点、编译环境、基本要求等基本知识,这些对没有编程基础的初学者来说,既枯燥又无吸引力,学习效果也很差。最关键的是不学这些知识根本不会影响后续章节的学习。因此,第一堂课就应该落实编程驱动的思想,首先以著名的汉诺塔、贪吃蛇等具有强大吸引力的游戏编程实例作为话题,逐步揭开编程在学生心中的神秘面纱,同时向学生承诺,认真学习这门课程,就能够实现自己动手、独立完成这些简单游戏的开发。这将极大地激发学生学习动力,让学生从内心爱上计算机编程。学生的学习兴趣、学习热情、学习动力从第一堂课就开始被点燃。

(四)革新教材理念

新的教学方法需要新的教材编写理念。(1)内容上,理论知识的选取遵循“必需够用”的原则,紧紧围绕精选程序,精选理论知识,将基本概念和基本原理融入程序案例中去编排教材内容,从而达到“工学结合,知行合一”的教学效果;(2)方式上,采用开放互联的新形态一体化教材的建设思路,将介绍实例程序的微课视频、编程源码等数字资源和纸质教材有机融合,为线上线下融合学习提供支撑;[10](3)设计上,改变先全面系统知识再实例讲解的传统编写方式。每个章节第一大模块为知识链接模块,仅仅介绍程序实例涉及的最基础知识点,确保学生能够听懂和理解后续的编程任务,又不会被大量枯燥的理论知识所困扰。第二大模块为编程任务模块,主要由一系列的编程任务组成。这部分内容除了需要精选程序,保证内容的趣味性外,还要实现语法知识与精选程序的融合,呈现程序设计的问题分析、算法思维、编程技巧等相关内容。在一些核心知识点,如if语句、while语句等,程序实例可以重复呈现,起到鲜明对比的作用。第三大模块为知识储备模块,主要是对前两个模块知识点的补充,确保知识体系的完整性。教材设计时,需要注意避免上述提到了为了知识重组而重组,要根据各章节不同的特点,因章而异,不机械地追求千篇一律,统一风格、统一格式。

(五)优化课程教学

课程教学始终贯彻从简单到复杂,从感性认识到理性认识的教学方针。[11]具体实施主要以编程任务为载体组织开展教学活动:(1)以生动的程序实例作为教学情境,在讲解程序中逐步导入数据类型、运算符、语法等理论知识;[12](2)通过程序分析和讲解逐步加强学生对理论知识的理解和掌握,提高学生编程技巧和能力,具体过程主要是按照教材设计模块,先介绍知识链接的简单知识点,然后快速进入编程任务模块;(3)在讲解编程任务时,要保持较好的授课节奏,既要重视解决问题的编程思路,又要详细介绍程序中融入的理论知识。在学生已经掌握本章节常规知识及其应用的基础上,进入知识储备模块教学,让学生掌握剩余知识点。通过三个模块的逐步依次讲解,教师课程所有知识点讲授了,学生才能实现编程能力提升和保持学习兴趣。在教学过程中,教师要特别注意发挥学生的主动性,通过实例任务与学生频繁互动,让学生主动思考,避免出现完全以教师为中心,一个实例接着一个实例地讲解。

(六)改进教学实训

C 语言作为当今大多数高级语言的基础,编程实验占有重要地位,是培养学生基本编程能力、科学研究能力、综合创新能力的重要实践环节。[13]为提升教学实训效果,应从以下三个方面进行优化:(1)建立实训项目库。在教学实训中,编程驱动思想同样需要贯穿其中。对照相关知识点,设计对应的实训项目,形成一整套完整的实训项目库,用明确的编程任务来主导学生的实践操作。(2)优化实训项目层次感和难易度,控制程序实例难度和规模,平缓学习难度曲线,使学习者逐步深入;(3)与理论课项目紧密衔接,实训对应的编程任务应该跟课堂讲授的程序有相似性,并且紧扣相关的教学知识点,但要避免过于章节化、忽略巩固前面章节知识。[14]通过教学实训的优化和实施,进一步加深知识点的理解和应用,提升编程思维能力和实践操作能力。

结束语

为提高学生兴趣、调动学生积极性、增强学生信心,以深入挖掘和充分发挥课程趣味性为切入点,提出了基于编程驱动的课程教学思想。在分析课程教学存在问题的基础上,从重组知识体系、精选程序实例、上好第一堂课、革新教材理念、优化课程教学、改进教学实训等方面提出了课程教学改进措施,为课程教学改进的探索提供了一些思路。

猜你喜欢
程序设计编程实训
编程,是一种态度
少先队活动(2021年2期)2021-03-29 05:41:04
元征X-431实测:奔驰发动机编程
编程小能手
学生天地(2020年17期)2020-08-25 09:28:48
基于Visual Studio Code的C语言程序设计实践教学探索
计算机教育(2020年5期)2020-07-24 08:52:56
基于CDIO理念的数控实训教学改革与实践
纺织机上诞生的编程
从细节入手,谈PLC程序设计技巧
电子制作(2019年9期)2019-05-30 09:42:04
电工电子实训教学改革与创新
电子制作(2017年8期)2017-06-05 09:36:15
高职高专院校C语言程序设计教学改革探索
微课在数控实训课中的应用探析