基于建构主义的程序设计教学实例设计

时间:2022-07-08 10:31:44

基于建构主义的程序设计教学实例设计

摘要:在程序设计教学中,实例设计的优劣影响整个程序设计的教学效果。本文以VB程序设计教学为例,提出一种基于建构主义学习理论、融合情境创设教学理念的实例设计方法。使用生活中真实熟悉的软件实例,从整体上由浅入深渐进式把握程序设计的教学。教研组多次教学实践证明,使用该方法设计实例进行教学,易于激发学生的学习兴趣和探究欲望,利于学生的主动意义建构。

关键词:建构主义;程序设计教学;实例设计;意义建构

1 研究背景

在程序设计教学中,为了帮助学生理解某个知识点的内容,教师通常会针对知识点设计一些实例,中间不乏一些经典实用的好例。但是,很多时候教师设计用例只是为了让学生理解知识点而已,与上下文知识点没有联系,割裂了程序设计课程内在的逻辑性和整体性,不利于学生的主动意义建构。甚至有些用例只是为了举例而举例,完全脱离实际生活,让学生感觉程序设计这门课程没有实际意义,逐渐丧失学习兴趣。实例设计的优劣影响整个程序设计的教学效果。如何科学地进行教学实例的设计,是本文研究的内容。笔者根据多年的程序设计教学经验和教学研究,在建构主义教学观的指导下,提出一种基于建构主义学习理论、融合情境创设教学理念的实例设计方法。下面以Visual Basic程序设计为例,讲述程序设计教学中的实例设计方法。

2 基于建构主义教学观的实例设计方法

建构主义(constructivism)认为,知识不是通过教师传授得到,而是学习者在一定的情境即社会文化背景下,借助其他人(包括教师和学习伙伴)的帮助,利用必要的学习资料,通过意义建构的方式而获得。在建构主义学习环境下,教学设计不仅要考虑教学目标分析,还要考虑有利于学习者建构意义的情境的创设问题,并把情境创设看做是教学设计的最重要内容之一。由于建构主义强调学习的主动性、社会性和情境性,因此建构主义对学习和教学提出了许多新的见解,内容如下:

第一,建构主义教学要求学生在复杂的真实情境中完成任务;教学应使学习在与现实情境相类似的情境中发生,以解决学生在现实生活中遇到的问题为目标。

第二,在教学过程中,学习内容要选择真实性的任务,在课堂上展示出与现实中专家解决问题相类似的探索过程,提供解决问题的原型,并指导学生的探索。

第三,在教学进程的设计上,建构主义者提出要呈现整体性的任务,让学生尝试进行问题的解决。在此过程中,学生要自己发现完成整体任务所需完成的子任务,以及完成各级任务所需的各级知识技能。

程序设计是一门整体性和逻辑性很强的课程,实例的设计要注重这一特征,设计的实例要体现这一特征。光靠知识点设计实例帮助学生理解远远不够,应该从整体上引导学生主动系统地建构知识。建构主义学习理论认为,意义建构是学习的目的,它要靠学生

自觉、主动去完成,教师和外界环境的作用都是为了帮助和促进学生的意义建构。因此,为了使教学实例设计得更科学,更符合学生的认知规律,教学设计需要在建构主义教学观的指导下进行。笔者提出的这种基于建构主义的实例设计方法,注重课程内在的逻辑性和整体性,使用生活中真实熟悉的软件实例,从整体上由浅入深渐进式把握程序设计的教学。通过少数几个软件实例,将多个上下文知识点串成一个整体,并系统地讲述。每一章节对应软件实例的某个(些)功能部分,每个部分又是独立的小实例。程序设计课程教学之初,教师就把该课程教学的综合实例展示给学生,从而激发学生的学习兴趣和探究欲望。

使用这种综合实例教学,脉络清晰,系统完整,不但可以帮助教师实施整体教学,也利于学生主动意义建构,加强逻辑思维训练,并提高解决实际问题的能力。当然,这种实例设计并不排除列举一些好的小例,针对具体某个知识点讲解。在实际的教学中,教师可以灵活地运用两种方式,以综合软件实例设计为主,以知识点设计小例为辅。基于建构主义的实例的设计方法包括两步:实例的选取和实例的分解。

2.1 实例的选取

程序设计的教学希望能够达到两个基本的目的:第一,帮助学习者理解计算机软件背后的奥妙;第二,培养学习者基本的程序设计能力。计算机文化素质教育要求学生不光要学会使用常用的基本软件,还要理解这些软件背后的基本实现原理。如今,计算机的应用已经深入到社会的各个领域,使用者通过计算机软件操作计算机,让计算机为自己服务,而计算机软件是通过计算机语言编写的。因此,在计算机语言程序设计的教学中,选取常见软件实例进行教学,可以达到上述两个目的。基于建构主义学习环境的教学实例的选取,要考虑到以下几个因素:现实性、学生感兴趣的程度、覆盖知识面的范围和难易程度。

1)现实性原则是软件实例选取的一个重要原则。建构主义环境下的教学实例设计要注意结合学生实际,贴近学生生活,教师要将现实生活中发生的与课堂教学有关的素材引入课堂,以此拉近程序设计和生活的距离,培养学生“处处皆学问”的意识。同时让学生感觉到学习程序设计可以解决实实在在的问题,学习的东西很有用,教师不再是为了举例而举例,学生不再是为了学习而学习。

2)选取的实例要是学生感兴趣的,乐于学习的。爱因斯坦说:“兴趣是最好的老师。”学生对所学内容感兴趣,积极性就会明显提高,才能乐于接受,此所谓“好之者不如乐之者”。“人以物思,辞以情发”。情从何来?乐从何生?这就要求在教学过程中,教师为学生学习创设的实例能够激发学生的学习兴趣,激起学生探究的欲望。

3)选取的实例覆盖知识面的范围要广。一门课程只需精选少数几个软件实例,就可以覆盖整个课程绝大部分的知识面和重难点,这样能帮助学生从整体上系统全面、逻辑清晰地把握程序设计,自然而然地将上下文知识点主动联系起来,进行意义构建。

4)在选取软件实例时,需要根据学生已有的认知结构选取难易适中的实例。任何学习都要涉及到学习者原有的认知结构,即学习是以学习者自己的经验为背景,对外部信息进行主动的选择、加工和处理,从而获得自己的意义。教师进行教学实例设计时,应关注学生原有的认知结构。选择的实例既要有一定的难度,又要学生经过努力可以解决,这样的问题是引起学生探究,激发学生思维的主要条件。太易不能激发学生探究的兴趣,太难又会使学生感到力不从心,不知从何下手,因而可能会失去探究的学习兴趣。

考虑到上述因素,本文例举了两个软件实例:字处理软件和网络聊天工具。

Microsoft Office Word是常用的字处理软件,在人们的工作和生活中扮演着重要的角色,也是计算机初学者需要学习的软件之一。QQ聊天程序也是人们上网聊天时常用的工具。这两个软件是学生经常接触和使用的软件,熟悉、真实,来源于生活,软件实现覆盖的知识面广。更重要的是,通过这几年的实践教学,我们发现学生对两个软件背后实现的奥秘饶有兴 致,乐于探究。当然,以软件Word和网络聊天工具QQ作为教学实例,涉及的内容太多,在程序设计教学时,教师可以根据具体教学任务灵活选取几个基本的功能模块,一步一步帮助学生揭开软件背后的奥秘。这样不仅可以帮助学生深刻地理解软件,从而更好地使用软件,同时潜移默化地培养了学生的程序设计能力,提高其计算机文化素养。

2.2 实例的分解

传统的教学,学生通常选择缺乏“认知冲突”的学习道路,也就是说学生倾向于选择对他们没有难度的任务。而在建构主义教学中,学生需要面对体现认知复杂性的真实世界的情境,学生要在复杂的真实情境中完成任务,这对他们无疑是个挑战。对没有任何编程经验的学生而言,要去实现这两个软件的某些功能模块,是非常困难的。面对这样一个硬骨头,怎么啃下来呢?由于程序设计的学习是一个循序渐进的过程,软件实例的实现过程也可以循序渐进,因此按照教学进度对实例进行合理的分解、简化,可以解决这个问题。实例的分解采取两种方式:一是横向分解;二是纵向分解。

1)横向分解是不断地增加新的功能实现。

针对Word软件,我们可以选取如文本的编辑排版和查找/替换等常用功能进行横向分解。譬如在学习了命令按钮控件、文本框控件的基本知识后,就可以设计并实现如图1所示的“我的文本编辑器”。Word主要是通过菜单和工具栏提供操作命令的,然而目前我们还没有学习菜单和工具栏的知识,就可以先使用命令按钮组建工具栏;现阶段还不能实现的功能就以灰色显示,禁止使用。随着学习的推移,在学习了相关的知识技术点后,一步一步实现查找、替换、新建、保存、字体等新功能。在学习了菜单、工具栏、RichTextBox控件和MDI应用程序设计等相关知识和技术后,我们可以设计与Word环境类似的“我的文本编辑器”,如图2所示。当学习和掌握的知识技术越来越丰富后,我们就可以把“我的文本编辑器”的功能逐渐完善,慢慢地使其接近任务目标。

我们选择软件实例进行教授的初衷,并不是一开始就要求学生完全独立地实现这个任务。而是通过教师对教学进度的安排,借助这个实例的实现,帮助学生理解这个软件,从整体上系统地把握程序设计,帮助学生主动意义建构,加强学生的逻辑思维训练,从而潜移默化地培养学生的程序设计能力。随着学习能力和程序设计能力的提高,学生通常会主动探究该软件其他一些功能模块的实现方法,从而逐渐达到教学的真正目的。

2)纵向分解是不断地用所学的新技术实现同一功能,一步一步完善该功能。

下面针对QQ程序注册与登录这一个功能进行纵向分解,将复杂的QQ程序注册与登录功能由易而难地分解成以下几个小例来实现。

例1:模仿QQ网络聊天程序设计“MyQQ”聊天程序的用户登录与注册界面。

例2:模仿QQ网络聊天程序,利用简单变量实现本地一个用户注册与登录。

例3:模仿QQ网络聊天程序,利用数组实现本地多个用户注册与登录。

例4:模仿QQ网络聊天程序,利用文件在本地实现用户注册与登录。

例5:模仿QQ网络聊天程序,利用数据库技术在本地实现用户注册与登录。

例6:模仿QQ网络聊天程序,利用网络和数据库相关技术实现网络注册与登录。

随着教学的循序渐进,在学习了标签、文本框和命令按钮几个常用的控件后,学生就可以设计出例1这样的界面。在学习了简单变量和if语句的基本知识后,学生就可以轻松实现例2。在例2中,用户注册的用户名和密码只是使用两个简单变量保存起来,因此一次只能注册一个用户。在学习了数组后,学生就可以使用数组轻松实现例3,实现多个用户注册。在例2和例3中,注册的用户信息没有永久保存,因此当程序运行结束后,变量或数组的内容不复存在,以致下一次运行该程序时,还得重新注册用户名和密码才能登录。在学习了VB文件的访问后,我们可以将用户注册的信息保存到文件中,这样就在例4完善了例2和例3的不足。但是利用文件存取用户信息的安全性能不高,而且存在数据的独立性差、冗余度大、一致性差等问题。由于数据库系统提供数据安全性、完整性、并发控制和恢复功能,在学习了数据库相关知识后,我们就可以利用数据库文件保存用户注册信息,完善了例4的不足,这就是例5。例1至例5都是在本地实现用户的注册和登录,本地两个用户进行聊天并没有实际的意义,真正意义上的聊天是通过网络进行的。随着教学的进行,在学习网络编程和Winsock控件后,我们就可以实现例6了,并且可以利用Winsock控件来编写网络聊天的程序,具体实现可参考文献[6]。同时可以布置实验作业“利用Winsock控件实现迷你聊天室”,具体实现可以参考文献[7]。实验课是理论课程教学的延续,我们让学生在实验课堂完成软件实例相关的功能部分,从而推动实验课程设置改革。

上述两个实例是基于文献[7]的教学进度进行分解的。教师可根据使用教材的具体情况,灵活地结合这两种实例分解方式,合理地将实例简化、拆分,由简单到复杂,逐步丰富和完善实例的功能,最终达到我们的教学目的。

3 结语

建构主义教学的目的是培养新世纪善于学习的终生学习者。笔者基于建构主义教学观,提出一种融合了建构主义、情境创设教学理念的实例设计方法,在程序设计教学中使用贴近学生生活的真实熟悉的软件实例,从整体上由浅入深渐进式地把握程序设计的教学,不断地引出认知冲突,从而激发学生的探究欲望,提高学生的学习兴趣。在后续的学习过程中不断地解决冲突,帮助学生主动意义建构。在不断丰富和完善实例,使其一步一步接近真实的过程中,学生不仅锻炼了逻辑思维,程序设计能力也在潜移默化中提高,同时获得了强大的成就感,更加坚定学习意愿。更重要的是,这种建构主义的探索学习方式有利于培养学生成为一个善于学习、善于思考和善于解决问题的。

参考文献:

[1]Jonassen D,Davidsoo M,Collins M,et al,Constructivism and Computer-mediated Communication in Distance Education[J].The American Journal 0f Di stance Education,1995,9(2):7-26.

[2]黄玲玲,阳小华.程序设计教学中的情境创设[J].计算机教育,2007(1 5):34-36.

[3]何克抗,建构主义:革新传统教学的理论基础(上)[J].电化教育研究,1997(3):3-9.

[4]何克抗.建构主义:革新传统教学的理论基础(中)[J].电化教育研究,1997(4):25-27.

[5]阳小华,李海燕.大学Visual Basic程序设计基础[M],北京:北京邮电大学出版社,2010.

[6]黄玲玲,杨剀,王颖.在VB中使用Winsock控件实现局域网通信[J].信息技术,2005(6):24-26.

[7]阳小华,王颖.大学Visual Basic程序设计实验教程[M].北京:北京邮电大学出版社,2010.

上一篇:导师团队的研究生培养模式 下一篇:应用型本科计算机专业实践教学体系的构建与实...