程序设计模块学业水平考试命题研究

学业水平考试既是对教学效果的检验,又是教学发展的风向标,对教学具有不可忽视的导向作用。如何评价学生的学业成绩,实现考试过程与学习过程的有效链接,发挥考试对教与学的导向作用,促进程序教学的有效实施,一直是我思考和探索的问题。下面,结合几年来的课题研究、命题和审题的实践体会,谈谈我对程序设计模块学业水平考试命题的几点思考。

● 考核内容的全面性与侧重点

考什么是教师和学生关注的首要问题,它不仅指引着教育教学的方向,也体现着课程的定位。学业水平考试需要保证试题的内容效度,即保证试题内容对模块考核目标和内容的覆盖率。因此,试题的考核内容应具有全面性,在命题方面,需要根据考核内容的需求,发挥不同题型的考查功能,综合运用多种题型,全面考查学生对相关知识、技能、思想和方法,尤其是核心概念和基本方法的掌握情况。例如,利用综合题创设贴近生活的问题情境,考查学生解决实际问题的能力,实现对多维度教学目标的综合评价;同时,以散点式出题方式设置选择题、填空题,弥补综合题在内容覆盖面上的不足,实现对核心内容的全面评价。

由于学业水平考试还应发挥其导向功能,在命题方向和考查内容上应有所侧重,可将教学中的重点、难点转化为问题。以往很多考试偏重对程序设计语言的考核,较多的考查某一门程序设计语言所用的符号、语句和语法规则等,使程序设计教学变成了针对某一门编程语言的教学。实际上,编程语言只是算法实现的工具,程序设计的关键是问题求解的思路,教学中教师应该更加关注求解问题的思想和方法,突出算法的核心地位,引导学生学习求解问题的思维方法,理解算法的基本思想,学会选用恰当的算法解决实际问题。因此,程序设计模块的学业水平考试不应仅仅以掌握知识的多少和熟练程度作为评价的标准,而应侧重于编程解决问题的思想与方法,下以一例来阐释。

例1:四位同学中的一位做了好事不留名,老师问这四位同学是谁做的好事。甲说:不是我。乙说:是丙做的。丙说:是丁做的。丁说:丙说谎。已知四位同学中三个人说的是真话,一个人说的是假话。

(1)如果用1、2、3、4分别表示甲、乙、丙、丁四人,用x代表做好事的人,则他们说的四句话可分别表示为:    、     、     、     。

(2)由于做好事的人x是甲、乙、丙、丁中的一个,那么用穷举法求解这个问题,可以让   从1至   逐个试,看是否满足条件          。如果用n统计说真话的人数,当n=   时(满足判断条件),x的值即为做好事的人。

试题分析:抽象是一种重要的思维方法,在程序设计的过程中,教师往往需要把一个实际问题抽象成合适的“数学模型”。完成本题,学生需要将四位同学的话抽象为数学关系式x≠1、x=3、x=4、x≠4,并在分析问题的基础上归纳出用穷举法求解问题的三个要素,即穷举对象、穷举范围和判断条件,将求解思路填充完整。这是穷举法教学的一个重点内容,试题既考查了学生对穷举算法基本思想的理解,也考查了学生对抽象思维方法的掌握情况。

● 试题的思维性与过程化

程序设计课程定位于提高学生编程解决问题的能力,其核心是问题求解的基本思想和方法,因此,程序设计模块学业水平考试的命题应该重视思维性,加强对一些基本思维方法的考查。同时,程序设计教学强调让学生经历编程解决问题的全过程,应用所学的基本思想和方法解决实际问题,因此,试题的设计要过程化,引导学生在头脑中虚拟和再现问题求解的过程,实现答题过程与问题求解过程的有效链接,下以一例来阐释。

例2:出租车收费问题。

某地出租车收费标准为:车程在3公里以内(包括3公里),统一收费12元;超过3公里但不超过10公里的(包括10公里),超过3公里的部分每公里收费2元;车程超过10公里,超过10公里的部分每公里收费3元。

现在需要编写程序实现如下功能:输入车程公里数,单击命令按钮“计算车费”,系统则计算应收车费,并输出车程和收费金额。请根据程序需求完成如下工作:

(1)分析问题,找出问题描述中的已知信息和所求内容。

(2)设车程为x公里,应收车费为y元,请根据题中信息,列出关于x和y的表达式。

(3)根据上述分析,设计算法,并加以描述。

(4)设计程序界面。

(5)根据算法编写程序,写出程序代码。

(6)总结求解这类问题的基本思想方法。

试题分析:本题首先创设了一个问题情境“出租车收费”,将一个现实问题呈现给学生,然后以这个问题的求解过程为主线,设计一系列小问题,引导学生分析问题,明确问题中各要素之间的关系,列出解决问题所需的解析式,然后设计算法、编写程序。(1)~(5)小题呈现了一个典型的用解析法求解问题的过程,学生在答题过程中自然而然地经历了求解问题的过程。第(6)小题要求学生归纳解决此类问题的基本思想方法,则是在前5道小题基础上的进一步提升,既考查了学生在具体实践基础上的总结归纳能力,又考查了学生对解析法基本思想的理解。

显然,这类问题是无法直接使用死记硬背的知识作答的,学生必须有相应的实践经验,又能够针对具体问题,灵活运用原有的知识和经验在头脑中虚拟编程解决问题的步骤,方能正确作答。同时,贴近生活的问题情境,体现了程序设计的现实应用,学生在具体情境中运用所学的知识和技能、技术与方法解决现实问题,答题过程成为问题求解过程的再现,有利于考查学生编程解决实际问题的能力。

实际考试时,如果需要节省考试时间或降低试题难度,可以选取其中的部分小题,或者如例1那样将问答题改为填空题、选择题等其他题型。又如,可以将第(5)小题转化为下面的程序填空题:

Private Sub 计算车费_Click()

Dim x As Single

Dim y As Single

x = Val(Text1.Text)

If x > 0 And x <= 3

Then     If    Then y = 12 + (x - 3) * 2

If x > 10 Then y =

If x <= 0 Then y = 0

Label1.Caption = x & "公里"参考论文

Label2.Caption =   & "元"

End Sub

● 学生的个性习惯与试题的开放性

程序设计课程要求严谨的逻辑性,但也提倡一题多解,鼓励学生用个性化的方式解决问题。因此程序设计模块学业水平考试应遵循个性化原则,以有效地解决问题为目标,赋予学生一定的自主选择权,只要能够解决问题,学生可以自由选择适合的方法。

传统的标准化试题能较好地测量学生的知识记忆情况,比较客观,但标准化试题答案统一,不利于考查学生的思维水平,特别是多向度的求异思维,甚至在某种程度上束缚了学生的个性化发展。针对这一问题,可以在学业水平考试中适当加入一些开放性和半开放性试题。

例3:求斐波那契数列前50项的值。

斐波那契数列是这样一个数列:1、1、2、3、5、8、13、21、34……这个数列的第一项和第二项为1,从第三项开始,每一项等于前两项之和。张楠想编程计算并输出该数列前50项的值,请你帮他完成如下工作:

(1)分析问题,构建解决问题所需的表达式:               。

(2)选择方法:你认为求解此问题适合选用的算法是:         。

(3)根据上述分析,设计求解问题的算法,并选择合适的方式加以描述。

(4)根据算法写出程序代码。

试题分析:斐波那契数列问题是一个经典的数学问题,有多种求解方法,学生可以根据自己的喜好和习惯,选择恰当的方法,设计算法、编写程序。本试题的答案不唯一,合理即可给分。第(1)小题只要构建出类似f1=1,f2=1,fn=fn-1+fn-2(n>=3)的表达式,能够清晰表达数列各项之间的递推关系,变量名不限;第(2)小题只要选用的算法合理,如解析法、递归法、迭代法等,都可得分;第(3)小题算法描述不限定描述方法,学生可以按照自己的习惯选用某种算法描述形式,不管是自然语言、流程图还是伪代码,只要将算法描述清楚即可;第(4)小题学生只需根据前面的算法写出正确的程序代码,至于程序结构、选用的语句等都不作统一要求。试题以问题解决为主线,从分析问题、选用方法、描述算法、编写程序,都充分尊重学生的应用和表述习惯,符合关注学生个体差异、鼓励学生创造实践的评价理念。

开放性试题,废除了所谓的标准答案,而且问题的结构不良,更加人性化,便于学生自由发挥,有利于考查学生的思维状况。但在参考答案的设置和评分时需要慎重,尽量涵盖并允许所有合理答案,评分时应本着宽容的态度,尊重学生的个性习惯,鼓励学生用不同的方式方法解决问题,只要能“自圆其说”,言之有理,即可给分。

以上是我在课题研究和命题实践中的几点思考和探索,针对程序设计模块学业水平考试命题,还有很多问题有待研究和解决,如程序设计模块考核内容的梳理、各种类型题目在试卷中应占的比例、试题质量如何评测、这类试题是否适用于选拔性考试和阶段性考核、这种命题导向会对教学产生怎样的影响、如何帮助教师和学生适应这类试题,等等,这些问题都需要我们在以后的实践中进一步探索和研究。

参考资料http://zimeitichuangzuo.com/index.php?c=show&id=5046

(0)

相关推荐