APP下载

C++程序设计的教学改革

2017-09-23孔丽英

软件工程 2017年7期
关键词:程序设计教学改革教学模式

摘 要:多年来,C++程序设计教学重程序轻思路、重灌书轻启发、重厚此薄彼轻因材施教使得学生只了解程序设计的基本概念,而对于程序设计的理念、方式、思路和技巧拟懂非懂,在学习过程中碰到困难问题,往往束手无策。经过多年的教学研究,提出了“启发-案例-实践-评价”的教学模式,实现突破性改革。通过教学证明,该教学模式从根本上提高了学生程序设计思维能力、算法设计能力和设计程序能力,达到事半功倍的效果。

关键词:教学改革;程序设计;教学模式

中图分类号:TP391.9 文献标识码:A

1 引言(Introduction)

众所周知,目前大部分高校都开设了C++程序设计的课程,该课程主要目标是培养学生在一定程度上具备分析程序与设计程序的能力,使学生掌握计算机求解问题的策略[1],为后续专业课程提供强大的理论支撑。近年来,通过实际教学、调研、研讨及调查等,了解到部分高校虽然在不断探索程序设计课程的教学改革,也取得一定的成效;但是,存在的根本问题依然得不到有效解决,相反,导致学生在抄袭上、突击背记程序、为考试而考试、学习兴趣锐减等现象愈演愈烈,严重背离教学初衷,影响了正常学习氛围。周以真(Jeannette M.Wing)教授指出,计算思维(computational thinking)是应用计算机科学的基础概念去求解问题、设计系统和理解人类行为[2]。因此,本文提出了“启发—案例—实践—评价”的教学模式,而在案例教学中能从根本上实现周以真教授所提出的计算思维理念,实现了突破性的教学改革。这次的教学改革不但提高了程序设计课程的教学质量,而且全方位增强了学生的学习兴趣,最为重要的是学生的设计思维、开拓创新能力得到了全方位尝试,自我价值得到认可。从参加国家计算机水平二级VC++考试的学生成绩来看,本课程教学改革的理念、方向得到了验证,取得明显成效。

2 存在问题(Existing problems)

严格来说,C++程序设计课程比较难学,难免造成学生对C++程序设计课程的学习不感兴趣,而出现抄袭作业、抄袭实验、突击背记程序迎接考试等不良现象。近年来,各高校在教学方法与教学手段也进行了一系列的改革,但教学方法主要还是以讲授式为主,配以多媒体幻灯片展示以及程序演示,实验手段也只是针对单一知识点的巩固练习,题目多数体现为数学公式到程序转换过程[3],这种单一的教学方法和实验手段,使得学生在学习过程中,虽然掌握了大量的程序设计概念和语法,却缺乏求解实际问题的思维能力、算法设计能力和设计程序能力[4]。归纳起来,目前课程教学存在的主要问题是:

(1)课程教学过于强调语法教学

目前大部分教材主要是通过案例讲解如何应用程序设计概念和语法设计程序,很少讲解程序设计的思路、方法和技巧。教師在教学过程中也只是按教材照办教学,导致学生只懂语法并能理解教师课堂上所讲解的案例,但课后却不懂得如何设计程序。

(2)课程教学内容多,教学课时不足,造成教师满堂灌而忽略了学生课堂交流活动,导致学生厌倦听课而玩手机,听不懂教师所讲的内容,从而不会设计的程序。

(3)实验教学受学时和空间的限制,学生的实践能力无法得到充分的锻炼和提升[5]。

(4)班级人数太多,实验课的任课教师难以辅导到位,这样会造成学生不重视实验课,经常出现缺课、逃课、人在心不在等现象,使编程能力得不到锻炼。

(5)学生能力参差不齐。一般来说,学习能力强的学生逻辑思维较强,容易接受新观念,但是,正所谓,尺有所短,寸有所长,学生也往往比较容易出现下列问题:

①不理解数学模型变量与语句变量的关系与区别。

②不理解数学模型与语句结构的相互关系。

③不理解程序的执行过程。

3 程序设计与计算思维(Programming and

computational thinking)

程序是用程序设计语言描述程序员要求计算机执行的操作,C++程序设计是程序设计语言的一种,它主要具有三个特点:(1)逻辑性强,计算机程序表达了计算机执行的操作,设计程序时,首先要分析问题,然后建立数学模型,最后设计程序。(2)操作性强,设计的程序必须能在计算机上运行。(3)结构性强,C++程序具有结构性,便于学生理解和修改程序。因此,学好C++程序设计课程,才能为后续课程或今后的工作应用都建立良好的程序设计基础。

周以真教授所提出的计算思维包括了涵盖计算机科学之广度的一系列思维活动[2],据此,不难发现周以真教授所提出的计算思维是运用计算机科学的基本概念、基本思想给人们解决问题提供思路与想法[6]。在数学上,解决问题的思路与想法就是对分析问题并建立数学模型,因此可以说,周以真教授所提出的计算思维是运用计算机科学的基本概念和基本思想去解决已建立的数学模型。

根据相关学者的归纳与概括,计算机科学中最核心的三大思想分别为“0”和“1”思维、“程序”思维和“递归”思维[7]。对于数学类专业的学生来说,对计算机科学的基本概念与基本思想的认识是比较肤浅,但建立实际问题的数学模型并不陌生。因此,在C++程序设计课程的教学中,应该将建立的数学模型转化为计算机科学中最核心的三大思想,才能让学生掌握设计程序的思路和方法,这就是教学改革的根本要求。

4 课程内容改革(Curriculum content reform)

C++程序设计主要包括程序设计概述、数据类型和表达式、程序结构、控制结构程序设计、函数、构造数据类型、指针、面向对象程序设计基础和文件等教学内容[6],根据C++程序设计课程的特点和计算思维的定义,使用的教学教材要符合五个原则:(1)符合由浅入深的学习规律:教材内容由简单到复杂,衔接紧密,分散难点;(2)案例要实际:提高学生学习兴趣;(3)程序分析透彻:便于学生理解程序运行的过程以及变量变化的情况;(4)规范程序设计步骤:“分析问题—建立数学模型—算法设计—程序设计”,便于学生理解程序设计的思路与方法,培养学生计算思维的能力;(5)便于自主学习:教学内容、习题和实验教材以及习题解析要配套。(6)习题多样化:便于学生适合各类的考试与比赛。endprint

近几年,教学使用的教材[8]经过多次修改基本已成熟,在上学期对学生进行了教材满意度以及修改意见的调查,获悉学生对教材的建设比较满意,学生在期末考试成绩以及国家计算机二级考试VC++的过级率都得到提高,今年还会根据学生的修改意见对教材进行修改,达到课程内容与计算思维的培养统一。

5 教学改革(Teaching reform)

针对课程教学以及学生学习课程中存在的问题,近几年来,对C++程序设计课程进行教学改革探索,在教学过程中,采用了“启发—案例—实践—评价”的教学模式进行了教学改革,获得了良好的教学效果。

5.1 启发

C++程序设计课程的知识点不但繁多而且前后知识点有密切联系,在学习过程中,如果学生不及时复习或不能理解旧知识,而老师又要讲新知识,就会造成部分学生遗忘前知识点而对新知识点更迷芒,因此,教学过程中教师首先启发学生重温旧知识设计案例程序的特点,然后提出旧知识设计该案例程序时的不足之处,让学生带着好奇心去学习新知识点,这样,在讲新知识点之前既可以达到复习旧知识,又可以将旧知识与新知识进行比较,以及它们之间的关系,并且能点燃学生学习新知识的兴趣。

例如,用数组设计程序与循环语句存在着密切关联,在讲数组时,首先用循环语句设计一个案例程序,然后让学生指出该程序的不足之处,然后引入数组重新设计该程序并指出数组设计程序时的优点,这样既做到了复习旧知识,又学习到了新知识,而且能理解应用数组设计程序的方便与快捷。

5.2 案例

C++程序设计课程分为面向过程和面向对象两部分的程序设计,从本质上讲,面向对象程序设计是一个设计方法层面的问题,其最终是对象的实现,它仍然是一个结构化控制过程[9]。因此,在C++程序设计课程教学过程中主要抓好面向过程程序设计的教学。教师除了要讲解程序设计的概念和语法等知识点外,更重要的教学任务是通过案例教学让学生理解程序并且要培养学生的计算思维。因此,在每个知识点的案例教学中,要分两步进行教学,第一步,理解程序执行过程:首先分析案例程序的程序结构,然后用程序运行图分析程序运行的路线;第二步,设计程序:首先根据案例设计数学模型,然后将其模型转化为算法的三种基本结构形式,最后将算法的基本结构组成程序。

比如,在讲解应用循环语句设计程序时,教学中按两步进行,第一步,理解循环语句执行过程:首先让学生明确指出程序中循环语句的部分;然后再让学生明确哪个变量是循环变量,哪部分是初值、循环条件和循环体;最后指出程序运行图分析程序运行的路线。第二步,培养运用循环语句设计程序的思路:分析案例并建立数学模型,并且指出该模型的循环變量、初值、循环条件和循环体;然后根据循环变量、初值、循环条件和循环体按填空式地组成循环结构,最后组成完整的程序。

5.3 实践

C++程序设计是一门实践性较强的课程,对于数学类专业的学生,实践教学主要是要求学生多设计程序。C++程序设计课程的实践教学由任课教师负责,一般60多人一个班,如果只有一个教师指导一个班进行实践教学,教师无法指导每个学生在实践教学中所出现的问题,另外,实验课课时少,也不能满足学生的需要。因此,C++程序设计的实践教学主要分为实验课练习、线上辅导和考级系统练习等三种练习方式。

实验课练习由任课教师和一位学生助教负责。实验课练习严格要求学生按“前中后”三步骤完成实验课,“前中后”的三步骤为:(1)实验课前,学生对教师布置的实验题预先设计程序。(2)实验课中,由教师和助教进行个性化辅导,程序运行过程中如果有错误,在教师、助教和学生的指导下进行修改。(3)实验课后,在规定时间内提交实验报告,实验报告的填写包括建立的数学模型、程序代码和用红色下划线标志运行过程的错误信息以及错误原因等等。

实验课学生人数多,教师和助教都难以辅导到位,因此,通过实验过程的辅导能了解学生掌握知识和设计程序的情况,目的是让教师随时根据学生的情况来调整教学进度。

线上辅导是教师或学生在Q群中与学生进行交流。学生通过截图将运行程序时出现的错误信息或程序发到Q群,教师或学生通过电脑或手机打开Q群回答学生提出的问题,这样,教师与学生之间、学生与学生之间都可以实现线上交流与辅导,突破了实验教学受学时和空间的限制,也让学生的问题随时得到解答。

在课程实践教学改革中,设计了类似于国家计算机水平II级VC++考试系统的一个模拟考级系统,在考级系统练习中,学生可以在规定时间内做各章节的各种题型,通过题型练习,学生能掌握自己对知识理解的程度,从而有重点地选择知识进行加强学习,达到事半功倍效果。

5.4 评价

教学评价通常有作业、实验报告、期末考试和出勤率等四种形式。期末考试主要是在期未结束时检查学生对理解程序和设计程序的程度,但教师无法根据学生学习成绩情况来调整教学过程和教学进度。学生作业和实验经常出现抄袭情况,造成作业和实验不能反映学生的真实情况。因此,作业、实验报告、期末考试和出勤率等4种教学评价只是学生获取课程成绩的手段,不能反映学生真实知识水平和教师教学质量。在C++程序设计课程教学改革中,教学评价增加了课堂评价和学生评价两部分,这不但实现了教师评价学生,而且也实现了学生对教师教学的评价,这样,通过一边教学一边评价,教师可以随时监控学生对理解程序和设计程序的程度以及学生对教学的需求。

(1)课堂评价

在课堂教学中,学生在学习任务的驱动下,通过回答问题和设计程序等方式进行课堂评价,课堂上学生每完成一个课堂评价,都给一定分数。比如,课堂教学中在规定时间内让学生设计案例程序,然后抽取学生的程序并写在黑板上,最后让学生们指出程序的错误,若学生设计程序的思路基本正确或修改程序的错误等都给一定分数,这样会有更多学生参与教学活动,而且通过分析同学程序的错误学生更能理解设计程序时要注意的事项,避免设计程序时类似错误的发生。endprint

(2)学生评价

虽然在每个学期后期学校都组织学生对任课教师的教学质量进行评价,但它不能完全反映学生对教学的需求,因此,为了能及时反映学生对教学的需求和实验题的难度,在教学过程进行学生评价是有必要的。学生评价主要是通过调查问卷形式获取学生对章节知识理解和程序设计的情况以及学生实验的情况,每次提交实验报告时都要求学生进行问卷调查,教师从问卷调查中了解学生对设计程序掌握的程度和实验题难度,从而進行调整教学内容,确保满足学生对教学的需求和实验题的难度情况等等。

6 结论(conclusion)

作为一名普通高校教师,不忘初心,一直对C++程序设计课程教学改革进行不懈探索。根据周以真教授所提出的计算思维是运用计算机科学的基本概念、基本思想给人们解决问题提供思路与想法[4],积极拓展理念、思路,在教学上,提出“启发-案例-实践-评价”的教学模式,率先在国家计算机二级考试VC++的过级率中得到验证,取得实效。同时,在高等学府根本性、重中之重的教学中,最大限度提升教学质量、学生的学习兴趣、创新开拓能力,实现教书育人的根本目的。

参考文献(References)

[1] 彭立宏,肖晓强,周丽涛.“计算机程序设计”课程教学研究与实践[J].计算机工程与科学.2014,36(A1):39-42.

[2] Jeannette M.Wing.Computation thinking[J].Communications of the ACM,2006,49(3):33-35.

[3] 米磊,贲可荣,赵皑.“面向学生”的C语言教学方法研究与实践[J].计算机工程与科学.2014,36(A1):5-9.

[4] 郭银章,王丽芳.基于项目任务驱动的C语言程序设计课程教学改革与实践[J].计算机教育,2017(2):41-44.

[5] 韩建民,王丽侠,叶荣华.“教学-训练-竞赛一体化”程序设计能力培养体系的构建[J].计算机教育,2017(3):61-64.

[6] 张广兵.基于计算思维的大学计算机基础课程改革之反思[J].计算机教育,2015(21):67-70.

[7] 战德臣,聂兰顺.计算思维与大学计算机课程改革的基本思路[J].中国大学教学,2013(2):56-60.

[8] 孔丽英,夏艳,徐勇.程序设计与算法语言-C++程序设计基础[M].北京:清华大学出版社,2015.

[9] 高枚,龚沛曾,孙丽君.构建多层次思维培养的C/C++程序设计教学[J].计算机教育,2016(1):81-83.

作者简介:

孔丽英(1964-),女,硕士,副教授.研究领域:计算机教学,数据分析.endprint

猜你喜欢

程序设计教学改革教学模式
群文阅读教学模式探讨
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索
基于人才培养的技工学校德育实效性研究
现代信息技术在高职数学教学改革中的应用研究
以职业技能竞赛为导向的高职单片机实践教学改革研究
微课时代高等数学教学改革的实践与探索
“一精三多”教学模式的探索与实践
“导航杯”实践教学模式的做法与成效