马国春,王 蕾
(杭州师范大学 理学院,浙江 杭州310036)
课堂教学是学校教学工作的基本形式,指在教师的组织和主持下,按照教学大纲和教材要求,有目的、有计划地为完成既定任务而由师生共同参加的双边教学活动.按现行的教学培养计划,校内大部分的教学以课堂教学形式开展,如何提高课堂质量是所有教师或相关人员和部门共同关心的问题.通常,课堂教学按课程教学大纲展开.建构主义教学理论是开展课堂教学较先进的主流理论之一.以建构主义为教学理论基础,课堂教学将以学生为主体,教师设计各种教学问题主导学生学习开展.此时,如何设计或选择问题将成为提高课堂教学质量的关键之一,换句话说,教学问题的设计和选择将因可以提高教学质量而体现出课堂教学价值.
不同专业,不同课程,不同师生的知识结构,如何设计或选择问题的途径、方式方法显然是不一样的.本文以信息与计算科学专业《C程序设计》基础课程为例,讨论教学问题的选择及其课堂教学价值的挖掘.
如前所述,教学问题的选择是建构主义教学理论的重要环节,其课堂教学价值在于提高教学质量.着眼于提高教学质量,我们从教学目标、教学过程、教学体系三个方面考虑如何选择教学问题.
信息与计算科学专业是一个新的数学类专业,根据教学指导规范[1],以信息技术与计算技术的数学基础为研究对象的理科类专业,培养具有良好的数学基础和数学思维能力,掌握信息与计算科学的基础理论、方法与技能,受到科学研究的训练,能解决信息技术和科学与工程计算中的实际问题的高级专门人才,将程序设计和算法语言列为专业基础课程.信息与计算科学专业的《C程序设计》课程目标是掌握程序设计思想,学会以算法的设计并将其借助于C语言实现.与其它专业中同类课程相比,本专业的《C程序设计》课程应更注重算法的设计与实现技巧,在教学过程中有意培养学生算法的设计与实现能力.
当代建构主义主张,世界是客观存在的,但是对于世界的理解和赋予意义却是由每个人自己决定的.我们是以自己的经验为基础来建构现实,或者至少说是在解释现实,每个人的经验世界是用自己的头脑创建的,由于我们的经验以及对经验的信念不同,于是我们对外部世界的理解便也迥异.课堂教学不是由教师把知识简单地传递给学生,而是由学生自己去建构知识的过程.学生不是简单被动地接收信息,而是主动地建构知识的意义,这种建构是无法由他人来代替的.同时,在帮助学生建构知识的过程中,学生的情感体验是极为重要的,教师应在此过程中培养学生对专业的认同感,这也将有助于学生专业能力的培养.我们选择问题的思路是从学生已有经验出发,按最近发展区原则[2],逐步引导学生实现知识与技能的系统化.
若将《C程序设计》课程看作一个教学体系,那么这个体系至少要有情感体系、能力体系、知识体系等.知识体系是其中的物质基础,按拓扑关系和相关程度聚类分布,情感和能力体系则是依附于知识体系螺旋式上升的.通常,教材是按知识体系布局的.如潭浩强先生编著的《C程序设计》[3],国内发行量已过千万.然而,目前几乎没有一个教材太多地考虑情感和能力体系,这就需要教师发挥更多的主观能动性,在教学中做好问题的选择工作,或者说,情感和能力体系仅依靠教材是不可能为学生构筑的,需要师生在课堂教学过程中传授和领悟.建构主义理论强调减少教师的指导成分,最终引导学生达到独立发现的水平[4],要求教师引导学生采用“学科专家”角度的思维方式,这就需要教师对学生进行情感和能力的培养.为使情感和能力的培养更显有力,选择的问题应遵循情感和能力体系的螺旋式上升规律,注重问题的环环相扣.在《C程序设计》课程中,假设可以选择这样的教学问题,随着知识的学习,若同一个问题在不同的知识点处用不同的技术求解,学生对《C程序设计》课程会产生更好的情感体验和能力培养,必然会对《C程序设计》有新的认识.
约瑟夫问题如下定义[5]:假设n个人围成一圈,并给定正整数m ≤n,指定其中一人为第1号,按顺时针依次将所有编号为1,2,…,n.从1号开始按1,…,m报数,报到m者出列,接下来从圈中按顺时针下一个人继续按1,…,m报数,报到m者出列,…,如此循环,直到最后一人出圈,由先后出圈者编号得到的排列称为1,2,…,n 的(n,m )-约瑟夫排列.例如:(7,3)的约瑟夫排列是3,6,2,7,5,1,4.
约瑟夫问题有很多特点.问题起源于犹太历史学家Josephus,本身带有一定的传奇色彩.许多约瑟夫问题的特例问题,由于具有一定的智力趣味性,甚至被吸收进小学生数学竞赛教材中,以至大部分学生对约瑟夫问题有似曾相识的感觉,便于使问题快速进入学生的最近发展区.同时可以使用《C程序设计》中许多技术可用于问题的求解,从而使得约瑟夫问题的求解,甚至可以成为C知识体系的支架,同时也迎合本文第2节中所述的各个出发点.
这里所说的教学过程不是在一个或几个课时内完成的,而是将一个课程的全程教学看作实施过程,随着知识体系的构建、教学内容的深入逐步展开.
数组是C程序设计的重要内容,是用于和实现顺序存储的技术手段.在知识体系上,要求学生掌握数组是将相同元素存储于一片连续的静态内存空间中,特点是顺序性.借助于数组和模运算,将通过环的数据结构模拟约瑟夫问题,在情感和能力体系上帮助学生体验和构建如何利用数学手段解决实际问题和途径.C程序代码如下:
函数是实现C程序模块的设计手段,实现软件团队开发的基础.利用函数可以缩短主程序,进而使代码更易懂和重用.在知识体系上构建参数传递、共享技术,在情感和能力上培养学生分工协作,逐步细化的设计开发思想.有了3.1的基础,利用顺序存储手段,实现约瑟夫问题已顺理成章.C程序代码如下:
指针也是C程序设计的精华之一,借助指针实现链式存储是C程序设计中与顺序存储并重的技术手段.通过与3.2的顺序存储比较,在知识、能力、情感体系上构建使用内存管理思想,并通过比较体验两种不同存储方式的算法实现异同.C程序代码如下:
递归实现是C程序设计又一重要手段.与非递归编程技术应用相比,递归在解困难问题上往往能出奇制胜,在能力和情感体系上是帮助学生体验计算机的栈结构.
C程序代码如下:
同样利用约瑟夫问题为教学研究对象,还可以借以学习C程序知识体系中的文件、结构体等知识点.可见,约瑟夫问题几乎串联了《C程序设计》的所有知识点,说其是学习C程序设计课程的支架也不为过.
建构主义教学理论作为教学实践的指导,指导我们如何选择教学问题,如何组织教学,如何组织教学评价.相对于情感和能力体系,知识,也可以认为是技术,本身的传授是必须的,同时借助知识学习的过程,可以不断让学生体会逻辑结构决定算法的设计,存储结构决定算法的实现.
回到教学的本源,知识、能力、情感体系的构筑不见得只有一条途径,类似约瑟夫问题可以串联知识体系的教学问题还有很多,而且好的教学问题选择可以加快学习的过程,并有机地构筑知识、情感、能力体系,从而提高教学质量,此为教学问题的教学价值.
[1]教育部数学与统计学教学指导委员会.信息与计算科学专业教学规范[J].大学数学,2003,19(1):6-10.
[2]张春兴.教育心理学(第1版)[M].杭州:浙江教育出版社,1998.
[3]谭浩强.C程序设计(第4版)[M].北京:清华大学出版社,2010.
[4]刘瑜,李瑛,韩秋枫.建构主义理论在培养学生计算思维中的应用研究[J].计算机工程与科学,2014,36(A1):241-243.
[5]Thomas H C,Charles E L,Ronald L,et al.Introduction to algorithms(second edition)[M].MIT Press and McGraw-Hill,2001.