您的位置: turnitin查重官网> 计算机 >> 计算机存储 >试述程序设计程序设计类课程层次化教学方式和实践址

试述程序设计程序设计类课程层次化教学方式和实践址

收藏本文 2024-01-19 点赞:20387 浏览:86130 作者:网友投稿原创标记本站原创

  • 摘 要: 高校计算机程序设计类课程内容具有层次化特点,教学内容可作算法、方法学、语法和集成开发环境四个层次的划分,忽视了该特点往往会使学生的学习目标不明确。根据认知心理学和学习理论,提出了程序设计类课程的层次化教学法,使之无论从行为主义、认知学派,还是建构主义的观点出发,都能构建一个全新的教育传播模式,提高了教学效果。此外,以C语言为例,给出了一个具体的实施步骤。
    关键词: 程序设计; 教学法; 层次化; 教育传播; 学习理论
    1006-8228(2013)03-58-04
    0 引言
    《国家中长期教育改革和发展规划纲要(2010-2020年)》指出,信息技术对社会发展具有革命性影响,应把信息化能力纳入学生的培养目标,作为一项基本技能。对高校学生来讲,程序设计类课程是信息化能力培养的一个重要组成部分,在高校的人才培养方案中具有举足轻重的地位,学生程序设计能力是信息化时代的一个必要素质。
    目前我国高校的计算机公共基础课,以及部分计算机专业课,程序设计类课程的开设内容和教学方法大都是“一条龙”式的,即从问题描述、算法的设计、程序流程图到最后的编译连接、运行调试,其具体操作是作为一个完整的解决方案介绍给学生的,这种方式对大部分学生未必合适。我们在分析了程序设计类课程内容的层次化特点之后,将教学内容作了横向的层次划分,向学生传递归属层次明确的知识。通过这种内容上的层次化重组和定位,使之无论从行为主义、认知学派还是建构主义的观点出发,都能构建一个具有全新视角和明显高效的教育传播模式,为学习兴趣的培养和教学效果的提高奠定了基

    源于:论文集www.udooo.com

    础。

    1 国内外研究现状

    国内外教育研究专家和计算机教育实践者做了不少的研究和实践,试图提高程序设计课程的教学质量,探索程序设计课程教学的新路子。Wulf(2005)从建构主义出发提出计算机程序设计的新教学法,如主动学习、学徒制、团队合作,并针对24人以下的小班设计了课前阅读与评分、课内评论、教师指导下的自主实践、个体作业和团队作业等具体教学措施。Caspersen和Bennedsen(2007)根据认知科学和教育心理学中的认知载荷理论、认知学徒制和精加工实例的原理,提出一种模型驱动的面向技能教学的程序设计教学法,其中将程序设计课程涉及的模型分成类间模型、类内模型和算法模型三种。Lui和Kwan等(2004)专门针对弱基础学生提出一个建构主义的Perform教学方法,该方法在主观上以达到“全民编程”为设计原则,首先分析了弱基础学生感情上和认知上的5个弱点,然后提出有针对性的C语言课件开发指导原则[3]。Zhu和Zhou(2003)提出了方法学优先的教学策略,认为像C++这样的面向对象程序设计语言的教学应该先教方法学再教语言本身,同时给出了方法学的6步骤教学法[4]。莫永华和寇冬泉(2005)以认知心理学为基础,秉承OSI七层参考模型的分层思想,对学习和记忆的信息加工模型加以改进,提出了一个更加有效的、全景式的人类分层传播模型,并结合该模式探讨相关学习理论[5]。张晓竞和陈元琰(2004)做了面向对象程序设计课程的感性化教学探索,提出了横向列表比较法、纵向特征点延伸法等具体措施[6]。高枚和杨志强等(2005)从教材建设、教学内容的组织以及教学方法等几方面总结了“C/C++程序设计”课程教学的一些新思路和体会[7]。刘璟(2003)指出,对于程序设计的研究,可以分为四个层次:算法、方法学、语言和工具,其中算法设计与分析的研究在最高层次上[8]。
    在与层次化有关的教学理论或实践方面,文献[4]虽涉及了方法学和语言的教学层次关系,但实际的层次不限于这两个,其中的6个教学步骤也仅限于C++。文献[5]的人类分层传播模式虽然提到分层,但并不是教学内容的分层问题,而是教育传播的分层问题。文献[8]把算法看成是程序设计的最高的、终极的层次,但在实际的科学研究中,一方面算法最终离不开实现工具的支持,另一方面工具的运用(如软件包、GPU)也能使许多课题的研究获得进展和创新,在工程技术领域更不能忽略工具的重要性。包括工具和集成开发环境在内的较低层次内容无疑是程序设计的重要教学内容。

    2 层次化教学的思想

    2.1 程序设计类课程内容的四个层次划分

    计算机科学家沃思(N. Wirth)提出过一个著名的公式:
    数据结构+算法=程序
    我国的计算机教育家谭浩强教授改进了这个公式[9],提出:
    程序=算法+数据结构+程序设计方法+语言工具和环境
    他们都是运用层次化的思想观察程序的本质。我们根据多年来的教学实践和总结,程序设计语言课程内容也有一个清晰的层次划分,它可以分成四个层次:算法、方法学、语法和集成开发环境。这四个层次从窄到宽,从抽象到具体,构成一个金字塔,如图1所示。
    算法(Algorithm)是计算机科学的核心,是指解决问题的结构化流程,是编排计算机指令的策略性步骤。按照D. E. Knuth的定义,算法是一个有穷规则的集合,其中之规则规定了一个解决某一特定类型的问题的运算序列,算法应具有如下五个重要特性:有穷性、确定性、输入、输出和可运行性[10]。算法是方法学无关的,也是语言无关的,即算法的设计不依赖于用什么样的程序设计方法,更不依赖于具体的编程语言。
    方法学(Methodology)是计算机语言的设计方法,比如简单过程式的程序设计、面向对象的程序设计、并行程序设计和网格计算[11]。以前的Fortran语言和C语言是按照简单过程式语言设计方法设计出来的语言产品。而现在流行的Ja和C++是按照面向对象方法设计出来的语言产品。
    语法(Grammar)描述了组成一个有效程序的符号的顺序,语法为理解一个程序提供了重要的信息,同样也为将它翻译成目标程序提供了必要的信息[12]。语法包括词法和句法,语法是学习计算机语言的最基本、学生最直接感知到的内容。程序设计语言不同,直观地看,就是语法不同。集成开发环境(Integrated Development Environment, IDE)是为了让某一种语言的程序代码能方便地录入、编辑、存储、编译、运行和调试,以及为函数库调用、类库导入、命名约定、硬件相关的优化、编译选项等提供接口的应用软件[13]。
    这四个层次从上到下构成一个从抽象到具体的概念范畴。上一层次与下一层次都存在一对多的关系。一个算法可以用过程式的语言实现,也可以用面向对象的程序实现;在同一种方法学(如面向对象)指导下设计的语言有多种(如C++、Ja),它们的语法不同;同一种语言(即语法相同)可以有不同的集成开发环境,比如C++的IDE有C++ Free,VC++

    6.0,VC++.net等。

    源于:论文开题报告范文www.udooo.com

    层次越高,越具长期性,层次越低,越容易被更替和淘汰。优秀算法的生命力很强,能生存几十年、几百年甚至几千年;方法学具有计算机发展的时代特征,一般有几十年的生存期;计算机语言则不断推陈出新,有的能用几十年,有的则几年后就被人遗忘;而集成开发环境更加短命,IDE的新产品不断出现,版本几年一更新,程序员需要不断去做升级,跟上变化。

    2.2 层次化教学的心理学和教育学基础

    层次化教学的思想虽然源自教学实践,从学习理论的观点来看也是具有它的理论基础的。
    关于学习理论,经历了一个从行为主义,到认知学派,再到建构主义的发展历程。最早的行为主义学习理论以华生(Watson)为代表,将巴甫洛夫的条件反射理论应用到教育传播和学习理论的研究中去。但是行为主义的学习理论过于强调环境对学习的决定作用,认知主义的学习理论则以学习者主体为主要决定因素,指出学习过程是一个学习者根据个体的已有知识和外部环境加工形成新知识的过程。建构主义更加强调学习者的主观能动性,提出学习是一个发现过程,而不是一个接受过程,更不是信息传送过程[14]。
    如果单纯从行为主义出发,知识的分层至少能够提高刺激-反应(S-R)联系的形成效率。
    在学习理论的认知学派中,奥苏伯尔(Ausubel)提出的先进组织者(Advanced Organizers)理论指出,教师的角色是教学内容的组织者,教师的责任是将教学内容进行有意义的组织,使得它成为学生长时记忆的骨架(umbrella),起到提纲挈领的作用,具体的知识将由学生自己填充。教学内容层次化结果就是一种长时记忆的骨架或教学内容的先进组织,这种层次化模式还具有如下优点。
    ⑴ 有利于注意(Attention)的参与。注意是感知的重要特征和学习效率的基本保证,在学习过程中,感知到的内容包括知识点本身、知识点所处的层次、教学环境、教师的态度以及干扰信息等,层次作为其中一种特意安排的新感知内容引导了注意的方向,强化了知识点本身,使学习者尽早抛弃非相关内容,避免了许多混乱的感知内容进入后续的加工过程。
    ⑵ 它是概念形成的良好框架。能激活原有的知识(长时记忆),与感知到的新知识经重新编码成为新的长时记忆,从而使新概念以及该新概念所属的层次存储在长时记忆中,由于这些概念在存储时增加了“所属层次”的编码,使以后的检索和理解更加快速和准确。
    ⑶ 有利工作记忆中块(Chunk)的信息量提高和加工的效率。工作记忆是一种短时记忆,其中的内容以块为单位,是学习过程的加工对象,米勒(Miller)认为工作记忆中块的个数是相对固定的(约7±2),与块的信息量(比特数)无关。层次化处理很容易将同层的知识同块化,从而提高块的信息量和学习和记忆加工的效率。
    ⑷ 一定程度上迫使教师的隐性知识(Tacit Knowledge)转换为显性的可分解的步骤,降低学生的学习难度。例如,C++的#include命令不仅是一条简单的语句,而且会涉及到后续的文件和存储目录,含有语法和IDE两层知识,分层次的教学就自然使教师讲解#include命令时分解到位,两层均及,使学生能充分建立该语句的概念和机制。
    建构主义是上世纪末兴起的学习理论,重新从学习者的角度分析了认知活动的规律。基于建构主义观点提出的教学法层出不穷,关键思想是认知的主动性、教师角色从“教导者”转为“推动者”、教学内容的结构化等等。程序设计类课程的层次化有利于提高认知的主动性,顺应学生的偏好和个性,教学内容的结构化程度自然上升,同时从课程内容的四个层次来看,教师客观上成为四个层次知识传授的推动者,在算法和IDE两端层次尤其如此。

    3 层次化的教学方案和实例

    3.1 层次化的教学方案

    基于上述分层次思想,我们提出的总体教学方案是:对计算机程序设计类课程的教学内容做算法、方法学、语法和集成编程环境四个层次的划分。以计算机语言课程的四个层次为框架,重新梳理教学内容,分层定位知识点,将各章节各知识点归到各个层次。这个分层过程对理论课、实验课和课程设计同步进行。
    以教学内容的层次化为导引,将层次化的思想贯彻到各个教学环节,包括教学大纲修订、教学进度安排、教学手段创新、学生学习引导、考试、课程设计、毕业设计等。
    值得注意的是,四个层次之间的关系并不是简单的相加关系,而是抽象与具体、调用与支持的关系。层次化的教学方案并不是说按照算法到IDE或相反方向的顺序重新安排教学过程,而是教学过程仍然按照原来的章节顺序,只是在每个章节、每堂课将所讲授内容明确指出所属的层次,以方便学生的领会、掌握和主动学习。
    此外,传统的以问题为中心的教学方法是以“问题”为格式塔(Gestalt)进行问题的求解,本方案并不是以“概念”或“操作”为新的格式塔,而是仍以“问题”为初始格式塔,只不过特别强调问题求解过程中学生顿悟(insight)到的各种子格式塔,这些子格式塔对应于它所属的各个层次,由于有了四个层次的划分,这里的顿悟已退化为平凡的获取,需要顿悟的仅为子格式塔内部的顿误了。

    源于:查抄袭率职称论文www.udooo.com

  • copyright 2003-2024 Copyright©2020 Powered by 网络信息技术有限公司 备案号: 粤2017400971号