大学编程语言课实例教学探讨

时间:2022-07-16 08:44:40

大学编程语言课实例教学探讨

文章编号:1672-5913(2009)08-0072-03

摘要:本文以“C++程序设计”课程为对象,探讨了大学编程语言课的实例教学方法,进行了C++程序实例设计,并提出构建一个基于Web的程序实例自学系统,弥补了课堂教学实例数量不足的问题,同时在系统中提供了自适应实例学习控制策略作为学生实例学习的指导。

关键词:实例教学;实例设计;自适应;实例学习策略

中图分类号:G642

文献标识码:B

1引言

在编程语言课的教学中,程序实例具有非常重要的意义。好的实例设计有助于学生对内容的理解;大量实例的累积可以达到量变到质变的作用,使学生从看懂到领悟。在教学过程中,实例的选择和对学生实例学习的指导都将对编程语言课的学习有很大帮助。本文以“C++程序设计”课程为例探讨了实例教学方法。首先确定基于实例教学的总的思想和方法,然后重点探讨实例的设计和一个基于Web的自适应实例自学系统。

2基于实例的教学

C++课程基于实例的教学从两方面入手。其一为教学中恰当的实例选择运用;其二为课余时大量的实例提供与自学指导。具体包括:

(1) 实例运用上注意实例的连贯性,若知识点相关,则采用同一系列实例进行扩展,即题目内容相近,但针对不同知识点做局部改变扩展,使能快速理解实例,并专注于教学点。

(2) 适当采用实例的归纳、对比、类比等方法。如穷举法,通过多种实例类比,说明什么问题可以用穷举法解决;又如面向对象程序架构与程序设计思想,通过对同一问题进行结构化设计和面向对象设计的对比。

(3) 伴随教学进度分解一个复杂的综合实例,逐步讲解程序设计方法思想。采用问题引导的方法,由综合实例的某个步骤提出问题,引出新知识点,改进程序,层次推进至最终完成问题。

(4) 每讲完一次课程后,为学生总结本次课程的语法知识点和程序设计思想。提示下堂课将会涉及的前序知识点,以及与下堂课有直接关系的前序实例,并提出预备问题。布置与课堂实例的算法相似的程序作业,学生能通过知识的直接迁移来完成作业。

(5) 要求学生在课余根据相应知识点通过实例自学系统学习并练习相应实例来达到进一步的练习和提高,系统会根据学生在实例库中的学习情况进行相应的控制指导。

3C++程序实例设计

程序实例的设计是实例教学的重点,通过对领域知识点的分析总结,有针对性的进行实例设计。同时实例之间并不是孤立的,有意识的设计了有联系的各种实例组,形成系统的全面的实例库。

3.1领域知识点总结

对于“C++程序设计”课程,领域知识点涉及两个方面,其一为C++语法理解与应用,其二为如何应用程序设计思想解决实际问题。

首先从语法角度开始,每个语法考察点都是一个领域知识点。如:各种基本数据类型的长度、文字常量表示、符号常量表示、变量定义和类型转换等。

从程序设计角度讲,程序设计相关理论方法技巧都是一个领域知识点。程序设计思想涉及递归、迭代、穷举和分治等。程序设计方法与技巧包括数据设计、算法设计和程序架构设计。数据设计包括简单数据设计、数组数据结构应用和结构体应用等;算法设计包括分支算法、循环算法、循环嵌套和循环与条件语句的嵌套等多种程序设计技巧;程序架构设计包括函数设计和程序架构组织。面向对象程序设计思想包括类的抽取与设计(属性设计、方法设计、构造方法设计、访问控制设计)、应用类属性与类方法解决问题,应用类的聚合解决相应问题和应用类间的消息连接解决相应问题等。

3.2基于领域知识点的实例设计

将C++程序实例分为三个层次:

(1) 纯语法实例:用于演示基本语法,可以没有实际含义;

(2) 算法实例:有一定实际意义的算法思想实例,用于演示程序设计思想和方法技巧;

(3) 综合实例:需要多个知识点的综合设计实例,重点演示解决问题的思维方式和程序架构。

纯语法实例设计中,为每个语法知识点都设计若干相应的语法实例程序,一个实例会涉及多个语法知识点,但会有重点演示的语法知识点。将设计好的程序进行题目设计,通过总结学生作业、考试中的问题,找出相应语法容易出错的形式,设计了相应的问题形式,如读程序写结果,程序填空,错误辨析等。

算法实例一般都是解决实际问题的题目,针对每个程序设计方法知识点设计算法实例。每个实例涉及一个或多个重点演示的设计知识点。如鸡兔同笼问题,水仙花数问题应用的是双重循环技巧,也是穷举设计思想。

综合实例都是有一定意义的较复杂的实际问题,如我们设计的学生成绩分析系统,模拟停车场辅助系统,模拟选课系统等。综合实例只给出问题描述,而不是具体要求设计哪些类,哪些函数,锻炼学生对复杂问题的整体分析设计能力。每个实例都尽量将多个知识点应用进来。如学生成绩分析系统涉及类、对象、类的组合、模板、排序算法、文件操作和运算符重载等。模拟停车场系统也涉及类对象、继承、多态、类的组合、数组和搜索算法等。并且将每个综合实例分解为若干阶段,多个子问题,随着教学进度不断扩展引入新问题,通过不断修改程序来解决新的问题。

3.3实例的组织

在实例设计中,每个知识点都设计若干个实例。除了针对知识点外,还根据知识点之间的相关关系,递进关系,有意识的设计有各种联系的实例,创建多种形式的实例组。如:类比实例组(题目不同,算法相同);对比实例组(题目相同,算法不同);扩展实例组(基于知识点的递进关系,不断扩展的系列实例)等。

4基于Web的自适应实例自学系统

课余时大量的实例提供与自学指导是实例教学设计的一个重点。如何能达到这个目的,我们探讨了一个基于Web的实例自学系统,根据目标知识点,教学进度,实例的难易程度,实例之间的关联,以及学生的学习情况为学生选择实例,指导学生对实例的学习。

实例学习的指导策略为:由语法到算法,由易到难;根据学习情况优先选择扩展实例,若当前实例不理解则选择类比实例,若还不理解选择前序知识点实例,若实例理解选择知识点的其他实例,适当选择对比实例,达到一定程度增加难度;追踪一个综合实例。保证选择的任何实例都不含未学习的知识点。

4.1创建程序实例库

实例库不是实例的简单集合,为了与教学顺序和教学目标配合,并且在学生进行实例学时时提供相应的控制,需要设计实例库的组织形式。

首先保存设计好的所有实例。三种程序实例需要处理的内容不同,故分别构建语法实例表(实例编号,题目描述,题目内容,问题讲解,难度等级)、算法实例表(实例编号,题目描述,分析,程序,讲解,难度等级)、综合实例表(实例编号,题目描述,实例分解步骤)以及综合实例步骤表(实例编号,步骤编号,问题描述,程序,讲解,难度等级)。

保存总结出来的领域知识点。由语法知识点表(知识点编号,标题,语法描述)和设计方法知识点表(知识点编号,标题,算法思想描述)描述。

构造实例与领域知识点之间的关系。每个实例都涉及一个或多个语法知识点,语法实例一般会有一个(或多个)主语法知识点,算法实例与综合实例的分步实例会有一个(或多个)主设计知识点。建立实例与知识点之间的关系表(实例类型,实例编号,相关知识点编号,相关知识点类型,是否主知识点),标识出实例涉及的所有语法知识点,并标出语法实例的主语法知识点,和其他实例的主设计知识点。表结构为。

建立实例之间的关系。由实例关系表(关系类型,关系编号,实例编号,备注)构建不同的实例组。

一般教学领域知识点间有固定的前序关系。但程序实例之间却没有先序关系,每个实例都是独立的。但一个实例一般会涉及多个语法知识点,虽然许多语法之间是没有先序关系的,但教学进度却使这些知识点有了先序关系。故实例使用的先后顺序与教学顺序有关。为了能正确的提供学生适宜的实例,除尽量提供一些仅涉及当前知识点的实例外,还要将每个实例涉及的知识点都详细指出,同时构建教学进度表,在学生自主学习过程中屏蔽没学过内容的相关知识点。教学进度表将相应的学习目标知识点表的知识点按教学进度标识出顺序关系,可直接在教学目标相关的两个表中增加一个字段标识顺序号。

4.2学生信息库

课程的每个学生都是系统允许的用户,为每个学生提供学习状况记录,这里称为学生模型。学生模型由三个表组成,分别记录学生的能力程度、学习过程和学生当前追踪的综合实例及当前步骤。根据学生的学习过程情况浮动学生的能力值。学习过程记录所学的实例编号,实例类型,实例难度等级,实例关系编号,学习状况。学习能力程度记录当前的能力,用一个0~100之间的数表示。

4.3自适应学习控制策略

学生学习过程中,若让学生随意选择实例学习,那么众多的实例会使学生无所适从,故系统设计了自适应学习控制策略,其结合教学顺序,教学目标,实例难度,实例关系,并根据学生的学习状况提供适于学生的实例建议。其控制流程如图1所示。根据学生模型选中恰当实例,学生学习一个实例时,学习完后由学生选择对实例的学习情况:不理解,理解,能编程。记录学生模型,从新计算学生能力值,然后根据学生能力和学生在当前实例的学习情况,根据约定的策略推荐下个实例(屏蔽掉当前不适于学习的实例)。

图1 自适应学习控制流程

(1) 实例选择策略。

将学生能力分为5个等级,分别为(bad,lower,low,middle,high)。若学生能力为lower则选择语法实例,否则进入算法实例与综合实例;若学生能力为low,则选择初级实例;若学生能力为middle,则选择中级实例;若学生能力为hign,则选择高级实例;若学生能力为bad,则回溯。回溯方法为查看当前所有不理解的实例,根据实例包含的知识点,找出使用最多的知识点,选择其教学实例,若有与本实例呈系列的实例优先选择。

若学生当前实例学习状况为不理解,且能力没降级,则选择类比实例,若能力降级则选择低一级难度实例。若当前学习状态为理解,则选择类比实例(并专注设计程序),若能力升级也可选择高一级实例。若学习状态为会编程,且能力没升级,则进入其他实例,否则提供更高一级实例。

(2) 学生能力计算。

学习过程中,初次进入系统学习能力程度设为50,每学习一个实例,若状况为不理解则能力程度降低,若为理解则能程度上升,若为可编程则上升幅度更大,能力程度升降分值具体如表1所示。依据量变到质变的原理,能力值累积到一定程度,在学生的能力进入新的等级。学习能力值与能力等级的关系通过一个映射关系描述:

系统当然也允许学生自主控制策略选择。尤其在课程学完进行总复习的时候。提供了多种查询方式。如查询包含某知识点的所有实例。可以按步骤查看综合实例,按系列查看相关实例等。

5结束语

在编程语言课教学中很多学生反映,课堂上的有些例子来不及细想就过去了,有些内容仅用了一个例子讲解印象不够深刻,多数学生表示希望多看一些实例,只是没有来源,也有些学生看了很多参考书的实例,但反映还是不懂或不会编程序。程序实例自学系统的形式可以提供大量实例,并指导学生慢慢体会,逐步深入。在有限的学时下,课堂教学实例需要精心设计,同时要提供大量实例供学生课下自学,本文正是针对此问题探讨的解决方法。

参考文献:

[1] Yuji Yoneyamaa,Kotaro Matsushitab,Kenneth J. Mackinb, et al. Puzzle Based Programming Learning Support System with Learning History Management[A]. 16th International Conference on Computers in Education[C],2008, 623-627.

[2] 程静,杨明,邱玉辉. 基于知识点对象的个性化学习系统实施[J]. 西南师范大学学报,自然科学版,2006,31(5):120-123.

[3] 刘伟,付璐,余英良. 个性化CAI中教学策略的设计与实现[J]. 河南科技大学学报,自然科学版,2007,28(2):44-49.

[4] Natalia Stash,Alexandra Cristea,Paul De Bra. Learning Styles Adaptation Language for Adaptive Hypermedia[A]. AH 2006[C],2006.323-327.

Discussion about Example Teaching for Programming Language Course

ZHANG Jing-hua

(School of Computer Science of Technology, North China Electric Power University, Baoding, 071003, China)

Abstract: This paper based on C++ Program design course, discussed the example teaching method for programming language course, gave the program example design method and designed a web based program example self-learning system, which remedied the shortage of example in classroom teaching, and instructed the students studying examples on the system by providing a adaptive learning control strategy.

Key words:example teaching; example design; adaptive; example learning strategy

上一篇:论信息素养视角下的计算机基础教育改革 下一篇:基于虚拟现实的三维产品展示