计算机程序设计语言范文
时间:2023-04-10 16:17:10
导语:如何才能写好一篇计算机程序设计语言,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。
篇1
关键词: 程序设计语言; 建构主义教学模式; 支架式教学; 知识建构
中图分类号:G424 文献标志码:A 文章编号:1006-8228(2012)12-56-02
Computer programming language and scaffolding instruction
Pang Erli1, Wang Xin2
(1. College of life science, Beijing Normal University, Beijing 100875, China; 2. Beijing Capital international Airport., Ltd. IT Department)
Abstract: Programming language is an absolutely necessary sector, and a suitable teaching method is a key to grasp it fleetly and exactly. Scaffolding Instruction in the teaching mode of constructivism is a suitable teaching method, which decomposes a complex task and gradually guides students to understand deeply and completes construction of information actively. Constructing scaffolding, creating situations, independent exploring, evaluating effects, and so on are used in the teaching process. The results prove to be good and show good prospects for development.
Key words: programming language; the teaching mode of constructivism; scaffolding instruction; knowledge instruction
0 引言
在大学生计算机教学实践中,计算机程序设计语言经常被学生看作是一门难以掌握的课程,师生在教学实践中往往付出很大努力,却不能达到预期的效果。在从事这门课程的教学实践中,我们认识到寻求合适的教学方法是取得良好教学效果的关键。例如,建构主义模式下的支架式教学符合程序设计语言的特点与学生的认知规律,是讲授这门课程的恰当方法,我们在教学实践中应用支架式教学方法,取得了很好的效果。本文将相关的理论研究与实践教学相结合,探讨了计算机程序设计语言课程的教学方法。
1 支架式教学与计算机程序设计语言
建构主义教学模式是指教师利用情境、协作、会话等手段,以学生为中心,充分调动学生的主动性与探索性,最终达到学生对所学知识的建构。这种教学模式改变了传统教学模式中学生被动接受的状态,以学生为中心,教师也由传统的知识传授者变为学习的组织者、指导者、帮助者和促进者。
支架式教学是建构主义教学模式下比较成熟的一种教学方法,它要求教师改变向学生笼统灌输知识的方式,而以引导者的身份,为学生在理解所要掌握的知识之前,设计一种概念框架,这种概念框架就像建筑中的脚手架,它为学习者进入所学知识提供了一个基本的视角与工作平台,可以有效地帮助学生进入到对知识的理解,即把复杂的学习任务加以分解,将其类型化、结构化、规约化,从而把学习者的理解逐步引向深入。在这种教学方法下,教师的作用是引导、组织开展教学,使学生在所建构的支架模式上掌握和内化所学的知识技能,进而使学习者进行更高水平的认知活动。
计算机程序设计语言作为一种面向计算机用户的语言,同我们的自然语言有其一定的相似性,即具有一定的语法规则和语意规定。我们教学的目标主要是使学习者掌握这些基本的语法规则和语意规定,从而驾驭纷繁复杂的计算机语言工具,最终获得能够独立编写程序和解决实际问题的能力。对于这些复杂的语法结构,教师在教学中可以效仿自然语言的结构,对计算机程序设计语言加以分解从而建立框架,逐步引导学生完成对知识的自我建构。
2 支架式教学方法下的计算机程序设计语言教学过程
支架式教学强调,知识是在一定的情境下,借助教师等他者所提供的基本支架的帮助,学习者发挥自己的学习主动性,以基本支架为知识掌握的内在脉络,逐步完成学习任务,达到预期目标。这种教学方法体现在计算机程序设计语言的教学过程中由以下环节组成。
2.1 搭脚手架
搭脚手架是支架式教学展开的基础,合适的脚手架是学生建构知识的有效工具。脚手架的设计必须具有层次性、逻辑性,所谓层次性是指其具有不同等级的结构,所谓逻辑性是指不同等级的结构具有内在的必然联系。
在教学实践中,我们所搭建的脚手架是以学生的已有知识为依据,即与学生已有的母语——汉语的知识联系起来,按照汉语划分为字、词、句、章的语法结构,把计算机语言也归结为字、词、句、章的结构,这样,“字、词、句、章”的逻辑结构就成为计算机程序设计语言教学中的脚手架。这样一种“字、词、句、章”式的分解方法是本人多年从事计算机程序设计语言教学实践的心得,由于它来自于学生的母语——汉语自身的语法结构,因而很容易为学生所接受并运用到对计算机程序设计语言的学习中去,而良好的实际教学效果也充分地证明了这一点。
2.2 创造情境
情境是支架式教学展开的环境,是学生对知识建构的基础。但情境的创建是为学生的知识建构服务的,所以,教师创建情境时必须紧紧围绕主题,根据脚手架上的不同点,创建不同的情境。
在教学中情境的设计,我们是根据脚手架上的每个点展开的,对于“字”这个点可以展开基本数据类型的教学,“词”这个点可以展开复合数据类型的教学,对于“句”则可进行基本控制结构的教学,“章”是建立在以上基础上的综合应用。在每个点中都有意识地设计了一些相应的问题、任务,提供相应的资料、数据支持,形成有助于学习的特定情境。
2.3 独立探索
在支架式教学模式中,作为引导者、组织者的教师提供的概念框架是学习的前提,平台一旦确立,学生在其上展开的独立探索就成为中心内容,调动、发挥学生的学习主体性进而完成对知识的建构,这才是支架式教学模式的根本目的。
在教学中对于脚手架上的每个点,都要给学生一些程序资料,让学生独立去阅读、分析,指明程序的优点与不足以及对其优化的方法,同时还需布置一些编写程序的任务,要求学生自己编写程序,并对自己的程序进行评价。总之,我们通过任务驱动的方法促进学生进行独立探索。
2.4 协作学习
协作学习是支架式教学展开的重要方法,是学生知识建构的重要保证。由于不同人看到的是事物的不同侧面,进而对事物的理解也不同,学习者以自己的方式建构对于事物的认识时,不存在惟一标准的理解,通过学习者的协作学习可以使其对事物的理解更加全面。
在教学中注重通过布置协作学习任务,强迫学生进行协作学习。如其中一个协作任务是这样设计的:编写一个学生成绩管理管理系统,其中需要完成四项目标:①输入学生的基本信息与各科成绩并保存到一个文本文件中;②从文件中提取学生成绩,统计平均分;③对所有学生按平均分进行排序;④任务完成后要求以Word文档上交。这四项目标分别由不同学生或不同小组学生完成。这个学习任务中的四项目标是相互衔接的,后续项目必须以之前项目的结果为基础,所以,不同学生或不同小组之间的协作学习就是必须的。正是通过这样一些协作学习任务的布置,做到了以强迫的方式帮助学生建立协作学习的意识,进而使协作学习成为自觉的学习方式。
2.5 效果评价
效果评价是支架式教学展开的动力,是对学生知识建构程度的评价。对学习效果的评价,包括学生个人的自我评价和学习小组对个人的评价,评价内容包括:①自主学习能力;②对小组协作学习所做出的贡献;③是否完成对知识的建构。
在教学实践中采用的评分规则是:个体所得分值=小组得分*(个体在组内得分/小组内所有个体得分的平均值)。小组得分是任务评比所得的结果,是小组间竞争和小组内合作的结果。任务评比时,每个小组对自己的任务进行汇报时,其他小组和教师对其打分,其所有分值的算术平均数作为该小组最后的得分;成员的组内得分则是在组长的组织下,由所有的成员对其打分,取算术平均数。
通过上述环节在教学过程中的实施,基本实现了教材、学生、教师、媒体教学四要素之间的良性循环,如图1所示。
3 反思
在教学实践中使用了支架式教学方法,虽然取得了一定的效果,但也遇到很多问题,其中既涉及到如何完善这种教学方法本身,又涉及到其与教学内容、教学大环境等的关系,这里提出自己的几点体会:
3.1 强调以学生为中心
学生的主动探索性是知识建构的关键。在支架式教学方法中,学生是知识的主动建构者,而不是被动接受者,教师也不再是传统的知识传授者。在整个教学过程中教师起组织者、指导者、帮助者和促进者的作用,教师必须注意这种角色的转变与指导尺度的把握,要因势利导而不要越俎代庖。
3.2 注重情境设计的具体性
情境是影响知识建构的外在氛围,形成主题集中、形式活跃的总体情境对于教学任务的完成是非常重要的,但情境最终是为特定的教学任务服务,是在支架下教学的总体模式下展开的。因此,教师对情境的设计必须围绕学生所要建构知识的主题,要和支架式教学模式的具体要求结合起来。
3.3 注重人际互动
人际互动是影响知识建构的社会环境,通过教师的指导实现师生互动,通过学生的协作学习实现学生之间的互动。但人际互动的完善仅有具体课程、具体教学模式是难以完成的,它有待于总体社会环境、教育环境的完善,也有待于学生自身素质的总体提高。
3.4 广泛地利用学习资源
学习资源是影响知识建构的文化环境。多媒体计算机和Internet网络教育是建构主义发展的沃土,是理想的认知工具。在这个环境下,学习资料非常丰富,我们必须充分利用这些资源,即要充分利用e_learning。但资源丰富的同时,必然会存在良莠不齐,教师必须帮助学生对这些资料加以甄别。
4 结束语
我们在计算机程序设计语言教学中应用建构主义模式下的支架式教学,已经取得了很好的教学效果。我们通过实践检验了这一教学理论,希望我们的经验对同行有参考价值。在未来的教学实践中,我们将进一步细化这种教学模式,提高计算机程序设计语言这门课程的教学质量。
参考文献:
[1] 何克抗.建构主义的教学模式、教学方法与教学设计[J].北京师范大
学学报(社会科学版),1997.5:74-81
[2] 陈琦.教育心理学的基本问题(二)—关于建构主义理论[J].中国远程
教育,1999.2:40-43
[3] 袁维新.影响知识建构的环境因素探析[J].教育科学,2003.2:41-44
[4] 张屹,祝智庭.建构主义指导下的信息化教育[J].电化教育研究,
2002.1:19-23
篇2
一、运用任务驱动教学法于程序设计语言教学,在“任务”的设置上要适当
所谓适当的“任务”,是建立在对学生的了解之上的,让学生通过适当的努力能较好地完成,在完成任务的过程中,学会学习。在中等职业教学中,程序语言设计相对较难,对学生的思维训练也是多方面的,相对于其他学科也有其独特之处。如果采用传统的教学方法,简单地按照从易到难,从简单到复杂的顺序循序渐进地进行教学,学生处在被动的学习状态中,容易感到厌倦。采用任务驱动教学法,有利于培养学生自主学习、合作精神和探究能力,有利于培养学生的信息素养和综合素质。
根据学生的现状,本人把任务设计成几个有一定联系的几个任务。按进度分别提出:请你给学生编写一个加法练习程序;请你给学生编写一个加法练习程序,正确的显示“OK”,错误的显示“wrong”;请你给学生编写一个加法练习程序,每套10道题,每题正确的加10分,错误的不给分,并计算总分等。
当第一个任务提出时,学生都觉得很简单,但无从下手。本人围绕这个问题先开辟“有意义接受学习空间”,进行必要的教学,学生的学习也显得特别认真。
二、运用任务驱动教学法于程序设计语言教学,在教学形式上以学生为主体
采用任务驱动教学法,在课堂教学中,首先提出一个需要完成的具体任务,与学生共同分析解决该问题所需的知识,方法和步骤,有时先开辟“有意义接受学习空间”,围绕具体任务进行适量的概念教学和举例讲解,或开辟“自主学习空间”以及“协作学习空间”,学生来完成任务,可以独立完成,也可以合作完成。目的是的通过完成任务,掌握学习内容,学会学习,培养综合能力。在这个过程中,教师参与探索和指导,引导学生掌握教学内容,适时在班级交流,发现新思路,推广新思路,鼓励创新。教师进行比较、评讲、归纳,或由计算机执行,学生从中得出结论,引导交流,共同进步。如:
在读语句和写语句教学时,在教学前先提出一个任务,即:“请你给学生编写一个加法练习程序”。围绕这个任务,讨论分析需要解决的问题,程序需要提供的功能,需要通过那些途径来实现:出题显示要用一个写语句;出题要一个随机函数;回答问题要用一个读语句;答案显示也要一个写语句。
然后介绍读语句和写语句的格式及其功能、介绍随机函数。
学生独立阅读课本上的例题;学生独立或合作完成任务。
教师或查看学生在电脑上的执行情况,或参与一些学生的讨论或探讨,发现问题,个别问题的个别回答,带有普遍性问题的在全班回答或讲解。
就在完成本任务的过程中,有的同学提出了正误判断问题,一次练习做多个题目等问题。由学生导引出了后续问题。“请你给学生编写一个加法练习程序,正确的显示‘OK’,错误的显示‘wrong’”。这是条件语句教学时的任务。循环语句教学时,任务是:“请你给学生编写一个加法练习程序,每套10道题,每题正确的加10分,错误的不给分,并计算总分”。数组教学时,提出对自己及班级的成绩进行统计的任务。
以这种方式进行教学,使得学生感觉到编程是一件实用和有趣的事。
采用任务驱动教学法进行教学,教师的教和学生的学都是围绕如何完成一个具体的任务进行的。教师教学思路清晰,学生学习目的明确,学习变成了学生的主动行为,在用的需求下学,学以致用,更容易掌握学习内容。比如在前面提到的条件语句的教学,按任务驱动教学法,不是孤立地介绍有关概念,而是将同学们所关心的正误判别问题加以解决。这样教学,提高学生的主动参与意识。
三、运用任务驱动教学法于程序设计语言教学,在教学内涵上是符合探究式教学模式的
从学习者的角度说,任务驱动教学法是一种学习方法,适用于学习技能型知识,尤其适用于学习信息技术应用方面的知识和技能,也能适合程序设计语言的学习。
任务驱动教学法使学习目标十分明确。在某个学习阶段,紧紧围绕这一既定的目标,学习和运用相关的知识和方法。一个“任务”完成了,一个目标达到了,会产生新的任务,新的目标。例如,在上述第一个任务进行时,就有学生提出了新的问题。随着一个个任务的完成,初学者将逐步消除对编程的畏惧,还不断地体会到成功的喜悦。任务驱动教学法,符合计算机系统的层次性和实用性,提供了由表及里、逐层深入、逐步求精的学习途径,便于学生由浅入深、循序渐进地学好有关的知识和技能;提供了三个学习空间,也鼓励了学生的学习主动性。而且,采用这种方法,伴随着学生的是一个跟着一个的成就感。
从教师的角度说,任务驱动教学法是一种建立在建构主义教学理论基础上的教学方法,符合既发挥教师的主导作用,又体现学生的认知主体作用的“双主模式”,有利于培养学生的自学能力和相对独立地分析问题、解决问题的能力,以及探究精神、合作精神和团队精神。在程序设计语言教学中可以采用这种教学模式。
运用任务驱动教学法,体现了以人的发展为本的观念。尊重学生的主体价值,创造适合学生个性发展的条件,激发全体学生的积极性,使每个学生都学有所得,享受成功的喜悦。这是尊重学生,爱护学生,将学生视为学习和发展主体
篇3
【关键词】:c语言程序设计教学方式上机实践
【分类号】TP312.1-4
随着社会的发展和技术的进步,计算机应用已经广泛渗透到了各个行业,计算机发挥着越来越大的作用,计算机基础教育成为非计算机专业大学生的必修课,而C语言程序设计是各高校普遍开设的计算机基础课程之一,是大学生学习程序设计的入门课程。对非计算机专业的学生来讲, 首次接受计算机高级语言与程序设计方面的知识,不仅要学习算法的设计思想,还要掌握C语言本身的语法,学习起来非常困难。为了更好地培养学生运用C语言解决实际问题的能力, 笔者结合自己的教学研究与实践,从课堂教学方式和教学手段、上机实验等方面阐述,就如何提升教学效果进行探索论述。
一、运用典型的例子,培养学生对C语言的学习兴趣,充分调动学习积极性
C语言注重算法设计、程序书写、程序进行调试的过程显得抽象复杂,导致学生抱怨程序设计难、不好理解、难掌握。第一堂课的教学就显得尤为关键,教师应该充分准备, 力求授课内容新颖,对C语言的发展、设计开发,C语言在现实生产生活中的应用结合学生所学专业进行具体的介绍发展结合F实环境和学生所学专业的关系,让学生明确学习本课程的目的,清楚知道课程的用途。给出能解决实际问题的几个简单且有输出结果的程序源代码,让学生编辑并调试,当程序结果成功输出后,学生学习C 语言程序设计兴趣自然就产生了。
二、运用多媒体教学与案例教学相结合的教学方式
传统的课堂教学是使用粉笔在黑板上编写程序,一定时间内传授的知识和信息偏少影响教学效果。多媒体教学可以直观形象的使学生在有限时间内迅速理解、掌握更多知识,还可以培养学生抽象思维和逻辑推理能力。在多媒体教室使用的课件,要根据自身的课堂特点和知识结构,精心设计引入案例教学,每个知识模块都配设各个知识点的综合性案例,其中综合案例由若干个模块组成,每个模块覆盖若干知识点。每个模块作为教师在课堂上引出知识点的引例,进行详尽的分析讲解。学生通过实现综合案例,能够将知识点融会贯通。在设计综合案例时要体现知识的循序渐进性,由易到难,由简到繁。利用案例教学采用多媒体教学和传统教学相结合的方法,通过多媒体生动的动画来演示知识重点、难点之间的关系,利用黑板板书给学生分析编程方法和思想,让学生参与写出算法的表示及其演变过程。
三、与程序实例相结合培养学生编程能力
非计算机专业学生学习C语言的目的就是用计算机程序解决专业上的实际问题。在C语言程序设计中,程序的核心是算法,学生能否理解算法并掌握算法是教学的关键内容。以具体实例为切入点,改变先给出一般的语法格式,然后逐步讲解语法要点的方式,以程序实例为中心,把相关知识点的语法和概念融入到具体程序实例中讲解,在整个教学过程授课的重点中为解题思路、方法和步骤,培养学生如何分析并解决与专业相关的实际问题,逐渐培养学生进行C语言程序设计的正确思维能力。利用教学中容易出现的问题,自顶向下逐步细化问题,逐层向下分解问题,直到满足要求为止。通过对问题的分析研究,激发学生的学习兴趣,能够思考和参与讨论问题,培养学生逻辑思维和创新能力。
四、理论联系实际培养学生的上机实践能力
C语言一门实践性很强的课程, 上机实践是学生加深对基础知识、算法的理解、编程能力的提高、消化基本语法的重要途径之一。通过上机实践调试解答学生学习中存在的疑点和难点,理解所学C语言程序设计内容,培养学生的阅读设计程序、分析解决问题的能力。
教师在上机实践前,根据所学内容教师可根据教学大纲,结合不同专业要求精心挑选设置好实验题,具有一定难度、由浅入深、单一到综合的原则,以实践巩固理论、以理论支持实践, 使学生实现对所学知识的运用,对所学知识的综合应用能力进行培养。
在上机实验前,要求学生以书面形式写好算法或源程序。针对学生在调试C语言程序时,出现不同的语法、逻辑、算法和运行等错误,老师和学生一起讨论分析解决问题,提高C语言程序设计和调试程序的能力。
五、结束语
由于C语言程序设计课程内容繁多,采用的教学方法多种多样,在本科的教学课程体系中又占有非常重要的地位。要获得理想的教学效果, 教师需从多个方面过进行综合考虑,提高学生学习兴趣,拓展教学思路, 改进教学方法, 理论与实践结合,在动手实践中提高学生的思维能力,引导学生掌握程序设计语言的知识、编程技术和基本算法,能灵活应用C语言程序设计所学知识去分析和解决本专业的实际问题。
参考文献:
[1]谭浩强《C程序设计》[M].清华大学出版社,2000.
[2]张菁等.C语言程序设计[M].北京:中国铁道出版社,2010.
[3]王唤探讨C语言教学方法[J]福建电脑2006(11)211-217.
[4]赵阿可,刘世江《C语言程序设计》教学方法的探讨[J]价值工程2011(16) 188-189
[5]乔正洪《C语言程序设计》教学实践[J] 电脑知识与技术2009(25) 7182-7183
篇4
1我国计算机专业VB语言程序设计教学现状
VB语言程序设计课程是一门面向可视化编程的专业学科,它在教学中有着很强的实践性、功能性以及专业性,因此作为高等院校计算机专业的必修课程必须要创新教学方法、改革教学思路,由此提高教学质量。具体的我国计算机专业VB语言程序设计教学现状如下。
1.1教学目标。VB语言程序设计是我国计算机专业教学重点,也是主要的教学内容和活动,它在教学中整个工作都是围绕着程序设计开展的。我国当前信息技术课程标准中也明确的指出,VB语言程序设计的目标与任务就是通过该课程教学,让学生主管认识到计算机世界的算法思维、表达方式,并能初步掌握VB这一面向程序设计的语言,在工作中有效的解决各种编程问题。
1.2教学内容。计算机专业的VB语言程序设计教学中,其教学内容包含了:VB语言程序设计基本知识、VB语言程序设计的算法公式以及设计规范、培养学生良好的程序设计思维和习惯。
1.3VB语言程序设计的教学特点。VB语言程序设计本身是一门实践性强、内容复杂的教学工作,它在教学中要求学生不能依赖于各种已经设计好的应用软件,当然除了一些特殊的应用程序之外,也不是对已经存在且得出结果的信息进行加工,而是学生在学习中独立思考各种新问题,并且利用所学知识合理、科学的解决这些问题。就VB语言程序设计教学进行分析,它在教学中有着逻辑思维要求强、结构复杂、注重分析、注重过程以及仔细查错等教学特点。
2计算机专业VB语言程序设计教学新方法
计算机专业的VB语言程序设计课程本身是一门集技能、知识、实践及经验为一体的综合性学科,它在教学中有着很强的实践与理论要求,因此不仅需要学生在学习中掌握各种理论知识,而且要掌握相关操作技术。尤其是在程序设计部分,对于这些内容的掌握程度要求更为严格,只有科学掌握种种适用于各种实践、操作要求的技能,才能让学生步入社会之后不被社会所淘汰。在教学中,教师要充分的认识和注重教学新技术、新方法和新理念的引入,通过各种先进教学方法和手段来提高学生自主学习、分析问题、解决问题的能力。目前,在计算机专业VB语言程序设计课程教学中,常见的教学方法有以下几种。
2.1实例教学法。VB语言程序设计同其他语言类的程序设计课程一样,它在教学中都需要学生提前掌握VB语言基础知识。由于VB语言基础知识本身是一门复杂的课程,在教学中如果仍然沿用顺序教学、满堂灌教学以及填鸭式教学,那么教材前面的基础概念讲述的枯燥必然给学生学习态度造成影响。这种枯燥的教学方式不仅影响学生的学习积极性、主动性,甚至给学生造成厌学、弃学的心理,究其原因是因为大多计算机专业的学生在刚接触VB语言的时候对该课程的认识低,对各种概念和认识完全不理解,这个时候很容易出现学生思维受限制的现象。面对上述情况,在教学的过程中我们有必要采用实例教学法。在教学的过程中将各种专业知识设计成为一个具体的实际案例,在案例中包含当前课程中需要讲述的概念、定义以计算法,以案例的形式由浅入深的给学生讲解各种知识,让学生在不知不觉中学习各种知识。但需要注意,在案例教学中案例设置不能太多,只需要设置的精准、巧妙便可,让案例将教学中所接触的一切概念系统、科学、明了的表现出来,从而达到提高学生学习质量的目的。例如在具体的教学中,如果需要编写一个程序,那么要求输入两个实数,且打印出乘积(具体的程序截面图如图所示)。这个时候我们可以对程序进行分析、判断,让学生从程序分析与判断中明确教学目标、需要掌握的知识,这种教学方法相信老师讲解简单、学生理解容易,也让学生乐于接受这方面的知识。
2.2任务驱动教学法。VB语言程序设计课程的教学中,大多教学工作人员为了更好的提高教学质量,通常都在案例教学的基础上,通过对案例进行优化而形成了一种新的教学方法,即任务驱动教学法。这种教学方法在应用中是以构建灵活、科学、合理的教学方案为基础,以学生为教学主体,将各种学生感兴趣、有意义的教学内容设置到教学方案中,并经过整理之后形成若干个简单的问题,让学生在学习中自我解决和研究这些问题。这种教学方法中,学生能够按照自己的思路去设计计算方法,完成相关的程序设计工作。这种教学方法在应用中,学生能够通过自我研发的方式学习,是一种独立思考、自我钻研的学习过程,不仅保证了教学质量,而且大大提高了学生学习兴趣和学习效率,更有效的培养了学生自我钻研、自我创新的素质。
2.3多媒体教学方法。VB语言程序设计课程在教学中,由于本身专业知识内容多、实验多的特征,其在教学中必然会出现大量算法以及结构流程,而这些算法以及结构流程通过口头阐述很难让学生深入的了解其过程。因此,采用多媒体教学方法与传统教学模式结合效果就显得十分明显了,在具体的教学工作中采用这种方法则教师可以通过网络的形式给学生提前布置任务,让学生在网上自我钻研和解答问题,同时教师还可以通过网络即时的了解学生的学习情况,根据学生学习现状制定出一套科学、系统、有序的教学新方法。经过一段时间的教学工作研究,多媒体教学方法是一种节约板书时间、教学效果好、编程设计直观的教学方式,它有效的提高了教学效率和学生学习主动性。具体实施分三个阶段:选题分组阶段:由教师给出若干个题目供学生选择,然后每四到五人组成团队,进行合作开发。系统实现阶段:学生利用课余时间展开系统调查、系统分析、进行模块划分、责任到人。
3总结
篇5
关键词:C语言程序设计,实例教学,语法
《C语言程序设计》是程序设计的基础课程,在多数高校中,已经把它作为一门必修的课程,同时,C语言程序没计也是全国计算机等级考试二级语言考试科目。C语言具有非常重要的地位。因此,改善教学方法,提高教学质量至关重要。下面,从几个方面谈谈C语言教学。
1. 明确教学目的,合理安排教学大纲和学时
我校为二类本科学校,为非计算机专业大一学生开设C语言课程,旨在让学生拓宽思维方式,培养学生具有设计程序的能力。为二级考试和本专业的后继课程打下良好的基础。
我校《C语言程序设计》授课学时为32学时,实验学时为16学时,教学以基础知识,语句,数组和函数四部分为主体进行详细讲解和练习,指针做基础介绍和了解内容,能够适应学生的特点,达到较好的教学效果。
2. 明确学生学习目的,激发学生的学习兴趣和热情
通过几个生动的实例如,学生成绩管理系统,数据进行排序,汉诺塔,八皇后问题等,让学生明白,学习完C语言,我就可以进行程序设计了。明确学生学习目的。
3. 加强实例教学,在实例中学习语法
对于非计算机专业同学而言,大量的语法很容易使一部分甚至是大部分学生产生枯燥无味的感觉,很快对这门课程失去信心。为了保持学生对这门课程的兴趣,采用趣味程序的例子进行教学,从而在实例中掌握 C 语言的语法。这种方法的优点是可以根据教学内容,选择合适的例子,以实例为主体,语法为补充,使学生掌握所学内容,在应用中强化语法。经常选用的实例有,华氏温度和摄氏温度的转换,分段函数的计算,阶梯电价,贷款计算,自动售货机价格查询,求三角形面积,利用格里高利公式求圆周率,验证哥德巴赫猜想等。在每个实例的基础上,对学生多提问,并进行扩展,以复习前面学过的知识,也可以巩固当前学习的内容。通过启发式教学,让学生做更多的练习,加深对语法和程序设计方法的理解,掌握课程的精髓。再辅以实验课,教学效果比较显著。
4. 多媒体教学与传统教学方法相结合
随堂编程能够起到非常好的教学效果。教师先引导学生思考如何去编写例题中的程序,然后按学生的思路编程,也可以让学生上讲台来直接实现编程。当场编译运行,比如两个数交换,学生一般会直接进行a=b,b=a,程序结果就会令学生大吃一惊。然后再通过举例如何把一瓶啤酒和一瓶可乐里的液体反装,再进一步编程,学生又恍然大悟。这种方法能够拓展学生的想象空间,激发学生的学习热情。教师也可以在一些编程讲解中,加入一些预先设计好的学生最容易犯的小错误,
向实验课要效率
上机实验这一环节必不可少。教师应该注重够提高学生的积极性,使实验课更有效率。
首先应精心设计上机实验内容,把实验内容和课堂所讲知识有机结合起来,加强学生对知识的理解和消化。每次两学时的实验课,一学时以验证性实验为主,理解消化语法,增强学生信心。一学时以编程为主,教师设计实验题目,内容兼具趣味性和实用性,让学生先对题目感兴趣,再对编程感兴趣。把学生从被动学习逐渐转变为主动学习,让学生从成就中出效率。
其次,要求学生课前写好预习报告,课后完成实验报告,实验课堂随机提问,保证实验课质量。在学生有问题时,看清问题原因,不直接给出正确答案,给学生一定提示,启发学生独立思考。
5. 结束语
要教好C语言,关键在于激发学生的学习兴趣,使学生积极主动、愉快地学。除了讲授语法,更要讲授如何去应用语法。在授课过程中开发学生的创造性思维,使学生具备自主学习的能力。
参考文献
何钦铭,颜晖.C语言程序设计[M].高等教育出版社,2008.
篇6
关键词:计算思维;VFP程序设计;计算机基础教育
中图分类号:G642 文献标识码:A 文章编号:1009-3044(2014)06-1271-02
目前,计算思维是计算机界关注的一个热点。自2010年7月,九校联盟(C9)西安会议提出计算机基础教学的核心任务是计算思维能力的培养以来,国内多所高校围绕计算思维与计算机基础教学改革进行了深入的研究和实践,发表了一些计算思维研究和实践方面的论文。在新的形势下,如何在大学计算机基础教学中,培养学生在各自专业领域中应用计算机和计算思维解决实际问题的能力,对于提高学生的创新能力和信息素养都具有重要的意义。
1 计算思维
计算思维是美国卡内基梅.隆大学计算机系主任周以真(Jeannette M. Wing)教授提出的。周教授认为:计算思维 ( Computational Thinking )是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为,其本质是抽象和自动化。
计算思维是数学思维、逻辑思维和工程思维的综合,是与阅读能力、写作能力和算术思维并列的第四种能力,能够提升人类的能力。就像识字、做算术一样,是人人都必须具备的思维方式。
2 VFP程序设计教学现状分析
Visual FoxPro(简称VFP)课程是面向高等学校非计算机专业学生开设的计算机基础教育课程。VFP作为计算机程序设计的一门基础课程,应注重学以致用。学习的重点不只是编写程序,而是学习算法思想与问题求解的思路,增强学生计算思维能力的培养。
但是,从目前VFP程序设计教学,尤其是非计算机专业现状来看,普遍存在以下问题。
2.1 课程学时少
随着计算机技术内容的不断更新,以及信息技术在中小学的普及,在新的形势背景下,计算机基础教学面临着新的挑战。人们对计算机基础教学产生了片面的认识。认为“计算机会用即可”、“计算机即编程”,造成学时被压缩,资源得不到充分的配置和利用。就我校的计算机基础教学改革来看,“大基”的学时由64变成32,时间压缩了一半,学生计算机基础水平有待提高。
VFP的教学课时相对“大基”课时虽然要多些,但对于非计算机专业的学生来说,计算机语言底子更是薄弱,想在短期内掌握一门计算机语言,十分不易。对于授课教师而言,既要完成教学目标,又要学生掌握计算机语言使用方法,并且在教学中形成学生的计算思维能力是非常困难的事情。
2.2 以语言知识为主,偏理论,轻实践
在实际教学中,很多老师以语言知识为主线,详细介绍语法规则等细节内容,上机操作多以验证为主,偏重考试内容而不是编程,这和课程的教学目的是相悖的。导致学生学习积极性不高,感到枯燥,学的不牢,编程能力和分析解决实际问题的能力没有得到提高,更谈不上运用计算机解决专业问题。
3 以培养计算思维为核心的VFP程序设计教学方法
3.1 以计算思维为主线,改进教学内容和教学方法
计算思维养成以计算能力的培养为基础,对教学内容的改革,不是完全改变原有的课程内容,而是内容的再组织与优化,突出核心内容和方法。
教师在上第一节课时可以介绍一个完整的系统,比如学生信息管理系统。在演示过程中告知学生,每项功能可由哪些知识实现,让学生对本门课程有一个系统开发的概念。并了解VFP数据库管理系统在各个领域的应用。学习本门课程的目的,不是为了顺利通过考试,而是能够独立开发一个完整的系统,并能解决自己的专业问题。
在实际的教学中,以培养学生计算思维能力为核心任务,采用“任务驱动”和“案例教学”的方法,针对不同的专业和不同层次的学生设计教学任务。按照“提出问题—分析问题—寻找解决问题的方法—介绍解决问题的方法和知识—方法和知识推广—课后作业和拓展”的教学片段设计思路,对学生进行计算思维的实践。
3.2 注重程序设计思想和算法训练
计算思维的本质是抽象和自动化。在教学过程中,可将相同或相近的知识点整合,设计相应教学任务,让学生了解程序设计思想和程序设计过程。如求解方程、求阶层等任务,可先让学生用数学方法来求解,再引导学生用抽象的计算机语言来实现。
启发学生利用多种技术、多种算法解决同一问题,围绕问题求解和设计能力培养。例如求解“1+2+3+……+100”,可分别考虑用for循环、while循环来实现。采用有趣的案例,比如“猜数游戏”,“幸运7”,“测试体重”等,用多种思路设计与多种编程方法实现。
3.3 以上机实践为重点
VFP是实践操作性很强的一门课程,学生只有亲自动手编写代码,调试程序,才能掌握和理解所学的知识,了解编程的思路和方法,训练思维能力。对此,教学过程中可以考虑以下方法:
3.3.1 设计合理的实验内容
由于实践课时限制,学生练习时间较少,首先要使学生熟练掌握基本的语言知识,具备基本的编程和调试能力,才能逐步引导深入。实验内容包含主要重点内容,难度适中,有一些让学生发挥的余地,在书上能找到所有知识点和类似代码,但又不是完整的照抄,有助培养学生的设计能力。
3.3.2 实验任务具有趣味性和综合性
通过实验任务的趣味性、综合性等来增强实验内容的难度,从而强化计算思维训练。如在“幸运7”游戏案例中,把一些枯燥和不易理解的知识,变成有趣的游戏。不仅让学生理解面向对象程序设计的相关概念,并对应用程序的开发流程有了一个综合的认识。通过拓展知识,让学生实现多位数的幸运数字游戏设计。通过反复训练,以提升学生计算思维能力。
3.3.3 安排课程设计实验
在程序设计课程的最后环节,安排课程设计。或结合实例,完成一个项目。为学生提供一个全面考查学生水平的机会,对所学知识进行融会贯通。
4 结束语
计算思维的教育,是一种普适教育,对任何类型的学生都需要培养。什么是计算思维,如何去理解它,每一位教师都应该充分地认识到它的重要性。只有改变了教师的意识,才能把计算思维的培养贯彻到自己的教学中,才能培养学生的研究创新能力,提高学生的信息素养。面向计算思维的计算机基础教学改革任重而道远,还需要不断的探索和改革。
参考文献:
[1] 何钦铭.计算机基础教学的核心任务是计算思维能力的培养[J].中国大学教学,2010(9).
[2] 李丽新.任务驱动教学法在Visual FoxPro程序设计课程教学中的应用[J].吉林建筑工程学院学报,2011(6):75-77.
篇7
非计算机专业 学习潜能 学习兴趣 创新
众所周知,全国计算机等级考试二级考试中之一就是C语言,而且随着时代的发展,在许多高校中除了计算机专业开设C语言课程外,对于非计算机专业也开设了这门课,C语言的教学是计算机教学中的重点和难点,能够体现学生的逻辑思维能力和推导能力,提高学生的分析问题和解决问题的能力。那么对于计算机专业的学生都感到学习有难度的课程,对于非计算机专业的学生应该如何讲课才能让学生爱学并去轻松掌握知识呢,以下是笔者的一些见解。
一、激发学生学习兴趣
很多学生认为C语言这门课难学,对于非计算机专业没有什么用处,学习没有动力,这些问题不容回避。所以在讲课开始时应该让学生明确学习C语言的重要性和实用性:C语言在高级语言中有着举足轻重的作用,与C++、C#、VC关系极为密切,可以开发学生的逻辑思维并提高其推导能力为学习其专业课程打下良好的基础。通过学习程序设计,学会进一步了解计算机的工作原理,更好地理解和应用计算机;掌握用计算机处理问题的方法;培养分析问题和解决问题的能力;具有编制程序的初步能力。即使将来不是计算机专业人员,由于学过程序设计,理解软件生产的特点和生产过程,就能与程序开发人员更好地沟通与合作,开展本领域中的计算机应用,开发与本领域有关的应用程序。另外在讲课的时候可以用学生比较熟悉,比较感兴趣的问题去讲解内容。比如说,讲课的时候把函数的首部比作人的“头”,把函数的函数体比作人的“身体”,学生就比较容易接受。再有讲解经典实例——Fibonacci数列时,引用“兔子的繁殖问题”,学生就比较感兴趣,从而喜欢学了。还可以在学一个新的知识体系前,用这些新知识设计一些可以吸引学生的实际例子。比如,在讲授选择和循环结构时,可以让学生做一个“猜数”游戏,学生觉得有趣,听课的兴趣明显提高。学生对C 语言课感兴趣了,学起来就有了动力,教起来才能事半功倍。实践表明,在学习C语言的过程中有的学生反映学习C语言比学习计算机基础要简单,可见激发学生的学习兴趣是多么的重要。
二、激发学生学习的潜能
在教学过程中,通过各种教学方式和手段激发学生的学习欲望,使其积极投入到学习活动中,发现问题,提出问题,并逐步解决问题。例如,在讲解实例时,不是简单地给出程序清单,而是从分析问题入手,找出解决问题的方法,再给出算法,最后编写出完整的程序,经过编译、链接、运行从而得出最后的结果。而在这一过程中,较关键的是每一步都采用与学生一起探讨的方式,让学生在启发下思考,在思考中解决问题,也让其在解题过程中体验到自己的成功感受,从而掌握独立分析问题、解决问题的方法。为培养学生综合应用知识的能力,通过对完整的项目的系统分析,培养学生良好的编程习惯,善于获取他人经验的能力以及掌握综合运用所学知识的能力,从而真正提高编程水平。
三、培养学生的算法思想
C语言教学的目的,不仅要使学生掌握语言的基本规则,更要切实提高其编程解决实际问题的能力和实现算法的能力。在学习C语言这门课的过程中,算法的培养尤为重要,算法即为了解决某一个特定的问题而采取的方法或步骤。算法是灵魂,不掌握算法就是无米之炊。因为程序代码的编写过程实际上就是将事先的求解思路用C语言的语句来加以实现的过程。没有求解思路,那么得到的肯定是一个错综混乱的程序代码。所以正确的求解思路就是必要的,如果求解思路不正确,那么必将得到一个错误的程序,所有的一切必将付之东流。所以在讲C程序语言课时一定要强调算法思想,并且贯穿整个讲课的始终。
四、培养学生的创新意识
C语言是一门理论加实践的课,只有满腹经纶,不能解决实际问题,必须上机实践,只有通过上机操作让学生将书写的程序代码上机运行调试并得到预期的结果才算真正解决问题,才算是真正掌握了一门技巧,也才能使学生真正理解、真正消化课堂上的理论知识,因此要以应用、实践为目的,注重培养应用能力,大力加强实践环节,激励学生创新意识。教学中坚持上机实验课与理论教学课相结合,使上机实验与理论教学协调同步,特别是时间、内容上要衔接好,讲完课要及时上机并保证上机效果,需要特别强调的是,要先讲课后实践,而且两者相隔时间不能太长,时间长学生早已把课上听到的内容忘记,所以要及时上机实践,多实践是学习掌握C语言的必经之路。对于同一个问题,可以让学生分组进行思考,让其考虑不同的方法来解决,最后通过讲解评比,让学生互补所长,互补所学,从而提高了学生的学习动力,培养了学生的创新意识。
五、运用丰富的教学方法
为了让学生更好地学习好C语言,培养学生逻辑思维和创新能力,在教学过程中,要通过各种教学方式和手段激发学生的学习欲望,使其积极投入到学习活动中。例如,在讲解程序设计举例时,不是简单地给出程序清单,而是从分析问题入手,继而找出解决问题的方法,再给出算法,最后编写出完整的程序,编译、链接、运行到测试的整个过程,特别是调试中增加输出,变难为易,环环紧扣。而在这一过程中,较关键的是每一步都采用与学生一起探讨的方式,让学生在启发下思考,在思考中解决问题,从而掌握独立分析问题、解决问题的方法。而对于比较简单的问题,我们可以提出问题,以学生独立完成为主,教师只提供必要的辅导,培养学生探索问题和解决问题的能力,更有利于创新能力的培养,也充分调动了学生学习的主动性和积极性。
再有,充分合理地利用多媒体课件,也可以达到事半功倍的效果:课件上要合理选择教学内容,制作要突出中心,避免从书本上摘抄大量文字或图片。课件中可适当加入Flas等,吸引学生注意力,让学生对课件上的内容产生兴趣,有利于知识的掌握。
总之,我们在非计算机专业不仅要开C语言课,而且还要把它上好,通过讲解这门课让学生掌握求解问题的方法,锻炼学生的各种思维,不仅让他们在学习上有收获,而且在处理问题、解决问题上也是受益匪浅。
参考文献:
[1]谭浩强.C程序设计(第三版)[M].北京:清华大学出版社,2010.
[2]谭浩强.C程序设计(第四版)[M].北京:清华大学出版社,2005.
[3]张海玉.C 语言程序设计教学方法探析[J].太原:财政税务专科学校学报,2006,(8):72- 74.
篇8
关键词: 高校非计算机专业 《C语言程序设计》 问题 解决方法
1.课程教学现状
由于《C语言程序设计》这门课进入我国高校非计算机专业课堂的时间并不很长,而且在学校里往往又是年轻教师授课,教学经验不够丰富,《C语言程序设计》本身涉及的知识面又较广,因此在实际教学过程中往往教学效果不是很理想。我也在教学过程和课后调查中发现许多学生存在这样一种情况:理论课能听懂,到了实践课却不能理解程序含义;当时学习当时有效果,过后很快遗忘;课程学习完成后,依然只会输入课本例程调试运行,设计性、创造性能力不足等现象。我对以上几个问题加以分析,并提出自己的几点看法。
2.问题分析
2.1关于理论清楚、实践茫然的问题。
由于学习《C语言程序设计》课程的学生都是刚学习完《大学计算机基础》的大一学生,经过一个学期的学习,他们的计算机能力只是刚刚进入了解计算机的最基础层次,一般学生还不能形成一个完整计算机系统的逻辑模型,对于学习《C语言程序设计》课程的许多概念,例如:内存地址、I/O接口、数据的存储和编码等还没有足够的认识。然而《C语言程序设计》又是一门既包含了高级程序设计语言特点,又包含了低级程序设计语言特点的课程,也就是说《C语言程序设计》课程的理论知识渗透到计算机学科知识体系的多个层次和方面,像计算机体系结构,数据结构,等等。但是学生恰恰缺乏这方面的知识,这就要求教师必须从不同层次、不同角度来讲授《C语言程序设计》这门课程,并且在每个知识点都找到合适的切入点。正是由于《C语言程序设计》这门课程涉及的知识面广,因此对于学生来说,要想学好《C语言程序设计》这门课程,就需要有经验丰富的教师的正确引导,否则就只能是在课堂上什么程序都能看懂,一到编译环境中,就手足无措。再加上学生计算机英语水平有限,不能很好地看懂编译错误提示信息,缺乏修改错误的经验和技巧,这就造成了理论与实践的脱节,严重影响了教学效果。
2.2关于教学效果不持久的问题。
C语言作为一种计算机语言,具有运算符丰富、数据结构丰富、语法限制不太严格、程序设计自由度大等优点。正是这些优点使得C语言语言简洁、紧凑,使用方便、灵活。但又是由于这些优点,造成C语言需要记忆的内容较多,学习起来不容易上手。学生在开始学习C语言的过程中,也不能一下子体会到C语言的这些优点,反而很容易会认为C语言很复杂,很难学,一旦学生先入为主地有了这个看法,就会产生畏惧心理,造成学生学习C语言不认真,前学后忘的情况。所以教师在教授《C语言程序设计》这门课程的时候,要注意如何去激发学生的学习兴趣。大一的学生求知欲是很强的,虽然在初学《C语言程序设计》这门课程的时候不一定就对此门课程感兴趣,但这只是直接兴趣。在教师的引导下,学生能感觉到这门课程的重要性,可能对自己今后的学习或者工作产生帮助,他也会产生强烈的学习兴趣,不过这时候的兴趣已经成为了一种对学习结果看重的间接兴趣。不管是直接兴趣还是间接兴趣,都可以激发学生对C语言的求知欲,使得学习起来事半功倍。
2.3学生创新能力不足的问题。
我在实际教学中发现,很多学生在学习了一段时间的C语言后,拿起书本,也能正确地输入程序,调试运行。但是如果让他脱离课本,随便出一个课本以外的题目,他就感觉到无从下手,好像什么都不会了。这就说明我们在课堂教授的知识是死的,学生学习之后只是知其然,而不知其所以然,一遇到新问题,或者现实问题,往往缺乏描述问题、分析问题、解决问题的能力。尽管经过很长时间的学习,学生还是没有把课本上的知识变成自己的知识,还不能活学活用。教师也往往不能注意到这一点,虽然很用心地准备,很用心地讲授,学生也很用心地学习,但就是不能取得良好的教学效果。这里所说的创新能力并不是说让学生学习完这门课程之后,什么C程序都能编写,而是要注重培养学生的分析问题、解决问题的能力。这是因为《C语言程序设计》这门课程的目标定位就是让学生通过学习这门课程之后能懂得结构化程序的设计思想;能让学生掌握计算机软硬件的基本知识;能培养学生使用计算机分析问题、解决问题的方法和意识,为学生将来从事相关专业领域的计算机应用和开发设计打下一个坚实的基础。这几点一定要在我们的教学过程中体现出来,也要让学生明白学完这门课程就想编写出高水品的程序是不现实的,但是通过学习《C语言程序设计》应该掌握一种规范的解决问题的方法,在遇到新问题时,就要有意识地运用学到的知识去分析解决。
3.解决方法
3.1找准教学切入点,加强实践环节。
教师在课堂上讲授课程的时候为了取得良好教学效果,往往总是不厌其烦地反复讲解程序,期望学生能够听懂、学会。实际上这个时候学生往往真正听明白的只是教师用自己的语言翻译过的程序。例如整型变量与字符型变量通用的问题,学生知道是可以通用的,却往往不知道为什么,到了实践环节使用时,不是忘记了,就是出错。所以教师在讲授这个问题的时候就必须从根本出发,复习、补充像存储单位、ASCII码、整数的编码等基础知识,要让学生站在计算机的角度上看待整型变量和字符型变量。这其实就是一个教学切入点的问题。另外教师在学生的实践环节中,也要注意帮助学生自己解决调试程序中出现的问题,而不是学生程序有了问题,简单地一改正,只要运行正确就行,而是应该仔细地向学生说明为什么会出错,出错的情况下,编译环境会怎么反映,以及怎么根据错误提示来解决这个问题。对于具有普遍性的问题,教师还应集中讲解,这样才能达到比较良好的教学效果。
3.2注意教学方式,激发学生学习兴趣。
学生学习任何课程时都存在一个学习兴趣的问题,如果是对一门课程的学习过程本身感兴趣,这是一种直接兴趣;如果是对学习的结果感兴趣,对这门课程的重要性而感兴趣就是间接兴趣。对于《C语言程序设计》这样一门普遍让学生感到枯燥、难懂的课程,想让学生对之感兴趣,是有一定困难的。但是针对学生求知欲强这一客观特点,教师可以采用一些方法来调动学生的学习积极性。教师在上课的时候,应该强调这门课程的重要性,要举例说明C语言在实际工程中的应用,还应该给学生演示一些C语言编写的图形应用程序,像用C语言解决五子棋、汉诺塔等趣味问题。特别是要根据学习进度,给出一些超前一点的程序题目让学生课后完成。这样让学生感到学有所用,开始是被动地学习,是为了完成学习任务的学习,最后在不断的练习、应用中转变成自发地、主动地学习,让对C语言不感兴趣的学生渐渐地产生兴趣,让间接兴趣变为直接兴趣。
3.3注意引导学生,培养学生主动分析问题、解决问题能力。
现在的高中还是以应试教育为主,学生毕业时基本没有程序语言设计基础,加之这种应试教育使得许多学生习惯于那种死记硬背的学习方法,对于程序语言设计这种特别需要独立分析问题、解决问题的能力的课程极不适应 。这就要求教师在授课的过程中循序渐进,慢慢培养学生的这种能力,注意在课堂上多问为什么,让学生跟随教师的引导,主动去思考,渐渐地培养出学生拿到一个问题就能独立分析,独立解决的能力。例如在for语句的学习中,学生对两层循环及多层循环特别难以弄清,主要因为在两层循环及多层循环中,变量的变化过程比较复杂,学生缺乏一定的逻辑思维能力去推算整个变量变化的过程。这个时候我们就要在黑板上一步一步地推出变量是怎么变化的,外层变量是怎么控制内层变量的。虽然这样可能花费的时间稍多,但是为了培养学生分析问题的能力,绝对值得。
4.结语
学好C语言是需要一个较漫长的过程的,仅凭上课的时间远远不够。只要我们在教学过程中找好切入点,深入浅出,抓住学生的学习兴趣,培养出学生的自学能力,让学生感觉到学习C语言的乐趣,感觉到C语言的实用性,学生就能利用课余时间,自发地、有目的地学习。这样,通过教师的讲授与学生的自学相结合,就能达到C语言课的教学目标,取得一个良好的教学效果。
参考文献:
[1]谭浩强.C语言程序设计(第三版)[M].北京:清华大学出版社,2005.
篇9
中图分类号:G642
1 程序设计语言类课程的教学现状及问题
计算机学科知识结构更新快,其中,程序设计语言在短短的几十年间经历了较大变化。语言类课程是计算机学科的专业基础课程,其学习效果直接影响其他后续课程。当前语言类课程教学主要面临以下问题。
1.1 课程体系设置单一
国内高校计算机专业的程序设计语言类课程大多是过程式或者面向对象的命令式编程语言,课程体系设置单一。不可否认,这类语言无论是从学科性还是有用性上讲,都是合适的。然而,程序设计语言不仅仅是这类命令式语言,它还包括如ML、Haskell这样经典的函数式编程语言,或者如兼顾面向对象和函数式的Scala语言等。从某种意义上讲,函数式编程能够更大程度地锻炼计算思维[1]。在多核并行程序设计已经被推到前沿的今天,命令式编程语言天生的缺陷使得构造并行编程模型变得非常复杂,而函数式编程在经历数十年的发展之后,终于不再局限于实验室的理论研究。事实上,如果不懂得函数式编程,Google不可能创造出MapReduce。
1.2 教学过程僵化
程序设计语言类课程的传统讲授是按照编程语言类教材的典型撰写次序,先讲常量、变量、数据类型等,再讲表达式、语句等,再比较复杂的语言特点,这些花费了较多时间,最后可能不再有多余的时间剖析该语言的内建库函数或者类,更少涉及该门课程与后续课程的衔接关系。这种传统的讲授方式针对第一门程序设计语言课程的教学,特别对那些没有接触过编程语言的学生来讲,可能是一种较好的方式[2]。然而,对于第二门程序设计语言的授课,按照这种按部就班的教学过程推进教学进度时,由于在较长一段教学活动中所讲授的都是孤立的语法点,学生看不到一个较为完整的应用实例,也不了解这门课程与其他课程之间的贯通,容易产生厌学的心理,也很难体会程序语言的设计艺术。
1.3 重编程技能,轻计算思维
针对程序设计语言类课程实践性特别强的特点,许多教改措施都是针对如何提高学生的工程应用实践技能的[2-3],如采用案例化、任务驱动、项目驱动等方式。编程技术固然重要,然而计算思维比单纯技术更加重要。培养学生以计算机的方式进行思考和解决问题,让他们认识到程序是思想的表现形式,最终能够通过语言来表达思考与设计,并能理解这门语言设计和实现的长处、不足、限制等。为了达到这个目标,需要引导学生深入理解编程语言本身。
2 教学改革措施
2.1 增设函数式编程语言课程
函数式编程模型早在面向对象概念出现之前就已经存在了,它的核心是lambda演算。由于其语法不如命令式语言的语法直观易懂,许多初次接触函数式编程的人常常不知所措,会觉得难以理解。然而,这种难以理解性与熟悉程度相关。近20年的课程改革中,因为种种原因,程序设计语言类课程体系几乎完全抛弃了函数式程序设计语言。如今,多核时代的兴起,函数式程序代码的简洁性使得它在并发应用领域绽放光彩。虽然实用性是我们应当考虑的一个方面,但是从培养学生计算思维以及从编程语言本身的研究方面,增设函数式编程语言课程是很有必要的。
常用的函数式编程语言或者具备函数式编程语言特点的编程语言包括Haskell、ML、OCaml 、Scala等。依据需要可以选择不同的函数式编程语言:如果倾向于编程语言本身的理解,可以选择纯函数式的ML、Haskell,或者OCaml;如果倾向于并行分布式程序的开发,可以选择结合了面向对象和函数式特点的Scala语言,它兼容Java。此外,Java 8的lambda表达式也是一个不错的学习函数式编程的选择。
2.2 适当调整讲授内容的次序
以Java程序设计语言的教学为例,按照常规教材的编写次序,Java的教学内容通常是先讲变量、类型、表达式和语句,然后是数组,接着是类和对象、继承等。在实践中我们对讲授内容的次序进行了调整:在对Java语言作了初步介绍之后,紧接着讲解对象的创建和使用,见表1。表1第2行的内容不再放在讲解了类的定义之后。这个调整出于两方面的考虑:一方面,让学生尽快建立对象的概念,知道怎么使用对象;另一方面,数组在Java程序设计语言中视为对象,因此,讲解了如何使用对象之后有利于数组的讲解。而类的定义涉及较多语法知识,在讲解了如何使用对象、变量、类型、表达式和语句之后,引导学生考虑这个问题――我们能不能按照自己的设计来创建对象呢,于是开始讲解类的定义,见表1第5行。
为了讲解如何使用对象,首先选择两个常用的Java内建类――字符串String和System,针对已经学习了C语言程序设计的学生,从教学效果上看,尽管学生还没有接触到Java的各种语法规则,但是他们仍然接受了“对象”这个知识点的讲授。更重要的是,他们建立了对象的初步印象,了解了Java与C的不同,并在一定程度上激发了学生的学习兴趣。
由于Java程序需要使用标准输出流的方法System.out.print()用于输出程序的运行结果,学生就问:Java程序怎么输入呢?此时,对输入输出流进行较为完整的讲解显然不合适,在讲解使用对象时,我们进一步讲解如何使用Java的字符缓冲输入流类BufferedReader,直接给出如下板书:
BufferedReader br = new BufferedReader(
//BufferedReader需要一个Reader类型的参数
//InputStreamReader就是一个Reader
new InputStreamReader(
//InputStreamReader需要一个InputStream类型的参//数,System.in就是一个InputStream
System.in));// System.in用于接受键盘的输入
br.readLine(); //BufferedReader的readLine
//方法读入一行
以上这段代码稍显复杂,学生在课余可以仔细研究并进行试验。实践表明,这些Java常用内建类的使用在教学初期给出时,不但没有造成学生的困惑和畏惧,反而提升了学生的学习热情。
2.3 引导学生深入理解程序设计语言
程序?O计语言类课程对于培养学生的计算思维非常重要,需要学生深入理解程序设计语言本身的设计与实现,而不仅仅是学习单纯的语法。
通常学生因其视野的局限性和课时的限制,无法深入学习一门程序设计语言。教师在授课时应该找机会引导学生去深入理解。通常,语言设计和实现者提供了API文档和源码,这些是深入理解一门编程语言最直接也是非常好的参考资料。如果学生能够养成查看API的习惯,无疑能够促进对语言的认识和理解。以引用类型变量的讲解为例,假设变量p引用的是一个Person类型的对象,变量s引用的是一个String字符串对象。System.out.print(p)输出结果是代表对象地址的哈希码,而System.out.print(s)输出了一个字符串。这是为什么呢?同时,有学生就会提出疑问:System.out.print(p)是否可以直接输出p所引用的Person对象的成员值,如姓名和年龄等,而System.out.print(s)是否可以输出这个字符串对象的地址哈希值?在这个过程中,可以引导学生逐步查找对应的API,如图1所示。最后可以进一步查看Object类和String类对应方法的实现源码。知道了这个思路后,学生豁然开朗,开始着手解决问题。
在教学实践中,我们常常鼓励学生按照这种方法去找解决思路,而不是直接给出答案。得益于Java的开源,在Java程序设计语言的教学活动中,我们也鼓励学生查看javac编译器或者JVM的即时编译器的实现源码。学生通过这种学习方式,在长期使用一门程序设计语言后,最终能够驾驭语言,表达类似计算机方式的思考与设计。
篇10
计算机科学与技术本科生的基本学科能力可以归纳为计算思维能力、算法设计与分析能力、程序设计论文与实现能力、系统能力[1]。其中计算思维能力是指模型化、抽象思维能力、逻辑思维能力。系统能力是指计算机系统的认知、分析、开发与应用能力,也就是要站在系统的观点上去分析和解决问题,追求问题的系统求解,而不是被局部的实现所困扰。算法设计与分析能力、程序设计能力是计算机类专业学生应该具备的基本能力之一,是从抽象思维到具体应用方法的转换,涉及到阅读判断、思考分析、抽象综合、表达创造等多项能力,对计算机专业高素质人才的培养不可或缺。
从目前社会对计算机专业人才的需求来看,高校在培养学生的程序设计、算法设计与分析能力上所作出的努力还远远不够。本文探讨了计算机专业学生在程序设计、算法设计与分析方面存在的主要问题,给出了在课程与实践中提高学生的程序设计、算法设计与分析能力的具体措施。
1 现状与问题分析
近年来,企事业用人单位较普遍的反映是计算机类毕业生的实际应用知识、动手能力和程序设计开发经验严重不足,尤其是程序设计能力、算法设计与分析能力无法达到用人单位的要求。这不仅影响学生就业,更阻碍了其进一步发展与自我提升。
我们归纳了问题的主要原因。一是学生对于有关程序设计及算法的知识仅仅停留在了解的程度上,未能融汇贯通,进而应用这些知识解决实际问题。二是教师在讲解程序设计、算法设计与分析的相关知识时,并没有将理论与实际有机的结合。三是实际教学过程中并未对学生进行真正的软件项目开发训练。四是对第一门程序设计课程的教学不够重视。五是学生的数学基础差、逻辑思维能力弱,阻碍了学生进一步设计算法和分析算法。
2 程序设计、算法设计与分析能力培养的具体措施
教育教学工作应该以学生为主体,同时充分发挥教师的引领、指导作用,二者有机结合,才能充分调动学生的学习积极性和主动性,从而达到最佳的教学效果。因此本文以“学生为主体,教师为主导”这一思想为指导,结合本校的实际情况,以及教师在教育教学工作过程中遇到的问题和广大学生的反馈,从以下四个方面探讨教育教学改革的措施。
2.1 调整课程设置和教学目标
用计算机求解一个实际问题,首先要从这个实际问题中抽象出一个数学模型,然后设计一个解此数学模型的算法,最后根据算法编写程序,以便调试、编译、连接和运行,从而形成该问题的解。从实际问题中抽象出一个数学模型的实质,其实就是要用数学方法抽取其主要的、本质的内容,最终实现对该问题的正确认识。设计出解决问题的算法后,要清楚地知道算法的优劣处,如果是好的算法则不必对其怀疑而再浪费时间进行研究;如果不是好算法则应再进行改进。而如何知道算法的优劣,则需要学会分析算法。算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。编程就是设计程序,用计算机来解决问题。
与数据结构和算法设计相关的课程较多,其中三分之二以上的专业课都需要学习编程,主要是提高学生编程能力和算法分析能力。对于本科生来说,这些课程的重要性是不言而喻的。如果掌握不好则会阻碍他们对编程能力乃至对计算机系统的认识和理解。因此,应该从课程的意义出发,以提高学生的编程能力和算法设计与分析能力为目标,结合计算机专业的特点与教学实际情况,将“C语言程序设计”、“面向对象程序设计”、“离散数学”、“数据结构”、“算法设计与分析”、“网络编程”、“Windows编程技术”、“操作系统”、“计算机网络”、“编译原理”和“数据库技术”等几门课程有机地结合起来,并充分利用它们内在的联系优化授课的顺序与内容,为学生提供一套以编程能力和算法设计与分析能力为中心的教学体系,为学好相应的课程打下坚实基础[2]。
“C语言程序设计”和“离散数学”作为计算机专业学生较早接触的两门课程,应该为后续专业课的学习打好基础。C语言是学生在大学接触的第一门编程语言,教学中应该重点介绍程序设计思想,并培养学生的逻辑思维能力、抽象能力、编程习惯,而不是一味地强调C语言的语法特性。同时,“C语言程序设计”这门课也为后续的数据结构、算法设计与分析课程做好实践上的铺垫。“离散数学”的概念、理论及方法应用于计算机科学与技术的诸多领域,并大量出现在“数据结构”、“数据库系统”、“编译原理”、“算法设计与分析”、“计算机网络”等专业课程中。此外,离散数学所提供的训练十分有益于学生的逻辑推理、抽象概括及归纳构造能力的提高,十分有益于培养学生严谨、完善、规范的科学态度。
通过“数据结构”课程,使学生了解数据对象的特性,学会数据组织的方法,以及各种类型数据的处理方法,同时培养学生良好的程序设计技能。“算法设计与分析”课程重点讲授分治法、贪心法、动态规划、回溯法、分支限界法,培养学生分析问题和解决问题的能力,使学生掌握算法设计的基本方法,熟悉算法分析的基本技术,并能熟练运用一些常用算法。“操作系统”、“计算机网络”、“编译原理”和“数据库技术”都是对前面学习到的一些基本的数据结构和算法的具体应用,再加上一些相关领域的专业知识。
在“操作系统”教学中,让学生了解操作系统的一些基本概念,如:进程和线程、虚拟内存、死锁等,并按操作系统的五大功能分模块进行介绍。通过相应实验帮助学生理解重要概念,如通过实现“银行家算法”让学生明白进程间的通信过程、模拟LRU算法了解页面如何置换,通过实验使学生更加深刻地理解有关概念[3]。对于“编译原理”这门课,由于其理论性较强,在教学过程中应该尽量多与实验相结合,在课堂上比较难理解的内容,例如词法分析中的有限自动机内容或语法分析中LL(1)文法的理解等等,都可以通过与实验结合来促进对课堂内容的理解,可通过完成词法分析器的实验了解编译器如何把输入的源程序转化为单词符号串。
2.2 加强实验性课程教学
计算机专业相关的课程总体来说理论性比较强[4-5],开设实验性课程有利于学生通过自己的实际操作加深对课堂知识的理解,同时强化编程能力、算法设计能力和创新能力。许多课程都有上机编程实验内容,如“C语言程序设计”、“面向对象程序设计”、“数据结构”、“算法设计与分析”、“Java程序设计”、“操作系统”等课程,都要求学生完成一定数量的设计性,完成验证性实验。我们设立了工程与学术实践、计算机软件课程设计、独立实验课程以及毕业设计等实训科目,坚持编程实践四年不间断。
实验贯穿于理论、抽象和设计过程;实验对软件的设计和实现、测试原理和方法起示范作用;实验不仅是对理论的验证,也是技术训练和能力培养,包括动手能力、分析问题解决问题能力、表达能力、写作能力等。教学活动是教师和学生不断交流的过程,实验是实现这个过程的桥梁,可以弥补课堂教学的不足,加深对理论过程的理解,启发学生深入思考,敢于创新,理论联系实际。
例如“编译原理”课程是计算机类专业的一门重要专业课。设置该课程是让学生学习编译系统的结构、工作流程及编译程序各组成部分的设计原理和实现技术,使学生通过学习既掌握编译理论和方法基本知识,也具有设计、实现、分析和维护编译程序等方面的初步能力。编译原理是一门理论性和实践性都比较强的课程。实验的目的是加深学生对课堂知识的理解,掌握几个主要编译阶段的处理方法,增强实践能力,能完成初步设计、编制和调试编译系统。
实验一词法分析器构造,通过对给定源语言词法分析程序的设计,加深对词法分析原理的理解,掌握源语言的接受、存贮、预处理和扫描分析,生成正确的单词符号串二元式序列。实验二语法分析器构造,借助于词法分析程序提供的分析结果,编写一个算符优先语法分析程序,程序能进行语法结构分析和错误检查并产生相应的归约信息。同时给出出错信息和错误类型,从而加深对语法分析的理解。进一步设计实现球类描述语言词法分析、语法分析实验(扩展实验),根据球类比赛技战术分析的需求,设计的解释器由词法器、语法器和语义分析模块三部分组成,词法分析器负责词法分析的预处理和输入单词的解释;语法分析负责输入码的语法结构检查和解释;在词法和语法分析器基础上,语义分析模块负责比赛技战术的分类与统计工作。
本校开设了“程序设计专题训练”、“计算机网络专题训练”、“操作系统专题训练”、“数据库专题训练”、“软件测试技术”、“嵌入式技术”等实践课程。如“程序设计专题训练”课程是C程序设计课程后续的训练课程,针对程序设计中常见问题,以专题形式进行训练。通过该课程的学习,使学生能深入理解C语言特性,掌握基本程序设计方法,学会常见问题的处理技巧,提高程序设计能力,为后续专业课程的学习打下良好基础。又如“操作系统专题训练”课程重点提高学生对操作系统的实际操作能力,使学生了解和掌握在Windows、Linux操作系统上运行的应用服务,对操作系统与外部接口(shell)有更深入的了解和认识。
为了能切实提高学生的编程水平和算法设计与分析能力,我们开设了“项目管理实践”、“软件课程设计”、“企业实训”、“学术与工程实践”等实践课程,如“项目管理实践”课程培养学生参与大型软件项目开发的基本能力,使学生能够熟练掌握软件开发环境使用和软件开发的基本方法,为毕业设计和就业提供了必要的技能训练。按照5-8人的规模成立软件开发项目组,以开发一个软件项目作为实训的主线;项目经理由学生担任,项目成员的角色由项目经理根据各成员的技能来确定;由实训方提供项目的用户需求,并且确定要开展的软件工程活动和管理活动及项目里程碑;根据开展的软件工程和管理活动,提取出一些关键知识点,以案例的方式进行项目培训,并将其用于项目开发的实践中,其中案例来自实际开发的软件和系统集成项目。
2.3 紧跟时代变化,实现多模态教学
首先重视教学内容的时效性,教师在教学过程中,不仅仅着眼于所选用的教材,还应融入前沿思想、技术和一些交叉学科的内容。例如在“编译原理”课程的教学中,不局限于一种语言,而应该选择多种不同体系结构的编程语言进行介绍;又例如可以选择C语言、Ruby、Python,甚至是苹果最新推出的Swift语言,通过比较这些语言的不同特征,给出其在编译过程中的各自特点,从而使学生对编译程序所做的工作有更加清晰透彻的了解。在“数据结构”、“面向对象程序设计”这类课程的教学中,可以多介绍一些国内外的文献、最新应用等,从多种不同角度引导学生程序阅读及编程的兴趣。这就要求教师关注计算机及电子信息产业发展研究的最新内容,并及时将这些新内容融入到教学工作中。
其次,重视教学方式的时效性,培养学生程序阅读能力、编程能力,其手段要紧跟时代步伐。充分利用互联网时代的MOOC,如北京大学的MOOC、浙江大学的MOOC、本校的MOOC等,将原先只能在电脑上或书本中的程序放在手机上,使学生可以随时随地从手机端进行学习。学生课外可以利用北京航空航天大学实验类MOOC的计算机网络实验课程、移动计算两门课程,通过计算机网络实验课程,了解网络基本原理,远程配路由器、交换机,组一个小的网络,掌握基本的网络故障排查方法。通过移动计算即Android编程,MOOC已经搭好大的框架,教学生编写小的app程序,并将编写好的代码嵌入到框架中。
通过促进在计算机系本科教学工作中多模态教学模式的实现,可以将原先计算机专业教学以课堂教学为主、课下上机实验为辅,其余全靠学生自觉学习的格局,转化为课堂教学为主导,智能端随时学习为辅,课下上机实验为监督检测的新格局。这样的格局摒弃了过去教学只能在课堂进行的成见,给予学生更多的学习自由,可以有效提高学生的程序设计、算法设计与分析能力,同时节约课堂时间,教师在课堂中能够有更多时间讲解一些更加实用的难以从书本中直接获得的知识。
2.4 注重对学生学习态度的引导
在对计算机系学生的调查中发现,后进生大多有“畏难”情绪。他们往往还未开始编程,就对自己的能力进行主观否定,这种特征在调剂生身上表现得较为突出。对于这种情况,教师在课堂上如果只单方面强调知识的重要性,甚至直接点出考试及格的重要性并不会对这类学生思维模式的转变有好处。教师在教学过程中,常常会不自觉地将自己体验过的应试竞争态度带入教学工作中,具体表现为:过于强调考试分数,为了提起学生的听课兴趣甚至以考试题型作为诱饵,经常强调奖学金和保研问题,整个教学工作围绕着考试等。这其实都是不正当的竞争指引方式,只会增强学生的厌学心理。
因此,计算机专业讲师在教学过程中,应格外注重对学生学习态度的指引,特别是在代码类课程的教学过程中,教师不应根据自己多年的代码编写经验来对代码进行讲解,而是应该想象自己是这种代码的一名新学生,对这类代码一无所知的情况下,可能会从哪里入手进行理解。与其说“这门课挂科了,你毕业就有危险”,不如说“学会写代码,你就可以自由驾驭整台计算机”;与其说“这种数据类型期末考试一定会考”,不如说“你玩的泡泡龙中,屏幕上的泡泡就可以用这种数据类型来写”。在教学中注重引导学生的学习兴趣,激发学生的学习热情和探索精神,真正做到以学生为本,从学生的角度理解教学,才能在教学工作中正确指引学生的学习态度,达到最佳教学效果。
3 总结
计算机科学是一门具有创造性意识活动的学科,计算机本质上是一个程序的机器,只有那些真正懂得程序的人才能懂得计算机。因此程序设计能力、算法设计与分析能力是一名合格计算机类专业的毕业生必须具备的两大基础能力。本文给出的具体措施,有效提高了学生的编程能力、算法设计与分析能力,以及分析和解决实际问题的能力,有利于培养经济社会发展急需的信息产业人才。