《初级编程大学生学习方法研究_牟连佳李丕贤邵洪艳.pdf》由会员分享,可在线阅读,更多相关《初级编程大学生学习方法研究_牟连佳李丕贤邵洪艳.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、初级编程大学生学习方法研究牟连佳李丕贤邵洪艳【摘要】本文分析了低年级大学生初级编程学习经验,尤其注重揭示他们在编程学习方法方面的差异。分析结果表明学生可能会采用遵循、编写代码、理解与综合、解决问题、参与或文化需要等五种不同方法之一来从事编程学习。根据上述讨论,提出本研究结果对教学与学习的五点启示。【关 键 词】初级编程学习方法现象描述分析法学习体验高等教育【收稿日期】年月【作者简介】牟连佳、李丕贤,大连大学信息工程学院副教授;邵洪艳,大连大学信息工程学院讲师。一、引言本研究根据建构主义学习理论来研究编程的教学与实践,力求阐明大学生学习编程的初期经验的差异,重点集中在学习初级编程单元的学习方法上
2、。同时,本研究还涉及一个鲜为探索的领域,那就是学习编程入门课程的大学生是如何理解编程学习的。本研究的对象是初期编程学习者的行为构成方式,这就决定了本研究属于现象描述分析法研究的范畴。本研究所采用的方法是建立在揭示学生体验编程学习方法差异的基础之上的,因此,本研究提供了概念上的范例,提供了对编程学习者的深刻理解,以便在具体的句法教学中能以此为基础对编程教学做出决定。本文的分析过程旨在找到能描述体验编程学习行为的各种方法。为达到这个目标,整个分析过程以如何描述学习行为与对学习结果的逐步认知为指引。因此,本研究分析了学习体验的一个方面,即学习行为或学习方法。二、编程学习方法的体验方式通过分类别描述学
3、习者的各种编程学习方法的体验方式,以及描述各种不同体验方式之间关系的结果空间,来呈现研究结果。结果空间。结果空间如图所示,它揭示了对不同学习类别相关联的逐步深入的认识过程。每个学习类别中的元素也包含在结果空间中,同时也是该类别中重点关注的元素。不同学习类别的描述。图所列示的不同描述类别,分别陈述如下:图各种编程学习方法的体验方式及相互关系类别:以“遵循”方式学习。在此类中,编程学习行为是遵循规定的各个单元结构,以便“完成课本单元”。以这种方式进行编程学习时,学生的初衷是跟上规定的作业,他们会重点关注能得分的作业,时间是决定学生能否成功完成单元课程的主要因素。这类学生受到课程结构和教学内容编排方
4、式的影响很大。例如,如果教学内容编排方式不符合他们的期望和自我感觉的要求,他们就会有挫败感。学习方法、学习活动与学习动机:这类学生认为完成作业非常重要。他们从教学人员或是从其他教学体系(如网上评分系统)寻求反馈,来查看他们是否正确。学习的潜在动机是为了完成单元的学习。单元课程的结构尤其影响学生努力完成作业的积极性。理解编程和程序的方式:这类学生对于编程的理解是为了完成作业以便通过该单元测试,编写程序的行为不涉及更广的语境,而是为了在该单元中得到分数。学生会满足于编写能够得分的程序。关于学习编程语言:在本类别中,尚不清楚学生是如何理解编程语言学习的。学生的学习重点或内部视野:这类学生同时也关注作
5、业、反馈和单元的结构。学生重点关注的是试图通过完成规定的作业来完成该单元学习。单元的结构在学生编程学习的方法中起到重要的作用,学生以这种方式来感知自己的编程学习能力。学生的感知界限或外部视野:在该类中,编程学习是在学习机构范围之内的行为。获得分数、完成作业花费的时间和来自教师方面的反馈等,是学生学习编程的全部内容。类别:只是为了学习“编写代码”。在本类中,编程学习行为就是学习编写代码。这类学生视学习编程语言的句法为编程学习的核心,认为自己需要学习编码以便编程。这将导致死记硬背。如同在类别中,时间是一个重要因素,因为需要学习和实践一定量的句法,以便通过课程。这可能会产生挫败感。这类学生也许会对具
6、体的解决方案指导和编码实例方面有更多的要求。他们认为花费时间去探索概念和发现自己的解决方案是浪费时间。学习方法、学习活动与学习动机:这类学生寻找代码片段进行尝试,但有时觉得是在浪费时间。他们在课本、网上或其它渠道寻找实例。他们可能会采用“尝试与错误法”来输入代码、向“高手”寻求代码输入并期待教师的指导。如果缺乏这种指导,他们就会对课程表现出很大的不满。由于自身需求的激励,坚持不懈地学习编程语言的句法,在电脑前一坐就是几个小时,是这类学生的特点。编程单元及其学科评估的要求可能会导致高度挫败感,也可能影响他们继续学习的动机。理解编程和程序的方式:这类学生把编程理解成编写代码的能力,其包含了具体的句
7、法。换句话说,学生知道的代码越多,编程能力就越强。对这些学生来说,编程是亲身实践的作业,需要在电脑前面花费大量时间。关于学习编程语言:在此类中,学习编程语言就是学习句法。以这种方式认知学习编程语言,会影响到学习活动和使用的方法。学生的关注重点或内部视野:这类学生同时关注句法和编码作业,为了练习编码长时间面对电脑,因此其关注力往往倾向于电脑本身。学生的感知界限或外部视野:学习“编写代码”是在编程语言领域内的行为。他们很显然意识不到程序自身或该编程领域的更广泛的语境。类别:为“理解与综合”而学习。本类学生认为,编程学习就是通过对相关概念的理解与综合来编写程序。他们会认为理解是学习不可或分的环节,并
8、寻求从“大局”出发来理解课程作业中自己所承担的那一小部分作业。学生不仅仅输入代码并检验是否有效,而且还努力理解其所做的一切,以便影响某个特定结果。学生会把编程学习看作是建立一连串概念的初期体验,他们会努力理解一个概念,然后转向下一个概念。由于他们认为通过课程学习取得进步更重要,于是常常在没有理解的情况下还是要继续坚持努力理解。学习方法、学习活动与学习动机:这类学生可能会参加一些学习活动或采用一些学习方法来帮助自己理解那些需要掌握的概念。可以用“搭积木”来形容他们理解概念的方式和进行程序编写的方法。以这种方式来理解编程学习时,学习活动与学习方法上的差异也是很明显的,学生可能会采用不同的方法来理解
9、相同的概念。因此实验也是学习的一部分,用以综合早先的体验和理解。学生会寻求不同的渠道来阐述概念,如利用可视化工具来提高他们的理解。一些学生把重点放在理解上,并将其视为编程学习的根本组成部分,他们可能会觉得编写代码或采用“尝试与错误法”是他们达到所期待的理解的唯一途径。然而,他们关注的并非代码本身,而是作为理解手段的代码编写过程。随着学习时间的推移,学生也会意识到自己学习上的变化,当对代码的使用变得更加得心应手时,他们关注的重点就会从代码转到理解方面。这类学生其动力来自于他们对知识深入理解的渴望。他们学习的目标在于理解,而不仅仅是完成单元要求中的作业。也就是说,他们意识到了更广范畴的存在,或者有
10、着比简单完成单元要求更高远的目标,正是这些影响了他们的学习动机。当他们的理解跟不上课程的进度时,挫败感就会由此产生。如果教学内容没能提供综述或没有按照他们对编程学习理解为一系列概念的学习初级编程大学生学习方法研究(综合)的方式来编排,学生同样会有挫败感。理解编程和程序的方式:这类学生认为程序是由句法、代码和概念以不同的整合方式组合而成。能编程意味着能以不同方式应用概念,能在新的语境中使用过去所学的东西,以及能理解和编写与程序相关的广泛规则。关于学习编程语言:这类学生认为学习编程语言就是学习其结构和逻辑 本质上说,也就是理解编程语言是如何运作的。编程语言提供了一种表达编程概念的方式。学生的关注重
11、点或内部视野:这类学生同步关注作业和概念理解。对能够用于编程的相关概念的理解是这个类别学生关注的重点。他们通过完成作业获得理解来实现这一目标 包括那些被列为教程一部分的作业,以及学生们自己找出的其他作业。与类别所阐明的“自己胡乱摸索”不同,这类学生用“获得深入理解”来描述体验编程的学习。学生的感知界限或外部视野:此类编程学习行为属于程序及构成程序的概念范畴。感知界限并不局限在当前所学的语言,或是某一单个的程序,而是更广意义上的程序和编程概念。从这个意义上说,学生可能会运用“普遍”的概念或规则,来深刻认识他们过去从编程体验中学到的技术、概念和策略,并能运用到现在的学习中。类别:为“解决问题”而学
12、。本类学生认为编程学习就是学习怎么做才能将问题解决。当以这种方式进行编程学习时,学生以一个问题开始,并发现解决问题的途径。类别中寻求的理解便是本类别的基本组成成分。如同在类别中,通过采用“大局”的观点或试图把问题和程序看作是更广泛语境中的一部分的方法来获得理解。学习方法、学习活动与学习动机:这类学生经常将问题视为起点。在解决问题的语境中,认为编码是学习过程的一部分,但它并不是学习的重点。当以这种方式体验或进行编程学习时,在输入代码之前,要认可所涉及的计划的重要性。但是以这种方式解决问题的想法和希望的“投入”,往往与开始编码之间存在着对立。这类学生会受到要解决的问题的激励,或去寻求解决自己所选择
13、的问题。关于学习编程语言:这类学生可能会把学习编程语言作为解决问题的手段,但并不止于编程语言。他们在解决编程中出现的问题时会毫不犹豫地将其在编程语言中所学的方法运用其中。理解编程和程序的方式:这类学生会关注程序的实用性。编程是关于创建解决问题的方案,是完成某些作业的途径。学生的关注重点或内部视野:这类学生同时关注亟待解决的问题与概念理解。问题本身或要完成的作业为如何编写程序提供了学习的动力,也提供了理解的途径。这类学生认为以往经验很有价值。他们的学习重点不在于通过既有知识而获得的理解本身,而是在于强化提出解决问题办法的能力。学生的感知界限或外部视野:类别认为程序是由不同的概念和构成因素整合并以
14、不同方式组合而形成的,但是在本类别中要从亟待解决问题的角度或是需要完成的作业角度来理解程序。感知界限也没有局限在当前学习的语言中,不局限在单一的程序中,而是更广意义上的概念。本类学生把过去的体验看作是构成学习环境的语境,并累积到先前的知识基础之上,从而作为一种学习新的解决方案的途径。类别:为“参与”或“文化需要”的学习。在此类中,体验“编程学习”是学习成为编程群体一分子所需要的条件。对编程学习意义的理解包括程序员思考方式和程序员实际的工作。虽然先前关注的句法、语义和逻辑这些元素在这个类别中也得到确认,但“编程学习”意义的本质则延伸至实际编程群体。学习方法、学习活动和学习动机:这类学生对于成为一
15、个程序员意味着什么的理解,可能会对他们的学习方法和期望学到的知识产生影响。这类学生会采用与其他程序员或者编程群体交流这一策略。通过电子邮件、讨论小组或是通过参加会议可进行沟通。学生也可接近教师来寻求对他们学习方面更多的指导。只有当学生的视野超越了学习机构、编程语言和程序,他们才能了解要成为一个程序员所应具备的条件。他们学习编程的积极性可能会跟他们希望在编程领域中找到职位有关。理解编程和程序的方式:这类学生把编程理解是一种文化。尽管计算机程序形式繁多、功能各异,但是这类学生的一个显著特点是将程序看作是程序员之间进行沟通交流的工具。例如,这类学生重点关注的是把他们程序的可靠性作为一高等工程教育研究
16、 年第期个好程序的标志。他们知道有一个程序员群体,在这个群体中共享同一种语言、同一种文化。关于学习编程语言:这类学生学习编程语言时认为是学习编程文化的一部分,仅仅学习编程语言是不够的,还要理解使用这些语言的语境。理解编程语境同样可以促进编程学习。学生的关注重点或内部视野:这类学生同时重点关注作业、理解、早期体验和他们所理解的作为一个程序员意味着什么。即使学生明白自己和程序员之间思考方式上存在差异,但他们仍可能将对“程序员是什么”的理解与他们对程序员思考方式的认知联系在一起。学生的感知界限或外部视野:如果认为编程学习行为是就程序员或编程群体而言的,那么这类学生的视野就超越了编程的代码、概念和需要
17、解决的难题,认为是在用某种特定文化来学习某一特定领域。他们会决定调整自己的思考方式来加入这个领域,或者在与这个领域互动时,只求明白他们所期待的是什么。三、对教学与学习的一些启示如前所述的结果空间和所描述的类别为教学实践提供了一个应用平台;读者可以将这些研究结果作为比较点和依据应用在自己的实际情况中。从某种意义上说,学生自己在他们学习体验的不同时期会采用不同的体验方式。他们选择的关注重点在任何时候都可能决定他们进行编程学习的方式。影响学生学习编程方法的潜在因素有许多,然而作为编程教师,我们可以运用当前的研究结果来提出下列问题。我们希望学生采用哪些关键方式来体验编程学习?综观各类别,有些学习经验可
18、能会强化一些特定的编程学习方法。因此,教师应该设计学习体验、辅导活动或课后作业,来指导学生以尽可能全面的方式学习大学初级编程课程。从类别到类别,结果空间揭示了逐渐扩展的外部视野或感知界限。如果学生没有超越类别和类别的学习体验,学习结果就有可能不太成功。从整体类别描述中能看出,在不同阶段,一些教师会希望强调某些特定的学习行为。例如,初期的重点可能在代码上,在后期会将重点转移到理解与语境上。对学生而言,体验编程学习行为的某些特定方法的含义是什么?诸如类别和类别所述,采用表面定向的方法学习入门单元的学生,他们不去探寻所学内容的意义,而是学习一些问题的答案,仅仅为了完成作业而已。当进入到后续单元时,他
19、们对“学过的”编程概念的理解就可能会显得很有限。相反,如果学生用类别或类别中的方法体验编程学习,他们就是在采用深层定向的方法来学习该学科。他们理解所学内容的意义,并且努力在编程与程序的“大局”范围内学习编程。他们的努力不仅仅是为了完成作业,还会进一步培养自己对所学编程概念的理解力。采用这种方法学习,他们就会为后续学习打下更坚实的基础。如何使课程安排能够支持学习方法?在学习体验中要区分重点关注局部的学生和那些关注整体的学生。例如,在类别中,学生希望提供可控制的信息量,只关注完成碰到的单个作业,需要不断得到对少量作业评定的反馈,这反映出学生只关注局部的学习,很少或根本没有意愿将学习扩展到更广义的编
20、程语境中。在类别中,学习重点为句法和代码编写,常常会不利于概念的理解,同样也说明这是一种极其片面的编程学习方法。虽然学生没有主动寻找把握“大局”,但教师可以通过更明确地强调编程与编程语言、编程群体的广泛语境来鼓励他们重新定位学习重点,这种方法可能会促成学习体验的转变,或者拓展这种体验。对于类别和类别中那些把在学习体验中寻求理解作为重点的学生,他们期望教师提供帮助来提高理解力。例如,以类别方式理解编程学习的学生,喜欢强调以理解应用来解决问题的方式编排教学内容。对那些把编程学习理解为成为程序员的意义的学生来说,网络化学习作为编程科目的一部分会很重要。对需要有学习经验和积累理解的初学者来说,把规定的
21、作业融入程序员的实际工作中会促进他们的学习,使他们体验更丰富的学习经历,提高他们的学习效果。同样,学习作业的设计也是应对跨类别范围学生需求的一个重要方面。例如,在类别中,为了提高那些通过先前知识积累来学习的学生的成绩,在备课、授课时应该注意让他们理解每个概念是如何建立在先前学习的基础之上的,这样可以使这类学生在学习过程中获得更高的满意度。作业考核的设计也可以考虑以特定方式进行初级编程大学生学习方法研究编程学习学生的需求。例如,在类别中,学生们倾向于为分数而完成作业,这样就可以有更多获得反馈的机会,这对他们决定自己是否在课程学习上“走上正轨”至关重要。在类别和类别中理解编程学习的学生会乐意连续完
22、成作业,这依赖于他们过去的努力。类别的学生尤其重视选择完成那些本质上就是要进行考核的问题。也就是说,如果他们认为接受的作业与考核相关,他们就会对成功有更高的积极性。怎样帮助学生转向更先进的学习方式?对那些希望自己的学生能达到以更先进方式进行编程学习的教师,我们建议他们改变教学方法,使学生能接触到那些理解方式。这是因为对学习来说,学习环境中存在的变化维度要与学生的辨别能力相适应。更具体地说,如果我们想把类别的学生作为我们教学的成果,需要把类别的体验吸收到教学中,可以根据类别中描述的几种理解元素来构建这些体验。例如,对于那些在学习代码编写功能时仅仅以作业为导向的学生,我们不应当期待他们理解整体编程
23、结构,也不应该期待仅以课程要求为学习重点的学生能乐于参与整个编程群体。如果我们期望学生具有类别的体验,我们需要设计学习策略来引导学生以这种方式来认知外部世界。如何进一步运用本研究结果来帮助学生学习?我们帮助学生学习或提高学习成绩也许并不单纯是为了提高考试通过率。那些理解力偏差的学生靠死记硬背来学习,他们在考试中可能比理解能力强的学生取得的成绩好;那些理解能力强的学生可能会编出有严重错误的程序。应该强调“学习是学会以不同方法处理或体验不同现象”这一思想。在研究中,我们已经指明了学习初级编程的大学生的不同学习方法,每种学习方法都与对程序和编程语言的理解方式相关。虽然强化编程学习特定方法的途径清晰明了,但是要找到能改变学生关注的重点,同时帮助他们领悟到在每一类别中的关键性因素的策略,这仍具有较大的挑战性。教学团队需要考虑、研究并测试能实现这种转变的策略。参考文献 ,():,:,():,():,():,:“”,(),:,高等工程教育研究 年第期