欢迎来到易发表网,发表咨询:400-808-1701 订阅咨询:400-808-1721

关于我们 期刊咨询 科普杂志

计算机程序设计论文优选九篇

时间:2023-03-16 16:38:28

计算机程序设计论文

计算机程序设计论文第1篇

案例需要选取复杂程度适中,学生比较感兴趣的实例,使课堂变得生动活泼。每位同学设计自己的实施方案,鼓励大家去思考、去创造,经过老师的讲解,可以完成整个案例的实现。学生之间可以通过讨论,经验交流,互相取长补短,完善自己的案例制作。当学生完成作品时,教师应当对此次案例的实施进行总结,并且在此基础上,将问题延伸,对其进行完善或改进,根据课时情况,鼓励学生设计并实现。

2与自身专业相结合

为了提高VisualBasic程序设计的实用性,增强学生学以致用的能力,需要将该门课程与学生所学专业有机的结合在一起,这样能够使学生的学习兴趣更加浓厚,提高学习热情。以交通运输专业为例,课程开展至图形图像的使用时,可以选取红绿灯变换例题作为学生的操作案例,如图2所示。在这个案例中,与交通专业的专业知识也许还有一定的差距,但这样一个简单的实例足以吸引学生的注意力,控件要求也比较简单,代码结构并不复杂,但是需要提醒学生注意的是需要对于Image3控件需要添加具有3个元素的控件数组,来存储红、黄、绿三种颜色。类似的案例教师可以通过网络搜索或图书资料等多种方法搜集,难度不能太大,如果太复杂,反而会影响学生学习的积极性,以上就是对于非专业学生,将案例教学法应用于理论教学中的一些建议。

3程序实践教学改革

计算机程序设计论文第2篇

关键词:编译原理;计算思维;课程改革

中图分类号:G642 文献标识码:B

1编译知识在计算机学科中的作用

自从20世纪50年代中期诞生世界上第一个高级语言编译器――Fortran语言编译器以来,编译技术不断进步,已经成为计算机科学中发展最迅速、最成熟的一个重要分支。自1966年以来的所有55位图灵奖获奖者中,有近1/3的科学家是因为在程序设计语言和编译方面的成就而获得该项奖励,可见程序设计语言和编译的发展集中体现了计算机科学发展的重要成果与精华。计算机应用能发展到今天,编译技术的发展有着极其重要的、不可替代的作用。

五十多年以来,随着编译技术的发展,有关编译原理和技术的内容被逐步引入到了计算机专业本科教学中。从早期各阶段ACM和IEEE的计算机专业教学计划,到近年ACM和IEEE联合制定的CC 2005,再到我国教育部高等学校计算机科学与技术教学指导委员会2006年编制的《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》,直至最新的ACM和IEEE联合制定的CS2008,都把有关编译原理和技术的知识作为重要教学内容列入。目前,我们编译原理课程的教学内容覆盖了CS2008体系中程序设计语言领域、算法和复杂性等领域的多个知识单元。

2编译原理课程的理论性和技术性特点

编译程序的构造原理和技术可以说是计算机科学技术中理论和实践相结合的最好典范。在许多课程的教学中,经典理论和先进技术之间的联系往往缺乏具体而形象的例证,而“编译原理”课程在这方面具有得天独厚的优势。形式语言和自动机理论为编译程序的设计提供了坚实的理论基础,正是在科学理论的保证下,才形成了一系列先进的编译程序设计方法和工具,使得编译程序的构造具有很高的系统性和自动化程度。例如,正是有了有限自动机的经典理论,才有了LEX这样的高度自动化的词法分析器的自动产生器;正是有了Knuth提出的LR分析方法,才有了YACC这样的高效的语法分析器产生器,将程序员从繁琐的代码编写中解放出来。编译课程的教学既要强调经典理论在计算机科学中的重要作用,又要注重介绍利用这些基础理论来设计和构造编译程序各模块的先进方法及工具,可以具体形象地说明经典理论与先进技术的关系。理论和实践相结合是“编译原理”课程的鲜明特色。

“编译原理”课程特别强调运用理论知识进行实践的能力和素质,以突出计算机专业人才培养的特色。“编译原理”是每个优秀的计算机专业人员必修的一门课程。通过编译程序这一具体的案例,学生可以综合理解和运用计算机的程序语言、操作系统和体系结构等各种软硬件知识,形成计算机专业人才特有的系统的专业知识结构。在系统学习编译的理论和技术的过程中,学生一方面对科学理论的基础作用有了充分的认识,提高了学习经典理论的兴趣,形成了较高的理论素养;另一方面,通过课程综合性的实践,分析或改进简单或复杂、原型级或产品级的各种编译程序或工具,也可以提高灵活运用理论知识、设计较大规模的软件来解决实际问题的能力。在课程的学习和实践中,学生可以深刻体会到理论学习的意义和动手实践的乐趣。

有许多人认为,如果今后不从事编译器的开发,编译知识就显得并不重要了――事实上并非如此。编译课程鲜明的理论性和技术性特点,使得这些知识对于计算机专业人员来说具有重要作用,甚至可以说是计算机专业人才区别于一般计算机人员的重要知识结构。对于将来从事编译系统设计工作的学生来说,编译课程的学习当然可以使他们掌握和理解编译系统的结构、工作流程以及编译程序各组成部分的设计原理和实现技术,获得分析、设计、实现和维护编译系统的初步能力,打下坚实的能力和知识基础;而对于那些将来不从事编译器研制的学生来说,编译课程的教学对于提高他们对计算机系统总体认识也具有重要的意义。通过学习编译的理论和方法,学生可以提高对程序设计语言的设计与实现等知识的综合理解,而这些知识对于准确掌握程序设计语言,学习新的编程范型,理解程序,开发出正确的软件都是不可缺少的基础。图灵奖获得者Perlis教授的名言“To understand a program you must become both the machine and the program”就精辟地说明了这一点。此外,编译课程介绍的经典语言分析方法和工具,对于一些实用的工具和软件,如自然语言理解、网络信息处理、网络协议的分析与实现等领域的软件或工具的研制,都是很好的基础。更为重要的是,编译课程中介绍的一些经典的理论和方法,对于传授计算机科学研究的方法、训练学生的思维都是难得的生动案例。因此,不能把编译课程片面地理解成为一个介绍编译程序的课程,而应当把该课程的教学放在培养专业素质、训练思维的层面加以认识,特别是应当强调如何在编译的教学中培养学生的计算思维。

3计算思维及其在编译理论和技术发展中的作用

计算思维(Computational Thinking)是卡内基梅隆大学计算机科学系Jeannette M. Wing教授在2006年提出来的先进的教育理念,被认为是近十年来产生的最具有基础性、长期性的学术思想,并将成为21世纪计算机科学研究的热点。

计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为,它包括了一系列广泛的计算机科学的思维方法。Wing教授认为,计算思维不仅仅属于计算机科学家,它将和阅读、写作和算术一样,是21世纪每个人必须具备的基本技能。计算思维已经在其他学科中产生影响,而这种影响在不断拓展和深入。例如计算生物学、计算博弈理论、纳米计算和量子计算等新兴研究领域的发展正在深刻改变生物学、经济学、化学和物理学领域研究的思考方式。

典型的计算思维包括一系列广泛的计算机科学的思维方法:递归、抽象和分解、保护、冗余、容错、纠错和恢复,利用启发式推理来寻求解答,在不确定情况下的规划、学习和调度等。显然,这些计算思维方法都可以在许多编译理论和技术的发展中找到痕迹,很多编译成果正是运用计算思维的结晶。例如,抽象和自动化是计算思维的两个重要手段,也是编译理论和方法产生的基础。编译课程中介绍的语法知识描述、词法分析、语法分析、属性文法、乃至优化等知识点,都体现了面向具体应用、从实际问题中抽象出科学问题并运用科学的思维方法进行问题求解的思想,其成果根植于坚实的经典理论,并应用于实践,以推动技术的进步。因此,在编译课程的教学中,结合编译理论和技术中经典的案例培养学生的计算思维,是一条值得探索的途径。

4结合编译案例的计算思维培养

如何培养“计算思维”,是目前计算机教育界非常关心的问题。例如,在计算机专业的教学中,有些学校在专业核心课程中融入计算思维的培养;在非计算机专业的教学中,对计算机导论类或程序设计类的课程进行改革,针对学科交叉的需求,从教学内容和方法上进行改革,培养学生的计算思维。总体来说,计算思维的培养应该贯穿在大学教育的全过程,甚至在大学之前的教育中。计算思维对于计算机专业的人才培养提出了新的要求,我们必须在专业课程教学中结合计算思维的培养。

编译课程的知识体系完整,既有经典理论成果奠定的坚实基础,又有在实践中发挥巨大作用的先进技术,其中很多知识点都为计算思维提供了很好的诠释和生动的案例。下面,我们从抽象、自动化、递归、问题分解和权衡等典型计算思维方法出发,探讨结合编译案例培养计算思维的可能途径。

(1) 抽象

“抽象”是科学研究的重要手段,也是计算机科学研究的重要工具。在编译理论和技术的发展中,正是运用“抽象”这一有力工具,才获得了一系列的重要成果。例如有限自动机、形式文法等都是重要的抽象工具,有了这些工具,才能够把握词法分析和语法分析等问题的本质,发现其中规律,最终形成一系列的自动分析方法。

(2) 自动化

将抽象思维的结果在计算机上实现,是一个将计算思维成果物化的过程,也是将理论成果应用于技术的实践。有限自动机、预测分析程序、算符优先分析、LR分析等编译经典方法,都是在抽象的基础上将知识和控制分离(即分析表加控制程序),从而获得了经典的分析工具,而这种知识和控制的分离也为分析工具的自动产生提供了可能。自动化的思维方法不仅体现在编译程序本身的工作机制上,更体现在编译程序的生成工具的研究和设计上。

(3) 递归

许多编译中的问题都具有明显的递归特征。运用递归思维解决复杂的问题,通常是对问题进行逐步化简,最后得到了一个规模非常小、非常简单、更容易解决的类似问题,将该问题解决后,再逐层解决上一级问题,最后解决了较复杂的原始问题。编译中的递归下降分析是最直观的对递归思维的运用,此外,基于树遍历的属性计算、语法制导翻译都是典型的递归问题求解。

(4) 问题分解

程序设计中的“自顶向下、逐步求精”的思想就是一种典型的问题分解的计算思维方法。运用问题分解这种思维方法进行问题求解,首先须做出对问题本身的明确描述,并对问题解法做出全局性决策,把问题分解成相对独立的子问题,再以同样的方式对每个子问题进一步精确化,直到获得对问题的明确解答。在编译程序的设计中,通过引入中间语言,将编译程序划分成前端和后端,就是一种典型的分解问题的思路。

(5) 权衡

“编译原理”课程是一门理论性和技术性都非常强的课程。理论研究重在探寻问题求解的方法,而在编译程序的设计和实现过程中,对于理论成果的研究运用又需要在能力和运用中做出权衡。这方面一个典型的例子是,我们知道,虽然高级语言的大部机制都可以由上下文无关文法来描述,但是上下文无关文法不能完全刻画高级程序语言的所有规范,有些语言机制甚至存在二义性。但是上下文无关文法的分析是高效的,所以我们在编译程序设计中依然采取上下文无关文法来描述高级语言语法,但是在具体实现时,通过改造分析表消除冲突、符号表操作、语义检查等手段,去实现上下文无关文法分析所不能完成的功能――这正是在具体实践中结合具体问题进行权衡的结果。

5结束语

计算思维的培养不是哪一门课程的教学能解决的问题。对于计算机专业教育来说,应当关注在各专业课程中的计算思维的培养,强调对各种原理和方法进行提炼,从思维方法的高度培养学生,使学生能够应用计算思维解决问题。大学计算思维的教育应贯穿于整个大学教育,做到学习期间不断线。

参考文献:

[1] Jeannette M. Wing. Computational Thinking[J]. Communications of ACM, 2006,49(3):33-35.

[2] 何炎祥,伍春香. 计算机专业不需要编译原理课程吗?[J]. 计算机教育,2009(4):61-62,85.

计算机程序设计论文第3篇

1、程序设计是中学生计算机课程的基本内容吗?

2、必须“尽快终止”程序设计的教学吗?

最后提出了作者的看法:“中学计算机课程要以基础性知识和技能性操作为主,程序设计是更高层次的学习内容” 。在时间和学生的接受水平允许的情况下应该并尽可能早地在计算机课中安排一些程序设计内容,但内容和深度要根据不同年龄的学生认知特点做精心的安排。

当前关于中小学计算机课程设置的一个争论焦点是计算机课程中要不要有“程序设计”的内容,如果有,应该要求到什么程度?下面我们专门来讨论这个问题。

一、澄清几个概念

1. 计算机语言≠程序设计语言

在一些教师的脑中和普及计算机知识的书中,常把这两个概念混为一谈。例如一本全国范围发行的计算机普及读物中写道:“为了和电脑交流信息,也要通过语言,……,由于电脑语言就是用来告诉电脑按次序干什么事情的,所以电脑语言又称为程序设计语言。”可见这个问题不是个别人的问题,而是带有普遍性的问题,必须加以澄清。

什么是计算机语言?“①狭义的指计算机可以执行的机器语言。②广义的指一切用于人与计算机通讯的语言。包括程序设计语言,各种专用的或通用的命令语言、查询语言、定义语言等。”[1]现在一般采用后一种说法。

什么是程序设计语言?“泛指一切用于书写计算机程序的语言,包括汇编语言、机器语言,以及一般称为高级语言的完全符号形式的独立于具体计算机的语言。”[1]

上面两段引言很清楚地说明了计算机语言与程序设计语言之间的区别和联系。计算机语言是外延较大的概念,程序设计语言只是计算机语言下的一个属概念。“我们和计算机打交道,就要用计算机语言”这句话是对的,但用计算机语言与计算机打交道,不一定要用程序设计语言。我们用DOS命令,就是在用计算机语言棗命令语言;我们用鼠标单击某一图标,让计算机执行某一操作也是一种计算机语言。但它们都不是程序设计语言。当然这些命令语言,最后都要翻译成机器语言去执行,但这是计算机内部运行机制的问题,绝不能以此为理由把这两个概念混为一谈(否则也不用区分机器语言、汇编语言和高级语言了,因为它们最终也都要翻译成机器语言)。

弄清了这两个概念的不同,一些说法的正确与否也就不言自明了。例如有人说:“人们交流要通过语言,人要和计算机打交道,也要通过语言,所以要使用计算机必须学习程序设计语言。”前半句话指的是计算机语言,而后半句话指的是程序设计语言,由于“偷换”了概念,推理不合逻辑,结论也就不可靠了。当然说这句话的人,我相信绝不是有意的诡辩,而是由于概念的混乱,自己欺骗了自己。 我们使用计算机,和计算机打交道,一定要学习计算机语言。我们学习DOS命令,学习Windows操作,就是学习管理计算机资源的语言。我们学习某种应用软件的操作,也是学习计算机语言。总之,我们在学习计算机知识的过程中一直在学习计算机语言,一直是通过计算机语言和计算机打交道,但这不是程序设计语言。也就是说,学习使用计算机,一定要学习计算机语言,但不一定要学习程序设计语言。

2. 学习程序设计≠学习程序设计语言

在讨论中另一个模糊的概念是把学习程序设计和学习程序设计语言混为一谈。

我国著名的科学家马希文教授写道:“用一串符号把一个计算机过程描述出来,就是一个程序。……要制定一些严格的规则,以确定什么样的符号表示什么样的程序。这些规则的总和就叫做一种语言。”[2]

马希文教授又接着写道:“一个完整的程序设计过程大体有以下几个步骤:(1)要把程序的功能描述清楚。……(2)用程序语言把预定的计算方案书写出来。这是程序设计中最有特色的部分。简单的计算可以直觉地进行程序设计。复杂的计算往往可以由简单的程序按照各种模式搭配而成。然而,却没有一种机械的办法可生成各种程序,换句话说,程序的设计是一件具有创造性的工作。(3)证明程序的正确性。……(4)在实际工作中,试算和修正是不可缺少的。” [2]

从上面两段引言中可以看出,语言是“严格的…规则总和”,我们学习一种程序设计语言,就是学习这种语言的规则,即学习语法、语义、程序及其他一些规定。这里涉及的是严格的定义,严格的书写方法,没有任何的创造性可言(一个字母一个标点都不能错)。而学习程序设计是学习“设计过程”,内容主要是描述功能、书写方案、证明正确性和试算和修正。程序设计“是一件具有创造性的工作”,两者有着根本性的区别。 当然学习程序设计一般应选用一种语言作为工具,学程序设计就必须学程序语言,学习时两者是不可能绝然分开的。但问题是各自的地位是什么?以哪个作为重点?我们中小学的教学目标是什么?是让学生掌握一种程序语言呢?还是把程序语言作为一种载体,一种学习程序设计的工具,而把教学目标和重点落在程序设计的思想方法上?这就是当前计算机教学中的带根本性的分歧点。目前很多计算机教师在进行程序设计教学时,往往把很大的精力,甚至是主要精力放在语法和语义上,他们不自觉地把程序设计的课上成了“程序语言”课,违背了我们的教学目标,原因就是没有真正区别清楚程序设计和程序语言这两者之间的不同。

二、程序设计是中学生计算机课程的基本内容吗?

1.一部分人明确地提出计算机课中必须有程序设计内容,理由是“它是计算机学科的核心内容”。这里涉及到两个问题,一是程序设计是否是核心内容;二是中学计算机课程是否应该按计算机学科专业要求来设置内容。

对于第一个问题,在大学计算机本科教学计划《计算机教学计划1993》中列出了计算机学科主科目有九项,而“程序设计”仅是其中一项[3]。为什么在9项中只选择了“程序设计”这一科目为核心科目?为什么不选其他科目?理论上和实践上的根据是什么?

对于第二个问题早有定论,中学是基础教育不是专业教育,课程应该主要根据社会的需要来设置,同时考虑学生的接受能力和学科本身的需要。提出上述看法的人,不自觉地受到了“学科中心论”的影响,其理论基础就是错误的,因此论点也就不能成立。

2.有人认为,选“程序设计”内容是因为它可以培养学生的“分析问题和解决问题的能力”。这个论点在一定条件下说是正确的。我国十几年来在国内外计算机程序设计竞赛中,涌现出大批的优秀人才,这些学生的分析问题和解决问题的能力,通过程序设计锻炼确实有不同程度的提高,他们进入大学后的表现也证明了这点。 但研究任何问题不能脱离实际抽象地论证。我们这里谈的不是竞赛,不是少数优秀学生的课外活动,而是全体学生都要学习的计算机课程,即素质教育。目前我国计算机课一般在高一开设,总共只有60-70学时。在这几十学时内要学习计算机基本知识、基本操作,还要学习应用软件的使用以及操作系统的初步知识。这样留给学习程序设计的时间至多只有30多学时。在这样少的课时内,能学多少程序设计的内容?全体学生能达到什么水平?分析问题和解决问题的能力能有多大提高?根据笔者十几年的教学实践,至少需要40以上学时大部分学生才能学会初步BASIC程序设计,80以上学时才能进行真正的程序设计(算法设计),这时候才能真正谈及能力的提高。

另外,我们这里讨论的不是一些小问题,而是涉及到国家政策的制定,关系到千百万学生的大问题。因此结论必须有比较可靠的理论和实践根据,只凭个人直觉和的经验是不够的。提出这一结论的人能拿出什么比较可靠的科学的依据证明这一点?目前我们还没有看到。而国外一些实验却对这一假设作出了否定性的结论。美国的玛霞·林和她的同事在1985年的一份报告中表明,“在普通学校,学生在学习程序设计语言时,一般能力是重要的。能力低的组,最后程序设计语言成绩评定也低。能力高的组,最后成绩也高。”[4]美国银行街的柯兰德等人的报告也指出:“要成为程序设计的专家,至少要有500小时以上的上机时间,而大部分只有10-12台微机用于程序设计课的学校,上机时间很少,即使一些学生家里有计算机,对他们最后程序设计能力的测量,效果并不显著。”[4]虽然我国与美国相比有很多特殊性,美国的结论不能照搬到我国来,但还是有很大参考价值的。 因此,在较短时间内的程序设计课,能否使大部分学生的分析问题和解决问题的能力有所提高,仍是需要研究的课题。

3.有人提出学生学习BASIC程序设计目的是为了使他们懂得“计算机能做什么,是怎样工作的?”

这句话如果是在70年代或80年代初讲的,有一定的道理,因为那时计算机软件还很不丰富,使用计算机解决问题,大多数情况下还必须使用者自己编程。并且在编程时必须了解计算机的软硬件结构和工作过程。但在计算机的软、硬件的功能、数量和质量极大发展的90年代,还拿来作为学习程序设计的主要理由,似乎有些过时了。目前在简单的BASIC程序设计和具有强大功能的应用软件之间已产生了一道鸿沟,两者之间差距非常大,要通过简单的BASIC程序设计学习来了解现代计算机系统的功能,犹如“瞎子摸象”。在应用软件中表现出来的一些计算机能力,在简单的BASIC程序设计中很难得到。例如文字处理软件中的块操作和排版功能,超文本链接功能,在简单的程序设计学习中就很难体会到。反之,通过应用软件学习所能了解的计算机功能却大大超过简单程序设计中的功能。例如应用软件中的打印功能已大大超过BASIC中PRINT(打印)语句所能了解到的功能;输入功能也大大超过INPUT语句所能提供的信息。

马希文教授也早就指出:“我们研究程序设计时,可以选用一种适当的语言。这样,我们就可以只研究用语言书写的程序,而不去过问这种程序在具体计算机上到底是怎样实现的。从这个意义上说,语言就是一种抽象的计算机。”[2]也就是说学习程序设计,特别是高级语言的程序设计,了解的是抽象的计算机。什么是“抽象”?抽象就是“从许多事物中,舍弃个别的、非本质的属性,抽出共同的、本质的属性。程序设计中的抽象,马希文教授在上面这段话中已说得很明白,即“只研究用语言书写的程序,而不去过问这种程序在具体计算机上到底是怎样实现的。”。既然舍弃了“在具体计算机上是怎样实现的”内容,怎么能通过程序设计来懂得“计算机能做什么,是怎样工作的”呢?

当然上述说法在一定意义上还是有可取之处。一个计算机系统可以被看作是由硬件和软件按层次方式构成的,每层表示一组功能和一个接口。每一层都在一定深度和范围反映计算机系统的功能和工作状况[5]。学生们学习应用软件的知识和操作只是从最高层面上了解计算机的功能和工作状况。而学习程序设计则是从更深一层面,即语言处理层面来了解计算机的功能和工作状况。因此我认为如果上述说法改为“学习程序设计是从更深的层面,从语言处理的层面上了解计算机能做什么,是怎样工作的。”就无可非议了。

三、必须“尽快终止”程序设计的教学吗?

1997年国家教委收到了两封信件,一是联合国(UNDP/CPR)首席技术顾问大卫·艾伦写的;另一封是纽约市立大学约克学院传播技术级电脑中心主任黄哲操写的。信中他们对我国的计算机教育事业提出了很多好的建议,但也以美国为例对我们发出了警告:“尽快终止中小学作为普遍的教学要求的计算机语言课”“如不彻底改变方向,一切证据表明中国中小学计算机教学将面临最大的灾难。”

对于这样严厉的警告,我们应如何看待?当然应当认真地研究他们的建议和批评,吸取其中有用之处。但我认为,最了解中国的是我们自己,中国和美国相比较,在经济发展上,在文化传统上有很大的差别。在美国是好的经验,在中国不一定是好的;在美国行不通的、失败的办法,在中国可能会成功。我们已经有了十几年的计算机教育经验,我们必须根据我国的国情,来决定我们的政策。

我国的一些教师也有以上类似的看法,他们认为:“计算机学科没有必要学习程序设计,只需要学习计算机操作方法和一些社会上流行的软件使用就可以了。”而且还提出了“一些学生在学校学习了程序设计,到社会上完全无用,仍需从头学起”的说法。 由于计算机信息技术的发展,大量的软件涌现,计算机处理各种信息的速度和功能大大提高,一般的应用都有现成的软件,不必要自己编程。因此上面看法有其正确的一面。过去的计算机课教学,由于各种原因以BASIC语言教学为主,忽视和根本没有实际操作和应用软件的使用。不论是中学还是小学,不论是普通中学还是职业高中,无一区别都是一个模式。因此在一定程度上造成了学非所用的结果,特别是对准备毕业后立即就业的那部分学生。

但上述说法从基本点上、从理论上说是不正确的。首先,这种说法指导思想是受了“社会中心”论的影响,即当前社会上需要什么就学什么,是一种急功近利、实用主义的做法。

我们不反对从社会需要出发来考虑课程的设置,不但不反对,而且要提倡。我们也不反对学习一些实用的应用软件,而且赞同在新教材中增加一些应用软件的内容(我个人认为,在初中的计算机教材中,实用部分可以占全部内容的 70%到 80%)。但在这里,我们和持这些观点的人有一个根本上和原则上的区别:我们不但考虑社会当前的需要,而且更注重社会长远的需要。我们不但着眼于学生当前学习和就业的需要,更注重学生将来的学习以及终生教育的需要。出发点不同,在内容的选择上,在教材的安排上,以及在教法上,就会有根本性的区别。 上述观点第二个错误是混淆了不同教育的性质。普通中小学教育是素质教育,它与职业教育不同。上述观点把素质教育与就业教育等同起来了。

就是职业教育,上述观点也是不完全正确的。我们教给学生的不仅仅是知识和技能,而更重要的应该是能力。这就不能是“知其然,而不知其所以然”。不懂得汽车的基本原理也能开车,但绝不可能成为一名优秀的驾驶员。同样道理,如果只会一些具体应用软件的使用,不懂得有关的基本原理和知识,就不可能很好地使用计算机,成为一名优秀的计算机应用人员。我很赞同下面一段很有哲理性的话:“必须坚持技术基础教育和实用技术教育兼顾,... 如果不进行技术基础教育,就缺乏后劲,难以掌握高技术;如果不学习当地的实用技术,就不易起步,难以把最基本的科学技术运用于生产,把可能的生产力转化为现实的生产力。……按照布鲁纳的知识迁移理论, 扎实的技术基础教育,有利于学生去掌握实用技术,起到举一反三作用;良好的实用技术教育,有利于扩展和提高技术基础教育,起到触类旁通的作用。”[6]而且将来的社会职业的变动将是很频繁的,一生中职业变动四五种是常事。这就更要求我们的教育从学生的长远着想,注意基础知识的教育,注意能力的培养。

四、程序设计方法尽可能早学习

我认为计算机课程还是应该安排一些初步的程序设计的内容,而且越早越好。为什么要安排一些初步的程序设计内容?我的理由与上述的几种不同。

第一个理由是,计算机学科有于其他学科很不同的特点。关于这一点,当代著名的计算机科学家唐·依·克努特(D.E.Knuth)在他的巨著《计算机程序设计技巧》中有很精辟的论述。他写道:“能把问题的解法表达成计算机能够‘理解’的一种明显形式(这些机器没有普通的感觉;它还不会‘思考’。但它能准确地不折不扣地去做让它做的事情。当一个人初次试图使用一台计算机时,这是最难以掌握的概念)。”[7]。但是这个“最难以掌握的概念”又是真正学会使用计算机所不可缺少的。怎样来掌握它呢?经验告诉我们,学会计算机的初步操作,学习一些应用软件的使用,能初步了解这个概念。但是要真正理解和掌握这个概念,学习程序设计是一个较好的途径。程序设计要建立数学模型,要进行算法设计,这些就是克努特所说的“把问题的解法表达成计算机能够‘理解’的一种明显形式”;在用计算机语言进行编程时,就要了解有哪些语句,它们的功能的什么。这些实际上就是了解计算机“能准确地不折不扣地去做让它做的事情”。

第二个理由前面已说及,即学生们学习应用软件知识和操作只是从最高层面上了解计算机的功能和工作状况。而学习程序设计则是从更深一层面,即语言处理层面来了解计算机的功能和工作状况。

第三个理由是程序设计虽然不是计算机科学核心课程,但它是一个基础课程。计算机学科的其它课程,如操作系统、数据结构等,除学习一些理论外,很重要一项就是在计算机上实验,这些实验大部分要编程序,也就是要会用一种计算机程序设计语言编制相应的程序。所以大学计算机专业都把学习一种程序设计语言作为基础课程之一。如果在中学就给学生打下这方面的基础,就有利于学生今后的继续学习。那些在中学已学会了程序设计的大学生回来的反映,很清楚地证明了这一点,我们的基础教育任务之一是为高一级学校培养后备力量,也为学生将来进一步深造打下良好的基础。在中小学打下程序设计的基础,有利于他们进入大学的深造和就业以后的继续教育。

为什么要“尽可能早学习”呢?在计算机普及工作中,很多教师都有这样一种体会,只要内容和教法适当,程序设计入门,初中学生比高中学生容易,甚至高年级小学生比初中学生容易,最困难的是成年人(这里不是针对个别人,而是大多数人来谈的,即从统计的角度来谈的)。这种“怪”现象如何解释呢?

根据现代认知心理学的理论,人的头脑中的知识,不是杂乱无章地或简单地存储着的,而是有一定的结构,即认知结构。学习就是科学的逻辑结构和人的头脑中的认知结构之间的矛盾和转化。“当儿童认识一种新事物时,总是先用原有的图式(即认知结构)去同化(即把新知识纳入原有的认知结构中),如获成功,便得到认识上的平衡,否则就进行异化,调整原有图式或创造新图式,直至取得新的平衡为止”[8]。

程序设计是一种新的知识结构,它与其他学科的结构,如数学知识结构、物理知识结构等,有很大的区别。唐·依·克努特的论述中提到“这是最难以掌握的概念”,为什么“最难以掌握”?就是因为这种知识结构与以往人们学习的知识结构有很大的不同。

因此当一个初学者学习程序设计时,在把这种新的知识结构纳入自己原有的认知体系中(同化)时,由于结构差别太大,就会遇到原有结构的“顽强抵抗”,必须创建新的认知结构。而在这种新的认知结构的创建过程中,如果原有的认知结构越牢固,创立就越困难。一般地说,年龄越大认知结构就越牢固,越不容易改变。这就造成新的结构建立成人比高中生困难,高中学生比初中学生困难的现象,而小学生头脑像一张白纸,最容易接受新的东西。

从上面的分析,可以得出这样一个结论:尽早地学习“程序设计”这种知识,就会减少进一步学习的障碍。当然这种“程序设计”知识结构对于不同年龄的学生,它的内容多少,它的复杂程度的高低应该是不同的,应该有层次、有区别的。

1994年,联合国教科文组织(UNESCO)委托国际信息处理学会(IFIP),编写了指导世界各国计算机课程设置的文件《中学信息学课程》。其中有一段话,对于我们每个从事计算机教育的人会很有启发。现摘录如下:

“这里所指的程序设计非技术性的程序设计,更确切地说应该是把‘你自己做的事情’转变成‘别人能做的事情’。这就要求能详尽地描述完成任务的过程,以便其他的人或其他的设备能准确地重复这一项工作。

这种完成任务的‘自动化’就被称作程序设计,有时也称作算法程序设计──信息学的一个重要特点。当使用复杂或先进的软件工具(如电子表格、数据库管理系统、操作系统,甚至文字处理系统)时,用算法的思想来思考或解决问题是必要的。

程序设计是帮助学生获得解决问题经验的一种快速、明确而适合的途径,教学的目标不是培养‘小型的程序员’,而是使得学生能用程序设计的方式进行思考。本着这个思想,在学习过程中只要掌握‘必须了解’的,至于程序语言中的独有的特点和假设就不是很重要了。教师必须强调解决问题的方法,程序设计只是实现这个目的的一种手段。”[9]

儿童心理学中有一个“关键年龄”的说法,即在儿童发展的过程中,某一种技能或能力在某一特定时期最易获得,最易形成,如果错过这个时期,效果就会差些。例如2-3岁是学习口头语言的关键年龄,4-5岁是开始学习书面言语的关键年龄等。[10]那么,儿童青少年学习“程序设计”的关键年龄是在哪个时期?这是值得心理学家和计算机教育专家研究的课题。

五、初步结论

在中小学计算机课程中究竟要不要安排“程序设计”的内容?我完全赞同《指导纲要》的提法:“中学计算机课程要以基础性知识和技能性操作为主,程序设计是更高层次的学习内容” [11]。在时间和学生的接受水平允许的情况下应该并尽可能早地在计算机课中安排一些程序设计内容,但内容和深度要根据不同年龄的学生认知特点做精心的安排。

我个人建议,在条件允许的情况下,小学高年级可以学一些LOGO语言的程序设计,其主要内容是“海龟绘图”,通过LOGO学习一些几何知识,而在程序设计上只起到“熏陶”的作用,即起一个潜移默化的作用。初中阶段可以安排一些介绍什么是程序、什么是程序设计的简单的内容,只要求学生能理解一些简单的程序就可以了,不必要求能编程。高中阶段可以较系统地学习一些程序设计知识,了解程序设计过程,能编简单的程序,但在算法设计上只要求了解就可以了。另一方面可以大力开展以算法设计为主的课外活动和选修课,给那些程序设计感兴趣的学生提供一个良好的发展环境。

【参考书目】

[1] 王攻本主编:《计算机科学技术百科辞典》1993年,405、404页。

[2] 马希文:《程序设计学》科学出版社,1985年,1页。

[3] 《计算机学科教学计划93》电子工业出版社,1995年,9页。

[4] 陈琦:《中学计算机教育文选》光明日报出版社,1987年,145页。

[5] 孙钟秀等:《操作系统教程》高等教育出版社,1990年2页。

[6] 郭福昌:《试办农村综合初中,势在必行》《课程研究》1994年4期,7页。

[7] 唐·克努特:《计算机程序设计技巧》第一卷前言,国防工业出版社,1986年。

[8] 布鲁纳:《教育过程》文化教育出版社,1982年,28,31页。

[9] 《中学信息学课程》清华大学出版社,1995年,49页。

计算机程序设计论文第4篇

关键词 大学生;计算机程序设计;方法

一、大学生计算机程序设计课程概述

计算机程序设计(Programming)是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。目前,《计算机程序设计》课程是高校计算机基础教学的一门必修课,并且,一些非计算机专业的学生也安排了这一课程,其教学目的是要求学生以某种程序设计语言如JAVA、C语言、C++或汇编语言为工具,掌握编写程序的常用算法、一般方法和技巧,学生在进行该课程学习后,要具有一定的编程能力和应用开发能力,而不仅仅局限于计算机操作技巧,从而成为能够掌握计算机技术的高素质技能型人才。程序设计课程应该包括以下几部分内容: 熟练掌握阅读和分析程序设计语言的基本语法知识;数据类型和常用的数据结构;常用的基本算法;良好的程序设计风格;了解并掌握实用程序的开发与调试技术。由于程序设计涉及算法、数据结构和程序设计方法,该课程一些问题操作起来较繁琐,因此,许多学生学起来较吃力,难度较大。

二、大学生学习计算机程序设计的方法

1.重视程序设计上机操作,使理论与实践相结合

大学生学习计算机程序设计这么课程,区别于一些文科课程的学习最大差异之一在于,程序设计是一门实践性很强的课程,因此,学习过程中,大学生光靠死记硬背相关概念和步骤是远远不够的,必须要不断上机实验操作,验证和体会教材理论和方法。因此,大学生在程序设计学习过程中,必须重视程序设计上机操作,注重理论与实践相结合。

具体说来,大学生在上机操作中,要做好这几方面的工作:一是上机前,大学生要认真温习教材,了解程序设计课程的相关理论和将要上级操作的内容。计算机程序设计教材一般都有课后实践习题,学生应在课后通过实践操作进一步加深对理论知识的理解和认识,并可以在实验前书写方式编写程序,以备上机时的测试和调试。二是注重模仿学习。程序设计中会运用大量表达能力和逻辑能力强的精炼高效的编程语言,初学者往往觉得入门较难,且难学易忘。正所谓“学习最好的开始是模仿”,程序设计也是如此。这就要求在学习过程中,学生要重视模仿经典的程序设计例子,研究和欣赏别人优秀的程序代码,学习别人独特的见解与逻辑思维,才能在研究优秀代码中慢慢成长为优秀程序设计者。如“有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数,都是多少?”这是程序设计中的一个经典案例,学生可先自己思考着进行编程,对照参考程序进行在理解基础上的模仿,并可根据具体情况进行创新,只有这样,才能在不断模仿中进步和超越。三是要勤学苦练。多读代码、多写代码、多练代码,是学好程序的基本方式,而毅力是程序员具备的最基本的素质,大学生只有坚持多看书、多练习,把程序设计相关结构和类型的用法掌握牢固,才会学有所成。

2.熟练掌握好算法

高效程序的设计基于良好的信息组织和优秀算法,可以说,一切程序设计的问题解决的过程都是有效数据组织的过程,是寻找、设计和实现算法的过程。因此,熟练掌握最基本、最常用的算法是大学生学习程序设计的基础。

计算机程序设计往往会涉及使用计算机解题,大学生首先要正确理解题意,接着是寻找或设计解题方法,并对解题方法的正确性进行论证。按照正确的解题方法,可以设计正确的算法,即,规定每一个解题步骤中要求计算机执行的处理,以及各个解题步骤的执行次序。有了正确的解题算法,可以使用合适的程序设计语言,将算法表达成计算机程序,计算机将能按照设计好的程序,高速、自动地进行计算,帮助我们获得问题的解。因此,程序设计语言中的一些基本算法(如求累加和、求连乘积、穷举法、递推法、求最大值和最小值、 数的排序、数的检索以及字符串的匹配等),大学生在程序设计学习中,对这些基本算法应做到胸有成竹,并不断融会贯通、举一反三,才能使自己更好地掌握程序设计、提高学习效率。

3.交流合作学习

古人云“三人行, 必有我师”,计算机程序设计的学习最忌闭门造车。因此,大学生要多多与别人交流心得,从合作入手学习程序设计,才能在交流竞争中不断构建新的计算机能力。

许多大学生在程序设计学习中,凡是遇到问题都会自己想办法查资料,对于积累经验和提高能力大有脾益,但知识的海洋是无限宽广的,特别是对于程序设计这一门较复杂的课程,更需要学习者与老师和同学相互切磋学习,加深体会和经验,在在合作的学习氛围中,强者会更强,弱者也会变强。例如,有的大学生自行组织小组参加校内校外的程序设计大赛,以大赛为平台,以小组合作的方式组成参赛队,通过比赛,大学生不仅在短时间内迅速提升专业技能及运用计算机技术解决实际问题的综合能力,而且提高了创新思维和合作精神,并且刺激引发了社会交往意识,学会了与人沟通,为走向社会打下了较为坚实的基础,可见交流合作学习的方式不失学习计算机程序设计的有效途径。

三、结语

综上所述,程序设计学习作为计算机学习的核心和灵魂,它的学习对于计算机能力的提高尤其重要。结合计算机程序设计课程内容,大学生可从重视程序设计上机操作使理论与实践相结合、熟练掌握好算法以及交流合作的方式更好学习程序设计,才能成为适应社会信息化的快速发展的计算机人才。

计算机程序设计论文第5篇

高等学校的计算机教育,特别是广大非计算机专业的计算机基础教育,在很大程度上决定着未来社会人们应用计算机和信息化技术,解决来自自身领域问题的能力高低,所以计算机基础教学备受社会各方面的关注。本文结合作者在海外数所著名院校执教十年的工作经历,介绍海外高校关于非计算机专业计算机课程设置的研究与实践经验。

1非计算机专业学生对计算机课程的需求特点

在学习计算机知识的过程中,非计算机专业学生的思维方式不同于计算机专业的学生。非计算机专业学生对计算机课程学习有其自身的需求,我们必须根据现代教育思想和教学理论,针对非计算机专业学生对计算机课程的需求特点,选择正确的教学内容,设立相应的课程体系,运用恰当的教学模式与方法,将理论与实践紧密结合,以提高非计算机专业计算机基础教学的效果和质量。

通过与计算机专业学生的需求对比,Kapland就非计算机专业对计算机课程的需求特点作出如下归纳总结[1]:

1)(1) 非计算机专业学生通常与诸如信号、图像、方程、表格等实体打交道比较多。为了能够对非计算机专业的学生有所帮助,计算机基础课程须教会他们如何表示这些工作中会用到的数据,以及如何操作这些数据,而对学生不太会感兴趣的,诸如AVL树和B树之类的复杂数据,则可以略去不讲。

2)(2) 非计算机专业学生往往将计算机看成是一种工具而非自身的兴趣所在,更非其职业追求的目标。他们通常对计算机已有所接触,能够在家里轻松自如地使用计算机进行一些图像编辑、音乐合成等简单的操作。一旦转到课堂,让他们学习如何打印从1到10的数时,计算机知识则变得复杂得多。强烈的对比很容易让他们产生一种错觉:大学的计算机课程过时了,没有实际应用价值。

3)(3) 非计算机专业学生有着不同的专业背景,将来也会从事各行各业不同种类的工作。课堂上引用的例子必须是不同专业的学生都可通过直觉所接受的。

4)(4) 非计算机专业学生的导师往往自身也不具备很强的计算机使用能力,不可能去很好地帮助学生改善其计算机使用能力。学生从导师那里得到的帮助十分有限。

5)(5) 非计算机专业学生用在计算机课程上的学习时间十分有限,他们不太可能系统地学习计算机课程。有相关统计数据表明,一个计算机专业的学生在计算机课程上所花的时间通常是非计算机专业学生的十倍。

6)(6) 非计算机专业学生会频繁地使用各类标准的图表,如点线图、直方图、散点图、轮廓图、投影图,等,即便是在一个很初级的阶段也是如此。

7)(7) 非计算机专业学生大都不常写软件包,但是会经常使用它们。他们写程序往往是为某一特定用途,而不是写给别人使用。

8)(8) 非计算机专业学生通常不用设计二进制格式的文件,而是直接采用现成的电子表格、图像、声音等形式来进行操作。他们迫切需要知道如何组织和操作存储在各类表格和数据库中的数据,但可惜的是,这些知识在大多数计算机基础课程中并未涉及。课堂上,教师们常常教给他们线性表、栈、队列、树、集合和图,但并没有教会他们如何进行数据库的选择、投影和连接等典型操作。

9)(9) 如今用于科学计算的软件包非常多。我们很难预测非计算机专业学生在将来的科研工作中会需要哪些具体的计算机知识。与此相反,计算机专业的学生会非常确定地使用计算机程序语言,如C++和Java。

2非计算机专业计算机课程的典型设置

应非计算机专业对计算机基础知识的迫切需求,当前,海内外高校为非计算机专业开设了多种不同类型的课程,大体上可分为三种:(1)计算机导论课程 (着重计算机文化基础);(2)计算机应用课程 (着重案例解答);(3)计算机编程课程 (着重程序语言与软件包使用技巧)。具体讲授方式也依照学校规模、教师队伍与学生分布的不同而各具特色,总体上有如下三种授课方式:(1)同时面向计算机专业和非计算机专业,统一授课;(2)计算机专业和非计算机专业分开授课;(3)面向某一特定的非计算机专业(如医学),专一授课。这样,可根据不同专业需要的侧重点不同,传授相应的计算机基础知识。下面,我们通过具体的案例,分别就海外非计算机专业计算机课程的设置经验作进一步介绍。

案例一:荷兰蒂尔堡大学(University van Tilburg, the Netherlands)

笔者曾经在荷兰蒂尔堡大学信息系统与管理系任教3年。蒂尔堡大学为非综合性院校,共设置有五个学院――经济商学院、法律学院、社会与行为科学学院、人文(艺术、哲学、神学、宗教学)学院和天主教神学院。该校的经济商学院是最早、最大的学院,其经济学科居世界前列。信息系统与管理系附属于经济商学院,所开设的课程面向本系信息管理专业的学生,同时对校其他专业的学生开放,属上述统一授课类型。该系开设的主要课程包括商业工程(Business Engineering)、计算机与因特网技术、计算逻辑、计算机体系机构、数据库、e-商业(e-Business)、电子商务、信息技术、商务信息技术、计算与通信技术、经济与计算通信技术、运筹学与计算通信技术、信息管理、信息系统的质量管理、Linux、面向对象程序设计、面向对象模型、信息技术讲座、软件工程、系统与程序开发、网络资讯,等。

2.1计算机导论课程的设置

该类课程的目的在于让不同系科的学生懂得计算机科学的基本原理,教给学生计算机科学中一些伟大的思想与发明,通过这些预备知识,让学生能够最大限度地为将来理解计算机的能力和局限性打好基础,使之能在所从事的行业中学以致用。与此同时,在不要求学生今后从事计算机方面工作的前提下,教给学生很多计算机方面实用的知识,培养一些实用(如软件包的操作及其在实际情况下的应用)。那种只有通过学院式计算机课程的学习才达到的对计算机科学的深入理解并不是此类课程的目的。根据参考文献[3],对计算的深刻理解是可以通过非编程的教育手段获得的。

案例二:美国卡耐基梅隆大学(Carnegie Mellon University, USA)

美国卡耐基梅隆大学的Cortina认为现在的非计算机专业计算机课程为了让学生能写出正确的程序,过分强调了程序设计中的细节及其严谨性。很多时候,学生修这类课程并不是因为他们在实际工作中会用到编程,而是因为这是必修课 [2]。为此,他提出计算机导论课应教给学生计算机科学的原理而非编程,课程应着重强调从计算角度看计算机科学中的主要贡献,学生着重对计算能力的理解以及在计算机科学中会遇到的可能影响其他学科的问题。在设计课程的过程中,教师不应该通过某一门程序设计语言或者某一个特定的应用领域贯穿始终地讲授,而应该从计算的角度,讲述计算机科学的主要贡献和事件。学生学习算法以及建立计算机科学的思维方式,可以通过使用流程图、模拟器来演示一些简短算法的流程,使得能够在不涉及程序设计语言语法的情况下,就可写出一个简单的小游戏。Cortina在其所讲授的计算机导论课程里,覆盖了如下几方面的内容[2]:

(1) 计算机科学的发展史。例如:早期的设备,欧洲中世纪计算机科学的缓慢发展进程,Babbage 和Hollerith在19世纪的贡献,以及战争(二战、冷战)对计算机科学飞速发展的影响和促进,等。

(2) 用算法表达计算程序。例如:采用伪代码表示算法,用Raptor工具模拟计算过程可视化流程图,等。

(3) 数据的组织。例如:基本数据结构(数组、链表、栈、队列、树和图)、数据库和算法的典型构成(赋值、条件语句、循环和子过程,等)。

(4) 用计算机可执行的程序表达算法(即计算自动化)。例如:程序设计泛型(命令式、面向对象式、函数式和逻辑式)、编译器与解释器。

(5) 算法设计的技巧。包括递归、分而治之(如归并排序、汉诺塔)、贪心算法(如Huffman编码、最小生成树)和动态规划(如Fibonacci函数、所有顶点的最短路径)。

(6) 优化,让计算更完美。包括正确性(常量的使用,用数学归纳法证明算法的正确性)以及有效性(算法复杂度)。

(7) 计算的极限。例如:难解性、不可判定性和通用计算模型(图灵机和计数器程序)。

(8) 并发性。包括多处理器(同步、最大加速比和负载)、流水线技术和多任务(操作系统、死锁与饿死)。

(9) 应用。例如公钥密码学、人工智能(图灵测试和博弈树),等。

(10) 计算的未来。包括量子计算、纳米科技等客座讲座。

2007学年,共65人选修该课,分别来自人文与社会学院、商学院、工程学院、计算机学院和理学院。根据学生的反馈[2],80%的学生赞同客座讲座,55%的学生期望继续启用但应使用更多的图例进行讲解,85%的学生会将这门课推荐给朋友。

案例三:香港理工大学(Hong Kong Polytechnic University, China)

考虑到医务人员通常需要使用计算机工作者开发的远程临床设备。很多时候,这些临床设备启用了一段时间,但使用者却经常因为基础电脑知识的缺乏而遇到各式各样的问题。为解决此问题,香港理工大学计算机系专门为医务工作者开设了一门名为“计算机开明”(computer literacy)的课程,听课者包括医生、管理人员、市场销售人员以及经理,等。课程教案几经修改,每次修改均安排在实战训练课程后或者研讨会之后进行。该课程旨在概述计算机的基本运作、资讯科技在医疗系统中的应用,以及计算机的基本操作常识。授课内容包括:

1)(1) 计算机系统导论,包括计算机系统的基本组成(CPU、存储设备、媒体和I/O设备)和工作原理。

2)(2) 系统软件,包括系统软件的功能和操作,MS Windows的基本特点和命令,等。

3)(3) 汉字的输入方法。

4)(4) 数据库,包括数据库系统的体系结构,数据库系统的操作,等。

5)(5) 资讯科技的应用,根据计算机组织结构,介绍计算机的应用。

案例四:美国波士顿大学(Boston College, USA)

美国波士顿大学Parker and Schneider认为非计算机专业课程应该超越计算机语言的语法讲授,重点介绍计算机学科的整体情况,让学生明白计算机编程只是整个计算机学科的一部分。课程所要达成的目标在于向学生传递一种计算机“感觉”,在讲解计算机的一些主要概念及其相互联系的同时,让学生真正地在实验室里操作实践[4]。他们所设计的课程内容涵盖了计算机理论、硬件与逻辑设计、计算机组成、算法与数据结构、程序设计语言、操作系统与虚拟机、应用以及社会等诸方面。其教学风格是在每一个层次上,介绍重要的原理并引出在这个层次上学习的关键问题,然后,迈向下一个层次在一个新的抽象层次上对新问题展开讨论,同时和前一个层次的内容相结合。

2.2计算机应用课程的设置

由于上述计算机导论课程依然着重于计算机系统本身而非计算机应用,或多或少地强调计算机编程,就好像教一个想学开车的孩子如何修汽车,因而,那些受好奇心驱动的非计算机专业学生往往觉得此类计算机导论课程困难且乏味。为解决此问题,另一大类偏重于实际应用的计算机基础课程孕育而生,即计算机应用课程。

案例五:美国哈佛大学(Harvard University, USA)

美国哈佛大学Leitner等人提倡在非计算机专业的计算机基础教学中,讲授计算机应用而非计算机本身,强调计算机应用程序的使用而不是单调的程序设计练习[5]。课程的目标在于让学生学会用软件系统刻画和解决实际问题,以加强对相应计算机概念的理解与认识。课程设计应围绕计算机科学中最让人感兴趣的应用领域(如人工智能、计算机图形学、计算机视觉、信息检索、人机交互,等)来组织。在授课的过程中,每一种应用可从两方面来讲授:首先,给出计算机科学概念的一个直觉性概观;其次,强调应用的特定细节,务必每一个实例都和一个特定的软件系统联系在一起。学生不需要程序设计的基础,在课堂上也不讲授程序设计。在选择具体的应用案例时,注意选题必须覆盖计算机应用的关键领域并提供这些领域特点概念的代表性举例;需用到的软件必须易学、易用、易引起学生的兴趣,适合新手使用和实验,需假定学生除了用过Word或浏览器这类的基础软件之外没用过其他软件。这些系统既可以是商业软件、自由软件,也可以是自己开发的。参考文献[5]中给出了几个案例及其分析说明。

(1) 光线跟踪。运用计算机图形学原理(几何建模和光线传输与反射)、计算几何(计算交叉、几何搜索)等计算机知识。

(2) 动画粒子系统。涉及离散时间系统驱动(随机数)、数值方法(数值积分)等计算知识。

(3) 交互优化。涉及计算复杂性(算法与问题的复杂度、旅行商问题和NP完全)、人工智能(启发式搜索和优化)、概率论和统计(算法的经验分析)、人机交互(协同用户界面的设计)等计算技术。

(4) 图像增强。涉及电子成像(图像感知与表示)、图像处理(点操作、图像过滤、噪音去除)等计算技术。

(5) 人脸识别。涉及计算机视觉(形状识别、图形跟踪和运动分析)、人机交互(基于照相设备的界面)等计算技术。

(6) 万维网上的信息检索。涉及经典数据处理(关系数据库和有效排序和查找)、信息检索(名词集合的向量空间模型、倒排索引、链接分析法、语义网和协同过滤)等计算技术。

案例六:美国坦普大学(Temple University, USA)

美国坦普大学Aiken等人为非计算机专业学生设计了一门计算机案例课程,期望通过具体案例,结合特定领域的知识和逻辑,运用解决科学问题的一般性计算和数学方法,借助信息工具,引导学生解决关键的科学问题,达到让学生了解不同领域专家如何使用信息技术解决问题的目的[6]。在选择案例时,所考虑的依据为:①案例所表述的问题必须能激发不同专业学生的兴趣;②案例必须是一些实际工作中可能会遇到的;③通过案例阅读和分析,学生能迅速把精力集中到解决问题的策略和信息技术上,而不会被其他一些困难所牵制;④案例所表达的问题必须涉及计算机科学的主要概念和相关工具。参考文献[6]中详细地绘出了案例分析的模板,包括如下八个组成部分:

1)(1) 任务描述。包括问题陈述、动机、背景、研究与验证所采用的模型、边界条件、作为一般性问题解决策略的解题过程、学习目标、陷阱与失败的范例,等。每一个案例应代表某一类问题以及与其相关的解决方案。

2)(2) 课程计划和讲义。包括课程内容、特定目标、讲解与实验、独立活动、讨论专题和小组活动,等。

3)(3) 试验计划、活动与讲稿。描述学生在实验前应该作哪些思考、应该在实验室里做些什么工作以及这些工作的目的。

4)(4) 作业、课程项目、考试题和讨论问题。应留有足够的各类问题,用于自我评估并可供学生进一步自学。

5)(5) 数据。应有与案例分析相关的数据(如文件、数据库、图像、动画和演示)。

6)(6) 程序与工具。在案例分析中所用到的每一个程序和工具,在网上都应该有足够的文档,以及为什么选择这种工具的陈述。

7)(7) 额外的资源,供进一步学习之用。包括参考文献、信息网站、相关项目,以及项目完善的建议。

8)(8) 评价体系。对于案例分析中的每一种活动,指出学生应达到的程度。

参考文献[6]给出了如下几个案例供参考。①模拟时空下人类的行为,通过GIS模拟,跟踪2000年前到9000年前巴拿马中部热带森林里农民的扩张和随之而来的巴拿马森林的减少。②工业发展对职业年龄等造成的一系列影响,自1980到现在,审查、评价和解释美国职业分布的变化。③用计算方法探秘有机分子的结构,教给学生简单有机分子的物理性质和结构之间的关系,让学生利用物理定律和特定的计算方法预测简单分子的结构和性质。

2.3计算机编程课程的设置

在鼓励向非计算机专业开设计算机导论课和计算机应用课的同时,当前仍然有很多高校认同计算机程序设计课程的必需性。这是因为科学计算普遍存在于当今绝大多数的科学领域中,科学家们倾向于使用应用软件包而非程序开发环境。掌握基本的计算机程序设计概念、学习一般性程序设计技巧对使用这些软件包非常有帮助。如今,越来越多的科学软件包采用脚本语言、或更为完善的程序设计语言(如Matlab,Mathematica,等)。另外,教给学生一门程序设计语言对于将来想从事计算机科学工作的学生也是有用的。

一般意义上,计算机编程课的目的在于培养学生清晰思考的能力、通过编程解决实际问题的能力、以及感知计算机可以解决哪类问题的直觉能力(如计算机的最大能力以及计算的极限)。程序设计课程的讲授一般需遵循下列准则:①因时间有限,所讲授的程序设计语言必须容易学习和掌握;②程序设计语言必须能清晰反映计算机编程概念;③程序设计语言必须提供科学工作者常用的基本运算,例如将程序设计语言与图形集成在一起,学生就可以较为容易地学会画统计图表;④程序设计语言必须具有一般性,可以通过程序设计语言来解释计算机科学中遇到的重要概念,如语言必须可以用自然而简单的形式去表达树,也可以支持递归;⑤应用程序和例子必须经过认真、仔细地挑选,向学生展示这些例子与所学知识的内在关联,教给他们将来从事科学工作的技巧,且所选应用对于每个理工科学生来说都应是有趣、易掌握的。

案例七:美国杜克大学(Duke University, USA)

美国杜克大学Biermann在讲授计算机编程课程时,兼顾了两大部分的内容:计算机硬件/软件部分和高级专题部分[7]。计算机硬件/软件部分着重让学生理解计算是一个机械的过程,从开关电路和机器基本部件的连接开始,讲授晶体管和超大规模集成电路技术,以及如何将大规模电路集成到小芯片上,然后展示一个典型的机器系统结构,机器的运转以及如何用它编程,最后,解释一个小的编译器如何把高级语言翻译成机器可以执行的语言。在高级专题方面,主要介绍一些当今热门研究问题,让学生认识到计算机科学的局限性,包括计算机程序的时间复杂度、并行结构、不可计算性和人工智能,等。

案例八:美国马可雷斯特大学(Macalester College, USA)

美国马可雷斯特大学Kaplan 在讲授Matlab 程序设计课程中,一半用来介绍Matlab编程,包括数据类型、函数的参数传递、索引、读取标准文件的操作(如文本文件,电子表格)、构造函数、条件和函数;一半用来介绍理工科的实例,如声音(音乐合成、降噪音、速度变化,等)、图像(颜色调整、图像分片、边缘检测,等)、与数学的联系(公式的运用)、计算机科学(Fibonacci函数、汉诺塔、最优匹配、生物信息,等),以及图形用户界面(识别图像上的点),等[1]。

3结束语

一门优秀的非计算机专业计算机课程带给学生的影响与作用力将超过一个学期。纵观海外各大高校关于非计算机专业计算机课程的研究与实践经历,我们认为在设计一门非计算机专业计算机课程时,应遵循如下五大方面的设计准则:

1)(1) 设定目标。根据学校教学大纲的要求,同时参考ACM推荐的课程(/sigcse/cc2001),达到以下的目标。

目标1:让课程内容更相关,所有课程内容和作业都和学生的职业目标相关;

目标2:为启发学生的创造力提供机会,提供机会引导学生把计算看作是有趣而又富有创造性的活动;

目标3:让理论更为实践化,让学生把计算机科学看作是一项社会活动,而不是把它看作一项如进行黑客活动一样的非社会活动。

(2) 选择上下文。许多有力证据表明,如果不讲授一些抽象的概念,如某一具体领域内的程序设计,学生根本学不会。因此选择特定上下文是改进学习的一个关键点。如果以深度代替广度,我们可以教授更多的可转化的知识,同时,使得学生在某门课程结束后仍然可以应用这门课程所学到的知识。最好的方法就是在某些可以实际应用的特定环境中教他们编程。

(3) 设定反馈渠道。不仅从授课教师中取得反馈,而且也应通过多种论坛渠道,获取学生的反馈。

(4) 制定课程的基本结构。选择语言和编程环境是关键的问题,甚至在有些时候是非常谨慎的问题。对非专业课程中所使用语言的选择过程,与社会、文化极其相关,这种相关性甚至不亚于教法的相关性。

(5) 定义课程。确定课程讲授内容、作业和实践操练的详细内容。

参考文献

[1] D. Kaplan. Teaching Computation to Undergraduate Scientists. In Proc. of the SIGCSE 2004, Virginia, USA, 2004, PP 358-362.

[2] T. Cortina. An Introduction to Computer Science for Non-majors Using Principles of Cmputation. In Proc. of the SIGCSE 2007, Kentucky, USA, 2007, PP 218-222.

[3] Mark Urban-Lurain and Donald J. Weinshank, “Is there a role for programming in non-major CS courses?”, Michigan State University, USA, in Proc. ofFrontiers in Education Conference, 2000.

[4] J. Parker andG. Schneider. Problems with and Proposals for Service Courses in Computer Science. In Proc. of the SIGCSE 1987, MO, USA, 1987, PP 423-427.

[5] L. Marks, W. Freeman, and H. Leitner. Teaching Applied Computing Without Programming: A Case-Based Introductory Course for General Education. In Proc. of the SIGCSE 2001, NC, USA, 2001, PP 80-84.

计算机程序设计论文第6篇

关键词:计算机教学;计算机技术;人才培养

中图分类号:TP3-4 文献标识码:A 文章编号:1674-7712 (2013) 10-0183-01

一、前言

从目前计算机技术的发展来看,计算机技术已经成为了推动社会发展的重要力量。基于计算机技术的优势和实际作用,计算机技术成为了二十一世纪人才的必备技能之一。基于这一认识,在高校教育中,应积极开展计算机教学工作,应分析计算机教学特点,以及高校计算机教学的开展实际,认真分析当前形势下计算机教学工作的目的,并实现计算机教学的理论与实践知识的结合,同时重点做好计算机程序设计工作,满足计算机教学的实际需要,从根本上提高计算机教学的整体质量。

二、明确当前形势下计算机教学工作的目的

在新模式的驱动下,计算机教学工作必须紧紧围绕“以就业为导向”进行研究设计。在对计算机专业整体课程设计之前,教师应该首先深入到市场中进行调查研究,探讨当今的IT产业中各种专业的发展前景如何,何种专业需要何种类型的人才等问题;目前来看,当前形势下计算机教学工作的目的主要表现在以下几个方面:

(一)计算机教学应以培养学生实际能力为主要目的

从当前社会的实际需要来看,对学生的实际计算机能力有着迫切的需要,学生只有具备了较强的计算机实际能力,才能保证满足社会的实际需求。因此,在计算机教学中,应以培养学生实际能力为主要目的。

(二)计算机教学应以提高学生整体素质为目的

从当前的教育体系来看,计算机能力成为了学生整体素质的重要组成部分,只有不断提高学生的计算机水平和能力,才能达到提升学生整体素质的目的。由此可见,在计算机教学中,应以提高学生整体素质为最终目的。

(三)计算机教学应以指导学生就业为主要目的

在当前的教学体制下,计算机专业是高职院校的主要专业之一,也是学生选择就业的重要方向,为了保证学生能够在就业中获得一定的优势,计算机教学应以指导学生就业为主要目的,切实提高整体教学质量。

三、计算机教学应实现理论课程和实践课程的结合

高职教育重在锻炼学生的实训能力和操作技巧,旨在培养具有某种专业知识和技能的中、高级人才,其知识的讲授是以“能用为度”“实用为本”。根据高职教育的培养目标,教师在做好理论教学的同时,在进行教学设计时要注重学生的操作能力,切实将提高学生的实际操作能力作为教学目标,并以学生的实操成绩作为考核教师教学效果的依据。

考虑到计算机教学的特点,在计算机教学中,应实现理论课程和实践课程相结合,主要应采取以下措施:

(一)计算机教学应在课堂教学中兼顾理论教学和实践教学

为了保证计算机教学得到有效开展,应对理论教学和实践教学引起足够的重视,应在教学过程中重点开展理论教学和实践教学,满足实际教学需求,切实提高计算机教学的整体质量。

(二)计算机教学应积极开展课外实践教学

除了进行正常的课堂理论教学之外,学校应利用业余时间,积极开展计算机课外实践教学,达到全面提升学生计算机实践能力的目的,从根本上提高计算机教学的整体质量。

(三)计算机教学应采取理论教学与实践教学相结合的教学模式

考虑到计算机理论教学和实践教学的重要性,在计算机教学过程中,应采取理论教学与实践教学相结合的教学模式,重点做好计算机教学工作,满足计算机教学的实际需要。

四、计算机教学应重点开展程序设计理念的教学

计算机行业的发展与时俱进,具有应用普及广、市场周期短、技术更新快等特点。教师课堂上知识的讲授远远赶不上技术的发展速度,往往学院授课内容与当今最新技术相差3-5年。即便教师讲授最新的技术,过不了几年也必然成为过时产品。虽然如今科技发展很快,但是不论新老技术,其发展的核心理论和开发的思维方法仍然大同小异。计算机语言正以日新月异的速度发展,在教学过程中,教师不可能对所有语言都进行讲授,目前来看,计算机教学中应重点开展以C语言、JAVA语言为主的程序语言教学工作,同时,还应重点开展程序设计理念的教学。具体应采取以下措施:

(一)计算机教学应明确程序设计理念的重要性

在计算机教学中,程序设计是重要的教学内容,也是衡量学生计算机技能的重要方面,因此,计算机教学应采取先进的程序设计理念,并对程序设计理念的重要性有足够的重视。

(二)计算机教学应对程序设计理念进行及时创新

为了保证计算机程序设计理念能够满足实际需求,应对程序设计理念进行及时创新,满足计算机教学需要,从根本上提高计算机教学质量,达到提升计算机教学效果的目的。

(三)计算机教学应将程序设计理念作为主要的教学内容

在传授学生计算机程序设计知识的同时,还应对程序设计理念进行全面介绍,并将程序设计理念作为主要的教学内容来开展。

五、结论

通过本文的分析可知,在当前形势下,只有对计算机教学工作引起足够的重视,并认真做好计算机教学工作,才能满足实际教学需求,达到提升学生整体计算机水平的目的。因此,在计算机教学过程中,应从明确当前形势下计算机教学工作的目的、实现理论课程和实践课程的结合和重点开展程序设计理念的教学等方面,重点做好计算机教学工作。

参考文献:

[1]董海真.浅谈中职计算机教学中如何实施创新教育[J].电脑知识与技术,2010,27.

[2]刘玲.浅谈职业学校中的计算机教学[J].成才之路,2010,36.

[3]保新勇.创新教育在中职计算机教学中的应用[J].科技致富向导,2011,3.

[4]陈静.关于职业学校计算机教学的探讨[J].河南教育(中旬),2011,2.

计算机程序设计论文第7篇

《计算机原理教程》是一本以理论计算机为对象的系统讲述计算机基础理论和方法的教材,内容主要包括计算机产生发展的基础理论、计算机运算器、存储器、指令系统、控制器、总线结构、输入输出设备、输入输出接口、DMA、通道处理机、汇编程序设计、操作系统等原理和基本设计方法,这些都是学习计算机软硬件必须了解和掌握的基础知识。该书是作者20余年计算机教学和科研经验的总结,是一本系统学习计算机理论和方法的入门书。

该书独具特色地解析了软件程序设计的顺序、分支、循环、子程序调用、中断等程序结构对硬件的依赖关系,系统地讲述了指令的一般设计方法,详细讲解了DMA、通道等部件计算机和相关指令的设计,将程序设计结构、程序执行和计算机组成结构紧密地结合在一起,有机地揭示了计算机软件与硬件的相互关系,特别强调“硬件是软件的基础,软件是硬件的完善与发展”的思想。

书中介绍的计算机的记数原理、信息存储原理、限位数运算原理、总线结构的数据传输原理、计算机控制原理、指令与程序设计原理、主机与外设信息交换原理、软件与操作系统原理、多处理机系统与网络计算机系统发展原理等,不仅是计算机专业人员必须掌握的,也是计算机文化的重要组成部分。

该书与其他同类教材相比,结构清晰,内容更加系统连贯,没有知识瑕点。书中用理论模型计算机作为剖析的目标,知识性和理论性较强,方便深入浅出地阐述。由于理论计算机没有实际计算机那些应用上的复杂问题,因而全书内容系统,结构相对简单,直击目标,更易于学习内容的把握。书中对计算机各个部件的论述都给出了逻辑原理图,这些原理图都可以直接成为实际计算机设计的设计图。通过原理图的设计,不仅能够简单直观地讲解计算机的理论,而且也实际培养了读者的计算机设计能力。

将计算机硬件和软件紧密配合讲解计算机,也是《计算机原理教程》的一个特色。书中将硬件发展和软件的需求联系起来,以十分简单的形式给出键盘管理程序和设备驱动程序的设计实例,这种将软硬件有机地结合在一起的处理方法,贯穿全书。这种处理手法使读者更容易理解软件和硬件不可分割的关系,让读者真实地感受到软件对硬件所起的作用,从而进一步加深对计算机基本概念的理解。

《计算机原理教程》虽然是一本教材,但所阐述的内容,许多都具有一定的理论价值。例如对补码制的理解,对虚拟存储空间和操作系统管程的解释等都有更深的内涵。特别是对书中所述计算机启动运行的全过程的描述,为读者揭示了计算机的整体工作过程,为将来进行深入地学习和全面地理解计算机创造了条件。

该书也兼顾到计算机汇编语言程序设计、编译方法和系统程序设计等内容,在讲述硬件的同时,介绍软件的方法,这不仅使内容更加完整,而且也为读者专修这些课程奠定了必要的基础。

《计算机原理教程》还有一个突出的特点,那就是计算机知识引入起点不高,内容系统连贯,具有高中以上文化水平的读者,都可以看懂学会书中的内容,跟随作者设计的步伐,逐渐进入计算机系统的领域。该教材可以作为计算机系统知识学习的第一门课。

配合计算机原理课程,作者还编写了《计算机原理教程习题解答与教学参考》,供教学和学习选用。读者若深入学习计算机设计,可学习《基于QutartusII的计算机核心设计》教材,它可给计算机原理内容更实际的支持,《计算机原理教程》的许多设计,都可以直接成为计算机设计的实例。

《计算机原理教程》不仅适用于本科计算机专业,也适合于本科计算机应用专业。书中带“*”的内容有一定的难度,非计算机专业可以选讲,而且这样处理的结果,不影响全书的完整性和内容的基础作用。

计算机程序设计论文第8篇

【关键词】计算思维 C语言程序设计 教学改革

引言

C语言一直在等级考试和实际应用中占有不可或缺的地位,逐渐也成为国内各高校工科专业广泛使用的教学课程。它作为一种优秀的结构化程序设计语言,其功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好、既具有高级语言的优点,又具有低级语言能够直接操作底层硬件的特点,既适于编写系统软件,又能方便地用来编写应用软件。

《C语言程序设计》课程处于非计算机专业计算机基础课程3个层次(大学计算机基础、计算机程序设计基础、计算机应用基础)中第二层次,是一门理论性和实践性很强的课程。所以,教学工作者单纯利用传统的教学模式,并不能有效帮助学生在这一课程上获得大步提升。相反,可能增强学生的抵触心理。因此,改革C语言程序设计课程教学模式改革刻不容缓。

一、计算思维的含义

2006年3月,美国卡内基・梅隆大学计算机科学系主任周以真教授在美国计算机权威期刊上提出:计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。所以,在这里的“计算思维”不是狭义的计算机编程,而是运用计算机基本概念去求解问题、设计系统和理解人类行为。

二、C语言程序设计课程的现状

《C语言程序设计课程》作为高校理工类非计算机专业本科学生的一门的计算机基础课程,重要性不言而喻。C语言课程更是数据结构、C+面向对象程序设计、操作系统和软件工程等课程的基础,并可为这些课程提供实践工具。但是,一般而言,C语言程序设计所涉及的课程内容较为抽象,而大量的概念及语法更使得这门课程乏味无趣,降低学生的学习兴趣。并且,即便学习了这门课程,很多学生在处理问题时,仍不能利用C语言进行思维、表达,仍未建立起程序设计的计算思维模式,不会运用计算机基本概念去求解问题。

(一)无意识计算思维教学

传统教学模式的教学方式是:用大量的时间讲定义、语法、概念、语句,对学生的要求是注重接受、理解、记忆,讲课方式是老师讲、学生听。学生掌握的只是比较抽象、机械、静止、片面和孤立,他们不知道如何灵活地综合运用这些知识去解决实际问题,缺乏计算思维的培养。

(二)教学形式陈旧忽视整体思维培养

在教学过程中,教学工作者重视理论,轻视了《C语言程序设计》课程的实践性。理论教学与实验教学是两个相互依存、相互促进的教学体系。实验教学相对于理论教学更具直观性和创造性,可以让学生在实验中更好地理解理论知识。《C语言程序设计》虽然已经有了相对独立的实验教学计划,但实验内容脱离实际,导致理论和实际教学相分离,不能有效培养学生的实践能力和创新能力,制约学生整体思维能力的提升。

(三)教学内容偏重语法细节轻视而忽视算法思想

在讲解《C语言程序设计》课程时,教师过分注重C语言的一些语法规则,忽视程序设计部分,从而致使语言与程序设计不能有机结合,忽视了对学生算法思想和能力的培养。如此,突出了C语言程序设计枯燥的一面,难以调动学生的积极性和主动性,同时,对培养和锻炼学生的逻辑思维能力具有局限性,影响学生的问题分析理解和求解能力发挥。明确该课程的重点并非一些语法细则,而是培养学生思考问题、分析问题的思维能力和思维模式。

三、《C语言程序设计》课程的教学改革

《C语言程序设计》是典型的计算思维课程,其中的教学内容也成了计算思维能力培养的重要内容。任课老师可以以解决实际问题为引导,讲授C语言程序设计中最基本的方法,将程序设计中的语法知识有机融入,避免知识太过零散,影响学生的记忆和思维能力,进而消磨学生习积极性。

《C语言程序设计》课程是C语言与课程设计相结合的一门课程,这就要求教师既要讲解C语言的一些语法规则,又要重视程序设计。而对于计算机专业的学生来说“程序设计”应该是重点。所以,在整个学习过程中,就要让学生感觉是在学习“程序设计”,学习如何分析问题,解决问题,而不仅仅是在学习语法规则。相反,如果学生对于C语言的语法规则不熟悉,也会影响编程学习,进而影响学生的积极性。因此,将C语言与程序设计有机结合,是对于教师的基本要求。也是培养学生计算思维能力的一种方式。

在教学过程中,教师应一改传统固化的教学模式,采用多种灵活的教学方法和手段,提高教学效率,加强学生对于计算思维的培养。上课时,教师可以在短时间内把课本的主要思想和问题作引导性的讲授,然后有目的的布置具有一定代表性和实际意义的课题或小型项目,并简单提示解决思路,让学生通过讨论、查资料、做实验等方式完成任务,借此来理解相关知识及应用,达到融会贯通知识的目的。这种方式不仅提高学生学习的积极性和主动性,锻炼学生解决实际问题的能力,而且培养学生的思维方式和能力。

针对形式单一的考试制度,可以加大平时成绩和阶段性考核成绩在课程总成绩中所占的比重。将实践环节和理论环节相结合,加强实验考核,在规定时间内上机并完成实验习题,根据完成习题的数量、质量,记录成绩。如此,实验教学和理论教学同步进行,利于培养学生的思维能力。

四、结论与展望

计算思维不单单关联C语言程序设计课程,更与我们的生活息息相关,在到处都有计算机存在的时代,计算思维也越发重要。《C语言程序设计》课程的教学改革,是希望学生在学习C语言的同时,计算思维同样得到训练,从而提升学生的认知能力,为其专业课程的学习打下良好基础。当然,以计算思维为基础的C语言程序设计课程教学改革也并非是一蹴而就的事情,在这个过程中,我们仍需要不断学习、研究、实践、总结和优化。

参考文献

[1]郑爽,王全民,李秀荣. C语言程序设计课程中培养计算思维的案例教学法研究[J]. 计算机光盘软件与应用,2013,21:210-212.

[2]丁岩,张宇昕. C语言程序设计课程改革与计算思维的培养[J]. 重庆与世界(学术版),2014,01:84-86.

计算机程序设计论文第9篇

【关键词】TRIZ理论;创新;程序设计;教学方法

0 引言

我国高等教育已经把培养具有创新能力的人才作为一项迫切的任务。创新问题解决理论是前苏联发明和创造学家G.S.Altshuller 在1946年创立的,“TRIZ”是其俄文单词(Teoriya Resheniya Izobretatelskikh Zadatch)的首字母。目前TRIZ在创新设计、创新教学、创新科研等方面得到应用,取得了可喜的成果,其中阮汝祥 [1]和高常青 [2]在TRIZ的理论和发展、应用等方面做了详细的研究;江敏[3]和卢惠林 [4]在计算机课程中具体如何应用做了深入的研究。但是,这些研究一般都是针对TRIZ理论本身的研究,或是对程序设计类专业课研究,很少对计算机程序设计公共课程的研究,对于非计算机专业学生,程序设计类课程作为一个学生必修课,它不像计算机专业学生要求那么高,设计的程序也不是特别深,只是与自己所学专业有效结合,通过该课程,培养学生的计算机思维、计算机素养,所以更体现出需要创新思维的深入挖掘。本文将TRIZ理论与学生创新能力培养相结合,将其应用到计算机公共课程素养教育中,为培养具有计算机素养软件的创新性人才培养提供一条辅助途径。

1 TRIZ理论的创新思想

TRIZ的含义是 “发明问题解决理论”。经过50多年总结出解决技术矛盾所遵循的创新原则,建立起了一整套实用的解决发明问题的理论和方法体系――TRIZ理论体系。TRIZ理论体系[1]主要包括以下几个方面:问题分析与建模方法;技术系统进化法则;冲突解决原理。

TRIZ理论的创新方法指的是解决冲突的原理,最终建立了包括发明原理、发明问题解决算法和标准解在内基于知识的逻辑方法。在利用TRIZ理论解决实际问题的过程中,首先可以将问题建模成TRIZ模型,然后利用TRIZ理论提供的方法和工具,找出该问题的普适解,再根据实际的情况和环境,最终将普适解转化为领域解或特解。

2 程序设计教学传统模式

程序设计课程长期沿袭传统教学模式:以一种高级语言(如Visual Basic或Visual C++)的语句体系为脉络展开教学,详细地讲解其语句、语法。教学通常采用整堂灌输书本知识,比较抽象,枯燥无味,使学生产生畏惧心理。学生每学习一个语句只需要做一些与该语句有关的习题,学生很少动手实践。教师在实践教学过程中, 对一些问题的解决,方法模式化、绝对化,有没有其他途径或思路,存在哪些不确定因素和各种选择的可能性等。

3 TRIZ理论在计算机程序设计教学中的应用

教学中采用TRIZ理论中发明式教学,将本课程与专业特色相结合,鼓励学生自己思考,并对他们的思考结果给予鼓励,培养他们思考的成就感,进而激发他们的创新思维,使得课堂教学在动态思维变化中,不断提高学生创新能力。

3.1 基于TRIZ 理论进行发明式教学,启迪学生的创新思维和发散思维

针对非计算机专业的学生,在教学中采用TRIZ理论,将本课程分为几个关键点,对关键点鼓励学生自己思考。对学生的创新思维训练的主要方法有:

3.1.1 采用基于专业特色的案例教学法

1/4时间教师传授该知识点,使学生在理论上产生认知。

1/2时间教师与学生互动式解决问题,本专业实际应用在哪些方面,如何应用,有没有更好的方法等等。

3/4时间学生在教师引导下,练习完成问题分析和求解过程,并有效地举一反三。

最后学生自己梳理、总结、提炼知识,并归纳分析问题和解决问题方法,教师进行适当调整。

3.1.2 采用综合作业(项目)引导学生的创新思维

TRIZ理论认为,对问题中存在的矛盾和冲突的解决,作为程序设计类课程,其最终目标在于培养学生的程序开发能力,所以在程序设计课程中,所谓的“冲突”,就是如何培养学生根据实际专业特点,学以致用中的项目开发能力,提高实战能力,即项目教学法[5]。在教学进行到一定阶段时,可以让学生完成一个完整系统的开发,完成整个的开发流程,包括需求分析、设计、开发、测试等等,同时,在实践的过程中,给学生足够的创新空间,在实际项目中培养和鼓励学生发散性的、创造性的设计。

3.1.3 进行创新思维技法和思维方法的训练

每讲完一个知识点,可以让学生相互启发,激发他们的联想思维、想象思维、灵感思维, 进而得到创新的成果,然后再进行拓展,使学生在视觉、感性认识得到充分利用,激发他们的创新激情。

3.2 TRIZ理论ARIZ算法的实践教学,强化实训教学

在课程教学中穿插TRIZ理论的ARIZ算法实践教学,主要从下面几个方面改革:

3.2.1 课程设计和实验内容的改革

将实验课程加强综合性和设计性实训的开设,加入自己的创新思维,才能完成实训内容。这个实践环节对培养学生的创新能力有着重要作用。这些实践课程采用兴趣组合、团队合作、相互帮助和启发的方式,对现有的问题提出创新性解决方案。

3.2.2 实验考核方案改革

采用上机自主学习系统,对每个实验项目按知识要点分配分值,为每个实验项目配置评分程序和测试数据,在实验课结束前10分钟对所有学生的提交的程序进行快速评测,生成评测结果报告,报告中详细记录每位学生的得分情况以及每题完成情况。这种实验考核方案不仅将教师从低层次的批改实验报告等繁杂的工作中解脱出来同时增强了批改的准确性,降低教师重复性、简单性工作量;而且在分数驱动下,大大提高了学生的实验积极性和主动性,实验出勤率达到 95%以上,提高学生了动手编程能力。

3.2.3 积极开设第二课堂, 鼓励学生参与创新活动

基于TRIZ理论的问题解决过程, 是发散思维和收敛思维相互作用的过程, 是运用逻辑思维和非逻辑思维的过程,具体环节的思考又充分利用各种创新思维方法。结合各个学院专业特点和教学优势, 程序设计创新实训联盟,具有实践经验的双师型教师构建第二课堂, 供学生在课余进行创新活动。

4 总结

经过对非计算机专业计算机程序设计类课程的教学研究和实践,我们认为要破除旧的教学体系,需要用新的理念、新的内容、新的方法组织教学,针对非计算机专业学生对程序设计类课程的认知特点、认知心理、学习模式。提出基于TRIZ理论培养创新能力,TRIZ理论不能直接提供问题的创新解决方案, 将通用解转化为特殊解是有效运用TRIZ理论的关键。用先进的程序设计理论指导程序设计教学,在教学中加强编程算法、逻辑思维和编程方法的学习。

【参考文献】

[1]阮汝祥.TRIZ理论与创新方法[K].北京:中华人民共和国工业和信息化部,2009.

[2]高常青,黄克正.由TRIZ理论的通用解求问题的特殊解[J].中国机械工程,2006(1):84-88.

[3]江敏,花丽.TRIZ理论在Web程序设计教学中的应用[J].电脑知识与技术,2012,8(23):5641-5644.

相关文章
相关期刊
友情链接