公务员期刊网 论文中心 正文

程序设计基础课程中讲练评教学模式

程序设计基础课程中讲练评教学模式

摘要:针对“程序设计基础(C)”课程教学中学生能听懂课,但动手能力差,编程能力弱等问题,提出教师通过课堂“讲”的设计,让学生先“学会”用计算机解决问题的方法,设计有针对性、趣味性和多层次的“练”,通过多元化考核的“评”,使学生能学得轻松,乐于练习,达到培养与训练学生利用计算机解决问题的能力,提升教学效果。

关键词:多元化考核;讲练评;教学改革;程序设计基础

一、“程序设计基础”课程教学中存在的问题

尽管程序设计语言已尽量地靠近人们所熟悉的数学、生活等,但程序设计中包含着学生陌生的思维方式。不恰当的教学过程不但使学生对计算机产生距离,也使其不能够正确认识计算机,更谈不上较好地运用计算机解决专业问题[3]。因此,如何在有限的课堂教学中利用教学设计“讲”好这门课,结合上机实习、课堂和课下的“练”,平时和期末的“评”,培养和训练学生利用计算机解决问题的能力是教学方法改革应该思考的问题。对非计算机专业的学生来说,学会计算机语言的语法和算法没有问题,但要应用所学内容,去分析问题、解决问题还是有一定的困难:“能听懂、能理解,但就是不会独立编写程序,做题有困难。”这是学生学习这个课程的感觉,如何解决该问题,是程序设计基础课程教学所面临的挑战。笔者以非计算机专业的通识类课程“程序设计基础(C)”为例,说明通过教学方法和手段的改革,即在该课程中依靠课堂的“讲”,让学生能学得轻松,激发兴趣;课上和课下练习的巧设计,让学生的“练”促进和巩固教学,使用多元化考核的“评”,调动学生学习的积极性,最大程度地培养、训练学生分析问题,用计算机解决问题的思维方法和技巧。

二、教学改革方案和教学活动的实施

(一)教师的“讲”

对于很多将来不从事程序员工作的非计算机专业学生来说,并没有意识到程序设计课程与他们专业之间的密切关系,认为工作后编写程序的机会很少,不知道为什么要学习这门课,从而缺乏学习的主动性和探索创新的能动性。教师在第一节课时就应该给学生讲清楚学习这门课的意义,使他们明确学习程序设计课程的目标和重要性。就像学生学习数学、物理课程并不是要成为数学家、物理学家或者将来要从事这方面的工作,而是通过这些课程的训练养成科学思维的素质和能力一样,虽然计算本身也是一门学科,但是其具有促进其他学科发展的作用[4]。21世纪科学上最重要的、经济上最有前途的前沿研究都有可能通过先进的计算技术和计算科学而得到解决。所以,学习计算机、理解利用计算机解决问题的方法,对于学生研究本专业的问题、解决本专业领域中的问题和创新有重要意义。课堂学时有限,如何最大限度地利用这些时间让学生学明白、学轻松、感兴趣,教师的课堂设计、互动和案例是重要的环节。课堂教学是整个教学活动的基石。程序设计基础课堂教学需要注意以下两点。首先,通过课堂教学让学生“学会”计算机解决问题的方法、技巧。可以采用启发式教学,即在课堂上制造悬念,抛出问题来引导课堂教学,以引导学生解决问题为主线,对每节的教学内容做好教学设计,对每个知识点的内容设计好问题,用问题引出要讲的内容,以引起学生的思考,从而融入、参与到课堂中来,调动学生学习的积极性。依据学者马扎诺的学习认知过程理论[5],积极性将激发思维训练者内在的认知动力,将促使控制学习的自我系统调度工作,主动参与到认知建立过程中。其次,提供并在课堂演示与学生所学知识层次相当的综合类案例程序,以达到提高和升华知识的目的。好的案例可以拉近学生与实际开发环境的距离[6],让学生感觉到学能致用,既可以达到吸引学生注意力的目的,又可以使学生深刻领会相关的程序设计原理。例如,在学习完《程序设计基本结构》章节的知识后,提供“基因信息处理”的综合案例程序:有欢迎界面、简单的菜单,实现的功能:(1)DNA序列的处理:计算序列的长度;碱基A、T、C、G所占百分比;输出该序列所对应的另一条单链。(2)RNA序列的处理:计算序列的长度;碱基A、U、C、G所占百分比;输出转录该序列的DNA序列。(3)未知序列的处理:判断该序列的类型(DNA/RAN/UNDETERMINED)(若U为0%,则是DNA;若T为0%,则是RNA;若U、T都为0%,则为UNDETERMINED)。图1各章节综合案例设计在《数组》章节后提供“抽奖嘉年华”或“点名程序”的综合案例程序,程序有欢迎界面,程序运行时让参与抽奖或点名学生的姓名在屏幕上反复滚动,当按下任意键后抽出一位学生,如果要继续,按提示操作,继续上面过程,也可以选择退出,不再进行抽奖或点名,最后将所有抽中学生的姓名显示在屏幕上。在《指针》一章提供“括号匹配问题”的案例程序,功能:从键盘输入一串由括号组成的字符串,判断各个括号之间是否匹配,如:([]())、[([][])]、[(]),若匹配,输出“括号匹配”;若不匹配,输出不匹配的类型:左右括号类型不同;左括号多余;右括号多余等。《函数》章节后提供“掷骰子游戏”的案例程序,功能:模拟掷骰子的游戏(两个骰子)。第一次掷的时候,如果点数之和为7或11则获胜;如果点数之和为2、3或12的时候则落败;其他情况下的点数之和称为“目标”,游戏继续。在后续投掷中,如果玩家再次掷出“目标”点数则获胜,掷出7则落败,其他情况都忽略,游戏继续进行。每局游戏结束时,程序询问用户是否再玩一次,如果用户输入的回答不是y或Y,程序会显示胜败的次数然后终止。在《结构体、共用体》章节提供“维护通讯录数据库”的案例程序,《文件》章节提供“打字练习系统”案例程序等。这些综合类的程序案例可以提高学生学习的兴趣,使学生用现阶段所学的知识读得懂程序,领略综合程序的风采,学会规模逐渐增大的系统程序,感受和领悟利用计算机求解问题的基本方法和思维模式。

(二)多层次的“练”

程序设计课程具有较强的实践性,要用计算机解决一个问题,从问题分析、设计算法到程序实现,必须通过实践操作才能加深理解和应用所学知识。建立与课堂教学配套的练习题,按照教学大纲对每个章节知识点掌握的要求,呈阶梯分布,指导学生通过练习去熟悉并记忆C语言的语法,并能够发现问题、提出问题和分析问题,深入理解这些知识点的具体应用方法和技巧,从而掌握和应用每章节的知识点。课堂练习是教学中的重要环节。例如教师在讲完一个算法后,给出一个命题,命题可以是与该算法相近的算法问题或该算法的应用问题,让学生应用讲过的算法和方法,在草稿纸上写出自己设计的程序,同时请两个学生在黑板上展示自己的程序,给来黑板上展示自己程序的学生以2分(或更多)的平时成绩作为鼓励,待学生们都写完程序后,教师可以对黑板上学生的程序(即“活生生的例子”)进行分析和点评,学生可以对照找出自己的问题。课堂有参与、有体验,学生就不会感觉枯燥、无聊而打瞌睡,通过教师的点评,对照别人的程序和自己的程序,学生也可以理解一个问题的求解方法并不是唯一的,了解评价算法效率的方法等。将课堂接受知识的模式转变为应用模式,这个过程是学生从学到知识到会编程序的重要一环,不能因为课堂时间有限而让学生去课下练习,可能会有部分学生没有练习或没有及时练习,导致课堂所讲的内容没有巩固,再过一段时间去做同类型的题目时,学生就有生疏感或感觉困难。所以设计较好的课堂练习是使学生从学会知识到会应用知识编程序转变的垫脚石,教师应很好地利用课堂练习环节。课下的练习设计为具有层次、趣味性的练习。OJ(OnlineJudge)系统是一个在线判题系统,学生可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。OJ系统中的程序设计练习题的质量是该系统的灵魂,是该系统吸引学生或用户前来练习和挑战的法宝。OJ系统设计具有层次性,知识点分布合理、综合性和趣味性的程序设计题和相应的测试数据是训练学生利用计算机解决问题的保证。练习题分为基础训练、能力提高和综合应用三个层次。针对学生学习能力差异性的特点,每章的练习题规划为基本篇和提高篇,综合题可根据情况设置。基本篇内容是对理论知识的基本实践应用,要求每位学生必须完成,对系统中的基础练习题目做到勤更新,在选题上应选择具有趣味性的题目,激发学生对程序设计的兴趣;提高篇内容是对所学知识点的扩展、延伸应用,供学有余力的学生选做。设定相应的奖励机制,如为提高篇题目设定比基础篇题目较高的分值,而综合应用题目的分值更高,所有题目均本着趣味性和实用性的原则设计,让学生乐于思考,激发学生在课堂上主动接收获取知识的能动性。以知识需要驱动课堂学习与思考,达到培养和训练程序设计能力、运用所学知识解决实际问题的能力。

(三)多元化考核模式的“评”

课程的考核可采用多元化考核模式,学生的最终成绩由平时成绩和终期考核成绩组成。平时成绩的组成有随堂测试、作业和课堂点名及回答问题。随堂测试可按教学周进行,也可按章节进行,题目可以是课堂讲过的例题,练习过的题目或相似的题目,出10—20道,用excel在每个人名下产生从1到出题个数的随机数,即随机抽一道题,每个学生只做一道题,即抽中的题目,10分钟内完成交卷,这样可以防止学生座位距离近,互相抄袭,也能防止学生只会一道或某几道题也能通过考试。随堂测试前可告知学生考试时间,甚至内容,旨在督促学生课后及时复习、消化和应用所学内容,为后继学习打下良好基础,也可避免学生平时不学,考试前突击的现象。每章节布置编程作业,前三章基础知识部分需要记忆和学习的细节较多,可以布置纸质作业,要求学生先在纸上编写,实习时上机调试,如有问题,改正后标在纸质作业上,并做好实习笔记,在回看或复习时可以起到提醒的作用,培养学生良好的学习、编程习惯,后面章节的作业程序可以使用OJ系统的题目,以训练学生严密的逻辑思维和设计、调试程序的能力。终期考核成绩有两种方式,可由学生自由选择,一种是参加学期末的上机考试,另一种是免试,但需要满足下面的条件:(1)认真参与完整的教学活动(听课、参加随堂测试、完成作业)。(2)提交一个自己编写的与本专业有关的系统程序(或自己感兴趣的某方面的系统程序,约300行),并就此问题有完整的文档(老师提供文档模板),并且在小范围内进行报告。在完成系统期间可找教师指导,教师根据完成情况打分。(3)有整个课程完整的笔记(手写,包括预习笔记,听课笔记和实习笔记)。(4)提交一篇总结。申请免试的学生也可以参加期末考试,最终成绩取最高分。这种多元化考核方式在本校理工类非计算机专业的学生中实行以来,受到学生的认可和推崇。平时的考核可以帮助学生正确认识和评价对知识的掌握情况,及时调整学习方法和时间。设计开发中型系统程序需要较全面的程序设计基础知识和能力,需要在学习和生活中去探索、思考,发现用计算机知识及技能去解决专业或生活中面临的实际问题的契机。对学生来说,带着需求去学习,有助于提高学习的主动性和积极性,提高自主学习的能动性,促进探究式学习和拓展创新能力。经过精心的教学设计,以教师的“讲”为引导,以经典和综合类案例为基础,以多层次、具有趣味性和挑战性的练习题目为保证,以多元化考核为手段,让学生学会用计算机解决问题的原理、方法和技巧,初步树立用计算机求解问题的意识,认识到计算机对于人的优势和局限性,提升学生的信息素养,达到培养和训练学生利用计算机解决问题的素质和能力的目的。

作者:王娟勤 孙健敏 陈勇 单位:西北农林科技大学

相关热门标签