计算机程序设计论文合集12篇

时间:2023-03-23 15:26:05

计算机程序设计论文

计算机程序设计论文篇1

1.1教学设计概述

所谓教学设计,就是为了达到一定的教学目的,对教什么(课程、教学内容等)和怎么教(组织、方法、媒体的使用等)进行设计。教学设计不等同于传统的备课写教案。教学设计有利于教学工作的科学化,使教学活动纳入科学的轨道。教学设计的意义就在于追求教学效果的最优化,不仅关心教师如何教,更关心学生如何学,注重将人类对教与学的研究结果和理论综合应用于教学实践。教学设计主要包括确定教学目标、组织教学内容、分析教学对象、选择教学形式和方法及教学媒体、设计教学过程、教学质量评价设计等基本环节,其中,设计教学过程是课程教学设计的核心。

1.2该课程教学设计的内容

西安理工大学C语言程序设计课程组于2003年出版了《C语言程序设计教程》及配套的《C语言程序设计教程上机实验与学习指导》特色教材。自2011年开始,非计算机专业选用的教材与计算机专业不同。目前非计算机专业选用《C语言程序设计》(第1版,张毅坤教授,高等教育出版社,2011)作为该课程的教材。非计算机专业C语言程序设计的教学设计是一项复杂的系统工程,主要包括课程教学设计、章节教学设计、课堂教学设计和实验教学设计,以西安理工大学C语言程序设计课程教学大纲为指导,以《C语言程序设计》(第1版)及其配套教材为基础,确定课程教学设计的内容:①将该课程的教学目标确定为“掌握C语言的基本语法和语义,理解结构化程序设计的思想和方法,提高学生的编程能力和调试程序的能力”。②组织教学内容的关键是进行教材的组织呈现,理论教学内容包括《C语言程序设计》(第1版)的第一章至第八章,实验教学体现于该教材的第九章及配套教材。③学生作为教学对象始终是教学过程中的重要角色,工科非计算机专业的种类多,分析教学对象就是掌握学生特点与了解专业背景并重。④重点突出课堂教学设计,传统教学与案例教学有机结合,“讲解+多媒体演示+课堂板书”缺一不可。⑤设计教学过程与“组织教学内容”联系最为紧密,主要包括课堂教学设计和实验教学设计,教学过程设计遵循的总原则是:激发学生兴趣,注重能力培养,合理安排教学顺序,讲清重点与化解难点紧密结合,课堂提高与课后巩固拓展有机统一,并预测教学实践中可能出现的意外情况。⑥将学生评价、同行评价、教学督导组专家评价、主管教学的领导评价和教师自我评价这几种评价的结果综合起来,比较客观的评价教学效果与教学质量。

2教学设计的实践及效果

我们连续多年承担非计算机专业C语言程序设计课程,先后承担过西安理工大学电气工程及其自动化(电力)、水文与水资源工程、印刷工程、包装工程和材料科学与工程等专业的C语言程序设计的理论教学和实验教学任务。始终将上述教学设计的内容贯穿于课堂教学和实验教学之中。C语言程序设计本身是一门实践性很强的课程,加之各个理工科专业的特色鲜明,所以结合学生所学专业特点与需求,同一门课程,针对不同专业的学生,适当调整教学设计内容,并在教学实践中检验教学效果。2012年以来,学生对笔者的教学评分一直在95分以上,也给予了肯定性的评价,例如“采用启发式教学,阐述问题深入浅出,重点突出,能理论联系实际或联系学科发展的新成果”;“对于您的授课方式我们很满意,感谢您对这门课程的热忱,我们会努力学下去”;等等。

计算机程序设计论文篇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.

计算机程序设计论文篇3

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2015)49-0276-03

一、《程序设计》课程简介

《程序设计》是高等学校理工科专业普遍开设的系列必修课程。这门课主要讲授用高级语言如C/C++及Java等开发计算机程序的基本知识,培养学生用计算机分析并解决问题的能力,使学生掌握软件设计的基本方法,为后续课程奠定基础。

国内高校普遍将《程序设计》课程按照语言的不同分为多个系列:C语言、C++语言及Java语言等。不同学校及专业根据各自的培养方案为学生开设其中几种,至少有一种语言(一般是C语言)为必修,开设于大一及大二学年,理论课与实验课共60~100课时,持续1~2个学期。各高校也普遍为计算机相关专业高年级学生开设其他流行编程语言如Visual Basic以及更专业化编程语言如Matlab、SQL及HTML等等。这些语言的基本语法与C语言相似甚至是高度相似,程序设计思想相通,因而其教学也高度依赖于低年级程序设计课程的教学效果。

二、面向新生的《程序设计》课程

对计算机及软件等专业的学生而言,《程序设计》是一门专业基础课,这门课程一般开设于本科一年级,因而授课对象主要是本科新生。一方面,大多数计算机相关课程如《数据结构》、《操作系统》及《数据库》等都需要编程语言的基础知识,学生在这门课收获的学习成果对高层次的学习乃至工作都具有非常重要的意义;另一方面,编程语言课程的教学能够直接训练学生的计算思维[1],计算思维的形成和培养,是目前高等院校计算机教学,甚至包括非计算机专业的计算机基础教学所追求的一个重要目标。在学生刚刚升入本科阶段,而几乎不曾开始学习专业课,专业思维模式尚未形成之前,就逐渐培养其计算思维,又显然是这项任务的重中之重。

高中信息技术课程一般包括Visual Basic等编程语言的知识,但长期以来,受高考指挥棒的影响,全国各省市的小学、初中与高中教育普遍对计算机(信息技术)课程的重视程度不够。在程序设计不作为会考要求内容的省份,一些学校甚至没有开设编程语言课程,或者要不做任何要求,导致在高中阶段,教师与学生的教学兴趣度极低。一个最直接的后果是,即使是计算机相关专业的学生,刚进入大学时,也普遍对程序设计这类课程既陌生又恐惧。

由于这类课程本身的深度与难度,本科新生,特别是在高中阶段没有学过程序设计,甚至几乎不曾接触过计算机的新生,往往承受较大的学习压力,如果不能很好地掌握程序设计的思维与方法,学生很容易丧失学习计算机相关课程的兴趣与信心,从而影响整个大学阶段的专业学习,因而承担大一新生程序设计课程的教师也同样承受较大的教学压力。如前所述,这个问题产生的直接原因固然是高中信息科学知识储备的不足,但根本原因还是学生在从多年来已经习惯的数理化式的定义与公式学习模式转变为以计算机学科为代表的设计与实验的学习模式时产生了障碍,或者说学生没有能够形成学习计算科学应具有的思维模式。因而解决这个问题的关键即是,要通过程序设计课程的教学使学生形成并逐渐强化计算思维。

三、计算思维的内涵及重要性

按照卡内基・梅隆大学Jeannette M. Wing教授提出的广义概念[1],计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。而具体到程序设计这门课,计算思维可以理解为编写高级语言程序的方式解决问题的思维活动。由此可以看出,程序设计课程是培养学生的计算思维最重要的方式之一,而培养学生的计算思维也是程序设计课程最重要的目的之一。

计算思维这一重要概念被提出后,引起高等教育界的广泛注意。关于如何在程序设计课中培养本科生的计算思维能力这一问题也成为高校计算机教学中普遍关注的问题。文献[2-4]讨论了如何通过计算机基础教学培养计算思维,文献[5-7]讨论了通过程序设计课程培养计算思维,文献[8]讨论了如何通过程序设计培养学生的多种思维能力,文献[9;10]提出以计算思维为导向开展程序设计教学,文献[11-13]提出了基于计算思维的程序设计教学改革方式,文献[14;15]讨论了通过程序设计课程培养计算思维的具体实践方式,文献[16]探讨了如何以计算思维为训练目标设计程序设计案例,文献[17]讨论了如何通过非计算机专业的程序设计课程培养计算思维。但围绕如何针对新生开展高效程序设计课程教学[18],以及如何培养新生的计算思维这些方面的研究却还很少。

计算思维,顾名思义,即“一切皆为计算的思维”,可以把它理解为一种将复杂的实际问题都转换为可以用计算机解决的思维模式,而计算机解决任何问题的本质,显然都是通过各种计算来完成的。掌握用计算机解决问题的方法,是当今社会中最重要也是最基本的技能之一。要实现这一目标,就要靠计算思维的长期渐进式培养与发展,这主要涉及两个方面的任务:(1)需要了解计算机求解问题所使用的计算方式。只有了解计算机计算的方式,才能判断一个问题是否可以直接被计算机求解,也才能将待求解的问题转换为计算机可以求解的形式;(2)需要掌握用计算机求解问题的设计方法。只有能够设计出让计算机求解问题的计算方法,即算法,才算真正掌握了计算机科学。在众多计算机相关课程中,程序设计是能够实现以上两个任务的重要载体课程,而计算,作为计算机解决问题的终极形式,又显然应该是实现培养计算思维这一目标的核心训练手段。

四、以《程序设计》培养计算思维的实践策略

本人所在基础教学部承担上海电机学院全校非计算机专业及计算机专业本科一年级学生的程序设计课程教学任务,包括C/C++语言及Java语言,分两个学期授课,理论课共64学时,实验课共32学时。从字面意义就不难看出,“计算思维”的核心思想是计算的能力和技巧。在教学中,我们以计算作为最重要的训练方式,贯穿于整个教学环境中,尝试以计算促进计算思维的形成。具体地,我们主要采取以下方法:

1.用计算问题让学生快速开始程序设计。学生都经过从小学到高中的数学训练,普遍对各种基本数学问题非常熟悉。用一些最简单的计算问题例如“从键盘输入数值,计算其和差积商”可以使学生迅速上手,开始学习编写程序。一方面,这样可以避免在学习初就因受困于复杂的问题本身而影响编程语言语法规则的学习;另外一方面,也使学生通过解决简单的计算问题获得学习新课的成功感和自信心,提高对后续课程学习的兴趣。

2.用计算问题使学生了解程序设计实现计算的规则。在讲授选择结构程序设计时,我们使用了“数学年份,输出各月天数”的例子。一年中的各个月份天数不同,仅需分为三种情况;二月份的天数需要根据该年是否是闰年来判断,而闰年的判断是小学生都非常熟悉的:即年份能被400整除;或能被4整除但不能被100整除。为了用编程语言描述这种判定规则,就需要引入逻辑运算符表示“与”和“或”的关系并且要准确理解运算符的优先级。这样就可以通过一个例子充分了解分支结构程序的设计规则和逻辑计算的规则。

3.用计算问题使学生了解用计算机解决问题所需要考虑的额外因素。在进行一般的数学计算时,除了有些情况要求数值只能是整数,我们一般不必考虑一个数是整数还是小数。但是用高级语言处理数据,除了比较特殊的Python等语言不区分数据类型,一般的高级语言如C和Java都是严格区分数据类型的。在数学上,我们可以很自然地书写x=1,y=0.5,但是在编程语言中,如果x被定义为浮点型,那么整数转换为浮点数,涉及表示方式的转换,可能会丢失精度;如果y是整数,将浮点数转换为整数会丢失小数部分。而后者,在类型严格的语言如Java语言中甚至是不允许的。虽然单纯的数学计算几乎不涉及整数和浮点数类型转换的问题,但数据的类型转换却是程序设计中最容易出错的。通过编写测试性程序验证0.1+0.2不等于0.3,学生的印象会非常深刻,并且能够更直观地了解在用计算机计算时,数据类型精度是一个必须要考虑的因素,从而形成一种思维模式,在设计计算方法时能够处处考虑类型与精度的相关问题。

4.通过计算加深对计算殊规则的理解,强化计算思维。在教学中,我们会让学生编程练习求“3斤2元的蔬菜,6斤多少钱”这样看似极其容易的问题。大多数学生会因为按照数学的习惯书写2/3*6这样的表达式而得到看似荒谬的答案0,这样的错误在程序设计中非常普遍地存在,并且在调试代码时这类错误隐蔽性极大,不容易被发现。只有通过大量这类的计算练习,才能让学生充分理解程高级语言(C/C++/Java等)中/的特殊运算规则,即整数除法的结果还是整数,如果要得到比较准确的结果,至少要把被除数和除数中的一个转换为浮点数,对于变量需要使用强制类型转换,对于常量,除了强制类型转换,还可以在后边添加.0,及2和2.0在计算中是截然不同的两个数,产生的计算结果也是全然不同的。由此可以进一步强化对数据类型转换的理解。

5.用计算问题使学生了解纯粹的数学思维和计算思维的差别。在讲解循环结构时,我们让学生编程计算两个数的最大公约数和最小公倍数。大多数学生会受困于小学数学中学过的短除法方法:用一个一个公因子依次去除两个数,直到商是互质的。对于手工计算,这种方法当两个数都不太大,公因子比较容易找且不都太大的情况是非常容易且直观的。但是用计算机套用这种思路编程时就会遇到麻烦:手工计算式公因子是直观“看”出来的,而计算机是没有办法一下子猜到一个公因子的。但是利用循环,这个问题就迎刃而解。按照定义,最大公约数,就是最大的可以整除两个数的数,最大不会超过两个数中较小的一个,只要用循环,从两个数的最小值开始,一个一个尝试,每次减1,找到一个能够同时整除两个数的数,就是答案而不必继续找,而各种高级语言普遍都提供了求余的运算符。当两个数变得很大时,这种方法的效率很低,于是可以利用循环实现更快寻找最大公约数的辗转相除法;对最小公倍数的练习,也同样可以强化循环的学习效果。通过这些例子可以使学生清楚地意识到,数学中的计算方式转换为计算机的求解过程需要一定的转换,而这种转换正是计算思维的关键所在。

对以上几种计算训练模式,一个重要的环节是让学生在实验时犯错误,通过在计算中发生看似怪异的错误,而运算过程在数学上看来又无懈可击,才能通过仔细的错误分析与代码调试,发现按照一般思维无法发现的,由于计算机编程语言处理问题的特殊性而导致的错误,这样才能使学生对这类错误的印象更深刻,从而尽可能减少今后出现同类错误的可能。

五、结语

在程序设计的教学中,我们利用学生普遍具有长期打下的良好的数学基础这一特点,通过采取以上几种方法,让学生在解决计算问题时学会设计计算方法,逐步形成计算思维模式、加强计算思维方法,最终培养其计算思维能力。目前,课程教学改革正在持续进行阶段,已初步取得一定成果,但还缺乏更久更大范围的理论研究和实践论证。我们希望能够以这些改革措施改进理工科《程序设计》课程的教学效果,为大一学生学习后续课程打下良好的基础,使他们受到全面的计算思维训练,具有良好的信息素养,最终提升他们在走出校园进入当今信息社会时的核心竞争力。

参考文献:

[1]Wing J M. Computational thinking[J].Commun. ACM,2006,49(3):33-35.

[2]朱鸣华,赵铭伟,赵晶,et al.计算机基础教学中计算思维能力培养的探讨[J].中国大学教学,2012,(03):33-35.

[3]陆汉权,何钦铭,徐镜春.基于计算思维的“大学计算机基础”课程教学内容设计[J].中国大学教学,2012,(09):55-58.

[4]李波.计算思维与大学计算机基础[J].中国大学教学,2012,(07):43-45.

[5]冯惠妍,陈争光,邰建华,et al.程序设计中“计算思维”的教学研究[J].农业网络信息,2013,(04):120-122.

[6]王卫华.在程序设计类课程中培养学生计算思维能力的思考[J].武警学院学报,2013,(07):51-53.

[7]王先超,王春生,胡业刚,et al.以培养计算思维为核心的C程序设计探讨[J].计算机教育,2013,(13):44-47.

[8]卜晨月.程序设计与学生思维能力培养的探讨[J].林区教学,2013,(03):72-73.

[9]董卫军,邢为民,索琦.以计算思维为导向的程序设计课程改革与实践[J].工业和信息化教育,2013,(06):60-64.

[10]刘光蓉.以计算思维能力培养为导向的C程序设计实验教学[J].实验技术与管理,2013,(01):154-156+191.

[11]刘晓璐.基于计算思维的Java程序设计教学改革[J].广东技术师范学院学报,2013,(05):108-110.

[12]孙丽君,杨志强,高枚.围绕计算思维培养的程序设计课程改革[J].计算机教育,2013,(05):29-31+38.

[13]徐燕,潘亚平.计算思维与计算思维能力培养――谈大学计算机基础教学改革[J].江苏技术师范学院学报,2013,(02):92-95.

[14]商书元.计算思维培养在程序设计课程中的实践[J].教育教学论坛,2013,(39):203-205.

[15]张雪伍,常晋义.计算思维在C++程序设计教学中的应用[J].计算机教育,2013,(13):52-56.

计算机程序设计论文篇4

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

计算机基础是高等学校非计算机专业的一门公共基础课。该课程的主要目的是培养大学生的信息技术素养;提高学生利用计算机分析和解决实际问题的能力;使之具有较强的软件应用能力和一定的程序设计能力。

计算机技术的发展即离不开计算机专业设计人员,也离不开计算机应用人员,各行各业的计算机应用人员是推动计算机发展的主力军。高等院校非计算机专业的大学生是未来各行各业计算机应用人员的主体,他们所具有的计算机能力是能否胜任未来工作的基础。作为高校非计算机专业的计算机教师,如何设计有效的计算机课程体系,提高学生的计算机能力,是我们的责任。

1高校非计算机专业学生应具备的计算机能力

大学非计算机专业的计算机类课程是现代高科技领域的基础课程,是一种多学科的现代化应用技术,有其自身的系统性、科学性。高校非计算机专业学生需要懂原理、懂结构,掌握一种以上计算机语言,能按规范要求编程序,把学习重点放在使用标准平台,开发一些本专业适用的软件产品。

学生的计算机能力主要包括以下五部分:

(1) 基础知识的积累与巩固:理解概念、原理、法则、命令等。

(2) 方法的训练:计算机操作方法、部件使用方法、程序调试方法、外设连接方法、程序设计方法等。

(3) 精神素养训练:养成实事求是的科学态度、强烈的进取心、严谨的工作作风。

(4) 能力的拓宽:思维能力,在编程前对实际问题的想象、分析、归纳、综合、分块,建立编程框架的能力;

行为能力,在选定算法、设计框图、编制程序、查阅资料、探索程序方面有所锻炼;适应能力,在配置机器、组织试验、利用环境方面进行训练,以利于尽快投入工作;应用能力,设备操作能力、软件维护能力、上机调试能力、解决实际问题能力。

(5) 技术的培养:工程表达技术、框图设计技术、结构化编程技术、类操作技术等。

2非计算机专业计算机类课程设置目标

为了培养学生以上五方面的能力,非计算机专业计算机类课程的培养目标应包括:

2.1掌握基本技能

这里的基本技能包括:微机使用技能、汉字输入技能、文字编辑技能、程序调试技能、网络操作技能、网页创作技能和图形、动画创意技能等。给学生提供软、硬件资源环境,在教师的指导下让学生领悟实验的真谛,直至独立完成实验。

2.2学会常用软件

这里的常用软件包括:操作系统、文字处理软件、电子表格、电子演示文稿、平面设计、动画设计软件等。

2.3了解基本原理

大学的非计算机专业学生应对计算机学科理论有一定了解,如:计算机组成原理、网络原理、高级语言编程、数值运算原理、操作系统原理、汉字系统原理等。要在理论课上讲原理、概念、操作要领,实践课上引导学生一步步做,通过做一两个事例锻炼学生自己动手的能力。

2.4熟练程序设计

程序设计=算法+数据结构,一个好的程序设计算法是关键,对算法的深入理解只有通过调试程序才能实现。程序设计离不开算法,好的算法能使程序简洁、功能完善、可读性好。程序调试是程序设计的实践过程,通过上机调试可以发现语法错误、句法错误、方法错误,通过多次的逐步调试,使程序的最终结果正确。这一过程比程序设计更费时间。

2.5适应新技术

微型计算机的发展以迅速而著称,操作系统的变化从DOS到Windows系列到Linux,软件在不断地更新。如果不能适应软件的快速发展,就阻碍计算机的使用。

3针对能力培养,高校非计算机专业课程体系设计

随着高校办学自的不断扩大和计算机技术的不断进步,非计算机专业计算机课程的教学体制显然不能用一种模式“框死”,而是柔性的、探讨式的运作。

不同专业学生学习计算机的目的不同、基础不同,因此,应对不同类型的专业要提出不同的要求,采用不同的教学方式。计算机基础教学内容知识结构的总体框架为高校各专业计算机课程设计提供了充分大的空间,考虑各专业应用计算机的特点、差异和学时限制,为各专业合理设置计算机基础课程要有足够的自由度。

非计算机专业计算机基础课程教学体系划分为理科非计算机专业、文科专业两类。

3.1理科非计算机专业学生计算机课程体系设计

理科非计算机专业学习计算机技术的目的很明确,不是把它作为纯理论的课程来学习,而是作为应用技术来掌握。对于这些学生,虽然他们在学习和工作中不以计算机为中心,但在很多情况下却离不开计算机,他们要结合自己的专业,利用计算机来开展工作。我们采用的是“1+1+X”课程设计方案,即“理科计算机基础”+“理科程序设计语言”+“理科计算机高级课程”,课程设计如下:

(1) 理科计算机基础:该课程为理科必修课程。这门课的目的是向理科学生介绍计算机的发展、计算机的使用与维护、计算机网络方面的常识以及常用软件的使用。通过本课程的学习,学生能够较为熟练地使用计算机,真正把计算机作为日常生活和学习中的工具。

(2) 理科程序设计语言:该课程为理科必修课程。对于非计算机专业的理工学生来说,除了要熟练使用计算机外,还要学习一些基本的应用基础等,在较深的层次上应用计算机。该课程讲授较为高级的计算机应用技术,如网络、多媒体、数据库、VB、ASP、C语言、Java等,学生可以任选其中1种或2种。采用既有课堂教学又有网络课堂的教学方式,可以进行网上课后复习、交作业、讨论、辅导答疑等。

(3) 理科计算机高级课程:该课程为理科非计算机专业本科生选修课。在了解程序设计语言的本质,熟练掌握一种程序设计语言,有了一定实际动手能力的基础上,进一步学习其他计算机专业课程,可选修的课程很多,如下只列举两门课程。

数据结构:从每个数据结构的逻辑结构、相应的一组基本运算和实现三个方面掌握线性表、栈、队列、串、树和图等常用的数据结构;针对简单的应用问题,选择合适的数据结构及设计有效的算法解决。

微机原理:该课程为理科非计算机专业限制性选修课。由于绝大部分非计算机专业的学生没有学过数字逻辑课程,所以与计算机系微机原理课程相比,增加了数字逻辑的基本内容;在内容的深度上也比计算机专业略浅一些。该课程的基本目的是理解微型计算机的基本组成、工作原理及常用接口技术;初步掌握汇编语言程序设计的基本方法和上机调试过程;建立微机整体概念。

3.2文科专业学生计算机课程体系设计

文科专业学生把计算机课程作为工具课程来学习,作为应用技术来掌握。他们在学习和工作中不是以计算机为中心,而是对计算机的简单应用。我们采用的是“1+X”课程设计方案,即“文科计算机基础”+“文科计算机高级课程”,文科专业计算机基础课程分两学期讲授课。课程设计如下:

(1) 文科计算机基础:该课程为文科必修课程。这门课的目的是向文科学生介绍计算机的发展、计算机的使用与维护、计算机网络方面的常识以及常用软件的使用。通过本课程的学习,学生能够较为熟练地使用计算机,真正把计算机作为日常生活和学习中的工具。

(2) 文科计算机高级课程:该课程为文科必修课程。对文科学生在计算机方面的要求比对理科非计算机专业学生的要求更低一些,教授的内容也更偏向于应用,结合使用计算机和应用计算机,讲解计算机与信息技术的基本知识和基本方法。

该课程讲授较为高级的计算机应用技术,包括网络、多媒体、数据库、平面设计、三维动画设计、网页制作、动态网页制作等7门课程,学生可以任选其中1种或2种。

以上提出的文科、理科计算机教学体系允许整合和重新构造。这样既使计算机基础教学有较好的可操作性,也充分考虑专业对计算机技术不断增长的需求和计算机技术进步对课程的影响。

4适应新的计算机课程教学体系,教师做好准备

随着计算机技术的飞速发展,计算机应用日益普及,教学手段和教学方法也逐步改进。计算机课程在讲授内容、教学目标和教学方法等方面也在不断进行调整和更新,表现出与其他课程迥然不同的“动态”特征。

4.1教学内容的准备

教学内容要注重实用性和具体性。学生对实际存在的问题更感兴趣,对具体例子比抽象讲解更容易接受。可以让学生使用计算机解决现实生活中的一些问题,因为学生大都希望学以致用,解决一些具体的问题,他们在解决具体问题的过程中也学会了解决问题的方法。

4.2教学方法的准备

在非计算机专业学生的计算机教学中,广泛开展启发式、参与式、设问式、比喻式等教学方法,要理论联系实际,加强实验指导,规范实验教学,增加设计型和综合型实验内容,突出学生计算机应用能力的培养。要把传统理论课的“提出概念――解释概念――举例说明”的三步曲,改为“提出问题――解决问题――归纳分析”三步曲,要把“以问题为中心”的思想应用于实际教学中。

4.3教学手段的准备

课堂教学要充分利用计算机、多媒体设备等现代化教学手段,缩小理论与实际的差距。要使用现代化教学手段制作电子教案,使教学生动形象;使用多媒体教室,使教学直观,易于表达;使用实验室加移动多媒体的教学方式,使师生间的双向讨论交流非常方便。

4.4教师知识更新的准备

有人说,计算机行业是“年轻人”的行业,随着新技术的不断发展,计算机教师也应该不断地进修、学习,提高自己的计算机水平。一方面加强任课教师的教育教学能力训练,要求教师不断自学或进修,学习本课程及其他相关领域的先进知识,以提高自己的教学能力。另一方面要鼓励教师参加各种计算机基础课程教学研讨会。主讲教师除讲授一个班的计算机基础外,也要讲授计算机专业课程。要求他们努力熟悉和研究计算机基础教学的特点和规律,避免把计算机专业教学的思路、做法和要求简单地搬到非计算机专业。这样不仅有利于稳定计算机基础教师队伍,也有利于提高队伍的教学和科研水平。

4.5教学网站建设的准备

通过网络辅助教学,教师可以更多地与学生交流。网络辅助教学网站实现了教学资料、教学课件、电子教案、实验指导等上网,实现师生课外互动和交流。学生可以对大学计算机课程进行有选择的自主学习,达到较好的教学效果。网络模拟考试系统能实现学生随时进行训练和自我测试,网络考试系统供教师随时对学生进行测试。

4.6学生创新能力培养的准备

这是最关键的准备。创新是一个思维与实践的过程,从哲学观点看是一种技能,即在特定环境中分析问题解决问题的技能,思维是一种能够学习的技能。计算机是一个简洁高效的计算工具,帮助人们完成大量繁琐的工程计算、数据分析、文字处理、账目结算、多媒体合成的工作。高校非计算机专业学生的创新能力就是将计算机专业的知识引进到自己的专业中来,突出现有模式,勇于开拓,结合本专业,开发出适用的专业软件,使本行业的设计、生产、流通进入领先地步。

参考文献:

计算机程序设计论文篇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.

计算机程序设计论文篇6

1引言

大学期间计算机专业的学生必须掌握的基础课之一《计算机程序设计》课程,旨在培养大学生基础的计算机技能,以便于以后计算机课程教学的方便实施和讲解,因而计算机基础程序设计课程是计算机专业学生所必须掌握的一门理论课。计算机程序设计类课程教学重点在于其实践性,实践是检验真理的唯一标准,通过实践,学生可以清楚自己的不足和所不理解的知识点,老师也能了解学生对于程序设计这门课的掌握情况,进而方便老师进行教案设计,为下节课讲解提供依据[1]。计算机课程所重视的应该是创新,但现在各大高校计算机课程却都以理论知识验证为主,形成重验证轻创新的偏差学习,难以激发大学生学习热情,且在程序设计上没有重大突破,大学生的创新意识和创新潜能并没有被发掘。教学新课程改革以来,关于计算机的课程设计正逐渐转向正常,学生的创新意识正不断被发掘和刺激。以培养大学生创新意识和积极主动参与能力为目标,进行计算机程序类设计课程的教学探讨[2]。

2当前程序设计类课程的教学情况

2.1计算机软件开发系统庞大学生容易失去信心

例如Java技术中所包括的技术规范范围复杂且庞大,在实际运用中也受到众多条件限制,大学生必须付出更高的学习成本来进行技术规范的理论学习。然而若真正意义上进行程序设计,又感觉理论知识的学习无法与实际贴合,力不从心,失去信心。

2.2严重缺乏学习兴趣、主动参与性较差

计算机程序设计类课程现阶段最主要的教学方式依然是PPT展示,老师仍然处于主导地位,学生依旧是被牵引的一方,加之课程内容多,学生逐渐失去兴趣,学生缺乏学习兴趣、积极主动参与性较差。

2.3计算机课程实践模式单调,学生普遍缺乏实际经验

现阶段程序设计类课程的授课方式仍以理论课为主,上机实际操作课时较少,且上机课也只是进行理论知识验证,关于创新意识的培养却很难实现。

2.4考核方式仍以试卷为主

这种考查方式只能确定学生理论知识掌握的熟悉程度和概念的理解认识,但对于实际操作却并不能完整体现,进而也无法实现创新意识体现的最终目的。

3改革教学方法,加大激励制度

老师的教学任务重点不是讲解,而应该把重点放在教案设计上,只有明确的教案设计,才能针对性进行训练,才能依据计算机程序设计知识具体应用确定教学重点。此外,老师必须建立互动课堂,只有与学生有足够的互动,才能更了解学生,才能更好地进行课堂计算机程序设计类知识讲解[3]。特别是在学生遇到无法解决的问题时。老师要依据学生潜力做合适的引导,从而刺激学生找到最佳解决问题的方式,进而提升学生的思考能力,调动学生对于计算机程序设计类课程学习的热情。由于计算机专业的学生不同于其他专业,在毕业离校后,大都通过小组活动的形式进行程序项目开发,特别是在小组开发程序设计的途中,重视团队彼此的配合默契,通过互相探讨、阐述自身观点以及团队合作能力的方式来提升小组成员之间对于程序项目开发的动力。为积极增强团队合作意识,可以适时增加一些类似讨论课题的交流活动方式来进行程序设计,并进一步提升运用[4]。对学生进行启发性问题挖掘,例如在对学生进行计算机程序设计课程教学时,提前让学生完成课本内容预习任务,并以此为基础进行启发性引导。比如,计算机课程中所指的对象是什么意思;类和封装又指的是什么;以现实生活为背景调查人群对于计算机信息技术的认识,且要依据实际情况对信息进行登记和处理,以小组团体的形式整体提高计算机程序设计课程学生之间的互动性,也为今后更深入学习计算机相关知识奠定基础。

4重视学生的实验预习和准备情况

计算机程序设计类课程在进行教学实践时,由于学生缺乏基础理论知识以及对计算机的不熟悉,容易出现慌张、不知所措的情况,进而导致计算机课程不能顺利进行。形成这种局面的最主要原因就是学生并未按老师要求进行课程预习和前期知识回顾,这些无法顺利完成,究其根本原因就是学生没有深入的感知计算机程序设计类课程的教学重点和教学难点,由于前期准备不充分,导致各种状况发生。为解决此类问题,老师必须加强自身知识能力,除此之外就是要正确认识计算机程序设计类课程的实际重点内容,老师还要根据自身特点进行课程设计安排,以吸引更多学生专心听讲,以完整的知识武装自己。计算机课程的专业较多,因而实验课内容也十分广泛。这就需要老师依据实际情况进行课程设计并调整课程内容讲解模式。只有这样才能解决学生在上课时对于计算机程序设计课程学习中难懂的问题[5]。避免盲目从众,还可以依据学生自我兴趣进行计算机程序设计的理论思维创新并验证实验结果。所以,老师要依据计算机程序设计类课程的实验方式来让学生确定自己的独特方式,学生也可以积极主动的选择可以激发创新思维的各类课程活动方式,结合自身特点进行计算机程序设计类课程的项目设计,进而满足不同层次、不同兴趣学生自身的实际需求。

5通过上机试验提升综合项目的设计能力

计算机程序设计类课程是一门重视实践的课程,因而上机实践是相当重要的环节。为提升学生对于课程设计的整体感知和理解,老师有必要在第一次上课时就给学生进行整体理论框架知识简述。并依据课程实际进行详略得当的说明,这样既可以提升学生的学习信心,也可以为该课程理论知识实践奠定基础。

6重点培养学生实践能力

6.1对于实践中常见问题的分析解决

在计算机程序设计类课程实践中,学生总会遇到各种各样自己难以解决的代码错误问题以及操作错误问题。这些问题若没有老师帮助解决,学生很难进行下一步的程序设计。计算机实践课程通常都是大课,70人左右同时进行,计算机实践操作中出现的问题多种多样,若是只由老师单独进行辅导,实在难以解决所有问题,这也是计算机程序设计类课程的实践难以提升的根本原因。对此,若采取“老师为主、学生互助”的方式则可以极大提升计算机课程实践效率[6]。老师在进行计算机程序设计课程实践时,对于学生提出的问题必须有耐心的解决,充分尊重学生的思想,在指导练习时可以让周围的学生一起参与起来。比如:针对实践课程代码编程问题,老师要引导学生发现问题的症结所在,并积极鼓励学生建立讨论组,通过沟通交流相互讨论的方式,发现实践问题所在,让学生积极发表自己的看法,从而提高计算机程序设计课程的实践效果。老师也要从计算机程序设计实践课中总结经验,以更完善的辅助学生进行计算机程序设计。

6.2课堂知识向课外知识的纵向延伸

通过一段时间的理论知识学习,老师就可以把课程知识进行纵向延伸。学生依据课程上学到的理论知识,通过实践运用在课外知识纵向延伸上。同时学生还可以与老师进行及时的沟通交流,这样可以极大提升计算机程序设计类课程的实践教学质量,也更有创新性的激发学生对计算机程序设计的兴趣[7]。

7学生要善于进行自我总结并自我评价实验结果

老师应该按照学生的实践能力制定评判标准,并对学生的实际操作能力和理解进行基础评估,若学生自主的进行实践内容的准备、实践课题的总结和经验积累,则老师可以依据学生的自主意识和自我认知想法合理的提高分数。学生在进行计算机程序设计时,老师要强调学生的自我管理,以自我总结、自我评价的方式为自己负责,对于解决不了的问题,则可以与同学商量共同解决,这样才能让学生有效的进行总结和知识归纳。

8考核方式优化改革

(Nuclearsystemoptimizationreform)现阶段的计算机程序设计类课程通常以笔试成绩为主,重点在于考察学生的概念理解能力,这对于学生来说要求记忆的东西过多,学生并没有充足的时间进行内容的理解和实际操作设计,这也就容易出现高分低能的情况。学生的理解能力、接受能力、创新能力、实践能力,在试卷上并不能完整的展现。虽现在强调平时成绩,但其所占的小比例并不能改变期末成绩,期末成绩仍然是最终判断标准[8]。

8.1增强实践方面的考核优化改革

新课程改革下,要求把实践课分为几部分进行考核,并依据各个阶段的平均成绩判定实践总成绩。实践部分的分数仅占总成绩的37%。这也就要求学生必须有自己独到的见解和设计风格理念,这样才能保证设计出来的程序具有一定的创新性。

8.2期末考试方式优化改革

在日常考试中,通过程序设计的方式给每位学生分发不同的考试题目,学生要依据题目要求进行相关程序设计,从分析题目入手,结合代码规律,独立且完整的完成实践考试。期末成绩改用答辩的方式进行,重视学生的沟通交流以及灵活转变能力。通过这种方式提升学生的分析水平,从而增强学生运用计算机程序设计解决实际问题的能力。

9结论

总而言之,计算机程序设计类课程是一门重视实践的课程。尤其在教学实践中,必须强调学生的主体地位,以学生为主,老师只做一个引导人,并通过符合学生认知习惯和规律的方式科学合理的调动学生的积极性。以此提升计算机程序设计类课程的教学质量。所以,老师在计算机程序设计类课程实践中要持续围绕学生的实验能力进行更深层次的研究和教学上的优化改革,从而提升计算机程序设计实践的教学质量。

作者:刘琴 单位:青海民族大学计算机学院

参考文献

[1]邹汪平,蔡劲松.基于能力导向的计算机程序设计类课程教学内容相关性研究[J].梧州学院学报,2016(06):72-75.

[2]张雪松.高职院校非计算机专业《C语言程序设计》课程改革探索[J].产业与科技论坛,2016(22):194-195.

[3]耿姝,逯柳,王树芬.计算机程序设计类课程研究型教学改革与实践[J].工业和信息化教育,2016(09):50-53.

[4]钟文峰,晏志英,胡荣群.计算机科学与技术专业程序设计类课程群建设的探索与实践[J].信息通信,2016(09):277-279.

[5]袁凤玲.计算机程序设计类课程实践教学的有效性研究[J].辽宁科技学院学报,2016(03):52-53.

计算机程序设计论文篇7

中图分类号:G642.4 文献标志码:A 文章编号:1674-9324(2017)16-0152-03

一、引言

计算机导论课教学内容几乎涉及到计算机学科的各个知识领域,每一部分内容对于毫无专业基础的学生来讲都是全新的,而应用技术型院校的学生普遍来讲学习热情不高、学习基础较差,因此,如何针对该类院校学情实际,搞好计算机导论课程的教学,以促进学生进行专业学习的积O性,是应用技术型院校计算机导论课教学亟待解决的问题。

目前计算机导论课程教学而言,存在以下一些问题:从教学内容上看,有的院校将计算机操作知识作为主要教学内容,有的将计算机主要专业课的综合作为主要教学内容[1]。显然,第一种内容组织模式与计算思维的教育理念是相悖的,但是第二种内容组织模式也普遍存在知识覆盖面不合理,知识层次把握不准确,知识融合不够等问题。从教学方法上看,任课教师对教学过程的研究和思考较少,对教学方法缺乏创新,基本采用单一的课堂教学方式[2-3],没有根据具体的教学内容设计相应的教学过程,教学方法缺乏针对性,导致学生很难理解所讲授的内容,使学生对专业学习产生为难情绪。因此,无论是教学内容还是教学方法均不符合应用技术型院校学情,文献[4]就课程教学内容构建做了系统和全面的阐述,本文着重从“如何教”的方面提出了相应的改进措施和方法,以调动学生进行专业学习的积极性。

二、相应的改进措施和方法

(一)优化教学内容

周以真教授提出的计算思维[5]的教育理念统一了教育界对计算导论课的作用的认识,本文结合应用技术型院校的学情,将计算机导论课的教学目标确定为:使学生认知计算机系统,培养学生应用计算机解决问题的思维方法,揭示计算机学科所蕴含的计算思维思想。

从该种教学目标出发,以“程序”为主线,将课程教学内容划分为4个模块,10个教学单元。这4个模块是程序执行、程序运行、程序设计与软件开发、计算机网络;10个教学单元是信息的机器表示、信息的机器存储与运算、计算机结构及其工作原理、操作系统的基本功能、高级语言与编译程序、算法与数据结构、软件工程方法、数据库与数据库系统、计算机网络系统。为使核心教学内容得到更好地贯彻,在上述教学内容基础上,增设了“计算机与计算机系统”教学单元,其教学目的是使学生获得对计算机、计算机系统以及计算机学科宏观认识和总体了解。

(二)改进教学方法

贯穿整个教学过程最为重要的就是教学方法,教学方法的选择应具有多样性和灵活性。针对教学过程中暴露出的教学方式单一的问题,本文在分析和研究学生的心理特点后,提出了以学生为中心,以教学内容为导向,在教学过程中运用与之相适应的教学方法。根据该门课程教学内容的特点,采用了讲授式教学法、问题引领式教学法、案例驱动式教学法、引导启发式教学法、类比教学法、专题讨论式教学法等。对于计算机和计算机系统这部分内容,通过引导启发方式逐步使学生了解计算机的作用和基本组成;对于信息的机器表示这部分内容,利用身份证编码类比阐述计算机中数的编码,使学生更加容易理解信息的编码;对于计算机结构及其工作原理这部分内容,采用“质疑――解答”的方式使学生始终带着问题在听课,从而揭示出计算机各主要部件的作用和构成,以及计算机的工作原理。算法和数据结构这部分内容,采用案例驱动式教学方法,通过案例将算法以及算法与数据结构之间的关系揭示出来;对于操作系统这部分内容,采用问题引领式教学法,通过不断地质疑――解答方式揭示出操作系统的主要基本功能,这种方法可以引发学生思考,激发学生求知欲望;对于数据库与数据库系统这部分内容,采用生活中的实例来说明数据库在人类生活中的应用需求,从而引起学生对数据库的关注。

(三)强化教学设计

为了激发学生的学习兴趣,不仅需要对教学方法进行精心选择,而且需要对教学过程进行精心设计。本文以教师为主导,学生为主体的教学模式,将教学方法有效地融入教学过程中,使教学过程设计更贴近该类院校的学情,从而调动学生学习兴趣。下面以计算机网络及其硬件组成为例说明对教学内容是如何组织的。如果开始就讲授什么是计算机网络,对于毫无专业基础的新生来讲会感到晦涩难懂。通过利用学生能够感受到生活中的例子,如高速公路网来类比讲授这部分内容,学生接受起来要容易得多。针对这部分教学内容,教学过程设计如下:(1)通过“引导”方式,询问学生是否见过高速公路网络。(2)由任课教师讲述高速公路网络是由城市以及连接两个城市之间的高速公路组成的。(3)通过“启发”方式,询问学生高速公路网络中的城市相当于计算机网络中的什么?连接两个城市的高速公路相当于网络中的什么?从而给出计算机网络的初步概念。(4)通过质疑-解答方式,询问“为什么要将分布在不同地点的计算机连接起来呢?”,从而揭示出计算机联网的目的是什么,使学生获得对这个概念完整的理解。(5)澄清了计算机网络这个概念之后,进一步讲解计算机网络的硬件组成。到目前为止,学生显然理解了计算机网络是由计算机(在网络中称之为主机)和传输介质组成的,除此之外还包括网络接口设备和网络互连设备。这部分内容的讲解也采取理论联系生活的方式,比如网络接口设备中的Modem,学生也不感到陌生,当然对于毫无生活基础可以借鉴的内容如Hub,它既作为网络连接点,又起到信号放大作用,Hub这两个作用讲解起来也不是难事。由上述过程可知,每一个教学环节是紧密结合的,将类比、引导和启发等教学方法有效地融合在教学过程中,形成了环环相扣的教学过程。

三、典型案例讨论与效果分析

(一)数据结构与算法

教学目标:了解算法的描述工具,完整地理解算法的概念、掌握简单问题的算法描述,训练学生运用计算机解决计算问题的思维方法。

教学过程设计:

第一环节:提出问题,计算1+2+3+4…10

学生1回答:逐项累加求和

学生2回答:1+2+3+4…10=(1+10)×5=55

由教师带领学生分别给出这两种解决方案的算法,然后引导启发方式给出算法的初步概念。

算法1:

S1:计算1+2得到3;

S2:将第一步得到的结果(即1+2)与3相加得到6;

……

S9:将第8步得到的结果(即1+2+…+9)与10相加得到55。

算法2:

S1:将原式变形为(1+10)+(2+9)+(3+8)+(2+9)+(3+8)=5×11;

S2:计算5×11;

S3:输出运算结果。

通过这两个算法,帮助学生理解什么是算法,并简单说明这两种算法的优劣。但是,第二种方法只适合有规律的数据序列,如果对于没有规律可循的数据序列,如何求和呢?从而引出第三种解决方案。

算法3:

S1:S0,i1;

S2:SS+i;

S3:ii+1;

S4:i≤n,转S2;否则,输出S。

利用流程图来描述该算法,在描述过程中直接讲解了这种描述工具。以该种解决方案再次重申算法的概念,并着重讲解算法的特性。

第二环节:阐述算法与数据结构之间的关系

前边所给出算法概念是不完整的,还需要揭示出算法与数据结构之间的关系,从而使学生更完整地理解算法。

以{23,9,45,12,65,73}这样一个随机数据序列为例,其顺序存储结构和链式存储结构如图2、图3所示。

顺序存储如下:

链式存储如下:

由图可见顺序存储结构和链式存储结构是不一样的,那么在执行某一操作时,有什么区别吗?比如删除45这项操作,对于顺序表来说是使用下标访问方式,在删除了45这个元素后需要将后面的所有元素全部向前移动;而对于链表,没有顺序的概念,要想删除45这个元素,只需要将前一个结点9的指针指向被删除点的下一个结点12的头指针即可。由此可见,两种算法是不同的。尽管是同一组数据,其存储结构不同,算法也不同。

教学反思:这样组织教学由浅入深、循序渐进、逐步给出算法的初步概念,算法的完整概念,不仅容易使学生理解算法的概念,而且还使学生了解到了数据还存在多种存储表示。通过这种教学内容设计,使教学目的变得非常明确,并且利用这个教学目的将不同知识领域的内容融合为一体,有利于学生计算机学科知识框架的形成。通过不断设计算法来揭示算法概念的过程,同时也达到了训练学生运用计算机解决问题的思维方法。

(二)操作系统基本功能

教学目标:使学生理解操作系统的基本功能,从而达到对操作系统的概念理解。

教学过程设计:

1.师生互动:

同学们使用过Windows操作系统吗?

双击程序图标意味着什么?

双击程序图标之后程序被调入到哪了?

双击程序图标之前程序存放在哪?以什么形式存放?

程序被调入到内存之后又是如何被管理和控制执行的?

这样组织教学内容将学生熟悉的生活实践有效地融入到教学当中,使抽象问题变得简单化了,容易被学生理解和接受。

2.学习新知:通过质疑方式,导入这部分教学内容,然后再通过解答方式,逐个阐述操作系统的存储管理、CPU管理、文件管理等功能。学生理解了操作系统的基本功能后,就容易理解操作系统这个概念了。下面以文件管理为例,说明这部分教学内容是如何设计的。

提出问题:图书馆有上百万册图书,如果将这些图书杂乱地堆放在一起,会是什么情形呢?让你去找一本书会变得十分艰难。如果将数以万计的文件随便地堆放在一起,和图书一样,查找一个文件也会变得十分困难。因此,必须要按照某种机制将文件管理起来。

教学反思:操作系统这部分内容是专业教育的核心基础课,也是难点课程之一,大多学生会操作但对其原理理解不甚了解。就双击程序图标这个操作而言,几乎人人都会操作,但是如果专业教育仅仅是使学生学会这种操作,教学就失去了意义。因此采用以上教学设计,环环相扣不断提出问题,启发引导学生思考,从而更好地让学生理解什么是操作系统,操作系统能实现哪些功能,如何对计算机进行管理。

四、Y束语

在计算机导论课程教学实施过程中,根据不同教学内容的特点,有针对性地设计其教学过程,采用恰当的教学方法及教学手段,解决了其教学方法单一以及教学过程设计不合理的问题。通过部分教学过程设计给出了如何针对教学内容设计教学过程的思路,并通过教学实践对文中提出的观点进行了验证。通过教学实践表明:学生上课积极性变高,旷课率明显下降,教学效果也有了较大提升。

参考文献:

[1]毛嘉莉,李明东,赖晓风,董文.基于计算思维的《计算机导论》课程改革实践[J].西华师范大学学报(自然科学版),2012,35(1).

[2]赵玉艳,赵生慧.应用型本科院校计算机导论课程教学方法研究[J].蚌埠学院学报,2012,1(3).

计算机程序设计论文篇8

引言

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.

计算机程序设计论文篇9

1.引言

数据结构是计算机学科的核心课程,也是实践性很强的专业基础课。数据结构课程主要讲述数据的描述与组织、数据处理的算法设计,数据结构对于提高学生的算法设计能力有着极为重要的作用。目前在数据结构课程的教学中,大多采用C语言作为描述语言,在实验时要求学生使用C语言编写程序来实现数据结构中的算法。在传统的教学中,数据结构课程的理论教学与实践教学结合不够紧密,实验教学效果不尽人意。

大学生程序设计竞赛是近年来国内各大学越来越重视的学科竞赛,也是大学生能力竞赛活动中最有影响力的一项赛事,竞赛涉及学科知识面广,有助于培养学生自主学习能力、创新能力,也有利于团队精神的培养。数据结构课程与程序设计竞赛所涉及的知识密切相关,参加程序设计竞赛能使学生将数据结构课程所学知识充分应用于竞赛中,将理论转化为实践,用实践验证及加强理论知识。

2.改革措施

根据我校制订的应用型人才培养目标,通过对计算机专业的课程体系、教学目标、计算机专业能力培养进行深入研究我校从2010年开始对数据结构、C语言程序设计、算法分析与设计这三门课程进行教学改革,理论教学改变了以往三门课程分开授课的模式,而是将它们的知识进行整合,做到了前导课、后续课的有机衔接。考虑到大学生程序设计竞赛所涉及的很多知识与数据结构课程紧密相关,我们依托程序设计竞赛,将这数据结构课程的教学改革与程序设计竞赛紧密结合。具体措施主要有以下几个方面。

2.1 合理组织教学内容

教学内容的设计是教学改革的核心。我们以知识点为单元,并结合C程序设计、算法分析与设计课程来设计教学内容。在C语言程序设计中,我们适当穿插讲述了数据结构中的部分内容,如数据结构中的直接插入排序、冒泡排序、简单选择排序、顺序查找、折半查找放在将C语言程序设计中一个知识单元中。在数据结构课程教学中,穿插了算法分析与设计的有关知识,如在讲述哈夫曼树和图的最小生成树时,穿插讲述了贪心算法,在讲述图的最短路径时介绍了动态规划算法,在讲述搜索时介绍了回溯算法。

2.2 精心设计训练题目

程序设计竞赛题目有命题规范、背景描述有趣和输入输出明确等特点,我们将数据结构训练题目描述成程序设计竞赛题的形式。我们根据理论教学知识点,以应用为主线、以方法与能力培养为出发点,精心设计了近100道数据结构课程训练题目,每道题目均提供一定规模的测试数据,以测试程序的正确性与效率,并上传到在线评测系统中。这些训练题目可以分为基本型、设计型和创新型三类,基本型题目侧重于提高动手能力、训练编程感觉,设计型题目侧重算法设计、训练思维能力,创新型题目大多是从以往的各种程序设计竞赛题目中精心挑选出来的,着重培养学生的创新能力。将原有实验教学中以算法为主线的训练模式改为以问题为主线的训练模式,通过具体问题描述给出实验题目,创造了一种与现实应用紧密结合的环境,较好地训练了学生选择数据结构和设计算法的能力。

2.3 重新编写实验指导书

根据理论教学和实验教学要求,结合实验程序设计竞赛的知识点,我们重新编写了数据结构的实验指导书,实验指导书对教学内容中的重点和难点部分作了进一步解析和拓展。在评测系统中,针对每个实验的安排了难度不等的训练题目。通过这些训练题目,可使学生深刻理解数据结构在程序设计中的实际作用,也使学生体会到了算法设计思想的重要性。

2.4 采用在线评测系统提交作业

程序设计在线评测系统是一个程序设计练习和竞赛平台,可以提供大量的程序和算法设计题目。在线评测系统除了能用于程序设计竞赛外,还可以广泛用于辅助程序设计类课程的教学,为学生提供一个开放的、自主学习的实验环境。学生通过网络可以随时提交程序代码,并可在丰富的程序与算法设计题库中寻找适当的题目来训练选择适当的数据结构和设计算法的能力。学生通过我们开发的在线评测系统提交作业。评测系统可以实时评测学生提交的作业是否正确,对错误提交还提供相应的提示信息。教师通过分析学生提交的程序代码,可以及时掌握学生做题的数量、类型和教学中存在的问题。

2.5 组织数据结构课程竞赛

程序设计竞赛可以有效检验学生综合应用所学知识来分析和解决问题的能力。组织针对数据结构课程的程序设计竞赛,可以检验学生对课程的掌握情况,可以培养学生的创造力和团队合作精神,让学生亲身感受到了竞赛的氛围,激发他们的学习兴趣,也为我校集训队员的选拔奠定坚实的基础。

2.6 改革课程考核方式

课程考试对学生的学习具有明显的导向作用。以往平时成绩主要来源于课后作业与出勤,这样的考核方式很难考察学生的实践动手能力,导致大部分学生只注重理论知识,难以提高学生的创新能力和实践能力。我们认为数据课程的考核应着重考核学生选择适当的数据结构和设计算法的能力,而不是死记硬背一些基础知识。为此,我们对课程的考核进行了大胆改革,将在线评测系统中的评测结果作为学生平时成绩的主要依据,并提高了平时成绩在总评成绩中的比例。

3.结语

数据结构是计算机专业的核心课程。以竞赛模式推动的数据结构课程教学改革,将理论知识学习和实际应用有机结合起来,激发了学生自主研究性学习的兴趣,提高了学生的编程能力和思维能力,取得了很好的效果。

参考文献

[1]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,1997.

[2]吴永辉,王建德.数据结构编程练习[M].北京:机械工业学出版社,2012.

[3]谭浩强.C程序设计(第2版)[M].北京:清华大学出版社,2005.

[4]王晓东.计算机算法设计与分析(第2版)[M].北京:电子工业出版社,2004.

基金项目:湖南省教学改革项目资助(湘教通[2011]315号NO:408,湘教通[2008]263号NO:218,湘教通[2012]401号NO:459),湖南人文科技学院教学改革研究项目(RKJGZ1018)资助。

作者简介:

计算机程序设计论文篇10

计算机科学是一种创造性思维活动,其教育必须面向设计。计算机的本质是“程序的机器”, 只有懂得程序设计,才能懂得计算机,真正了解计算机是怎样工作的。培养学生程序设计能力对计算机专业的学生来说不仅是培养职业技能的需要,也是培养大学生创造性思维的重要途径。学习程序设计语言可以培养学生运用算法来解决实际问题的能力,这种解决问题的方式是计算机所独有的,也只有通过对计算机的程序设计语言和程序设计方法的学习才有可能获得这种解决问题的能力。

1 程序设计在计算机学科中的地位

程序设计是利用某种计算机语言,编制完成某一特定功能的程序的过程,是涉及描述、开发及有效实现求解的一系列活动,是利用计算机实现自动化的重要手段。

计算机学科主要是系统地研究信息描述和变换的算法过程,包括它们的理论、分析、设计、效率、实现和应用。可以这样说,一切算法的基本问题是“什么能被自动化”以及“如何有效地自动化”。这个自动化的过程就是程序设计的过程。

程序设计语言是人们学习计算机的最基本的工具,也是人们学习计算机基础与应用知识的基本课程。通过学习,使学生掌握程序设计的基本概念、基本知识和基本方法,养成良好的程序设计风格,得到一定的程序设计训练,具备初步编写程序解决实际问题的能力。程序设计也正是有形表达抽象思维的方法,在程序设计过程中贯穿阅读判断、分析思考、工具利用、抽象表达、综合创造等多项技能,是理论、抽象、设计和应用的综合能力培养过程。因此程序设计是计算机学科教学的重要内容之一,对计算机专业人才素质的培养至关重要。

2 程序设计的知识和能力构成

根据循序渐进的原则,与程序设计有关的教学内容主要有:计算机基础知识和操作、程序设计语言和基本的程序设计方法、最基本的数据结构及其基本算法、常用的算法设计方法等。在学习这些知识的同时,必须与能力的训练有机地结合起来。程序设计能力表现在以下几个方面:

1)自然语言能力。要有较强的运用自然语言描述现实事物的能力,只有运用背景知识正确且清晰地陈述问题及其求解目标,才能确定程序的功能。

2)数学描述能力。程序设计是为了告诉计算机做什么和如何做。这就需要利用定义、定理、公式、函数等数学工具把问题形式化,建立数学模型。

3)数据结构设计能力。选择合理的存储结构,在计算机中表示数学模型,是程序设计的一个重要方面。

4)算法构造能力。好的程序由精心构造的、好的算法构成。给出问题求解的离散化计算过程,是程序设计中最具有创造性的工作。

5)程序编码能力。用某种程序设计语言表达算法,尽管这种能力往往被认为技术含量不高,但也需要对程序设计语言的熟练掌握和对算法设计的深刻理解。

6)程序调试能力。程序调试能力是一种专业综合技能,需要对程序设计语言和程序结构有深刻的理解,需要熟练的操作技能,需要会设置测试数据和设置程序断点,这些都有待于学生在实践中逐步积累经验。

可以说,程序设计能力的高低很大程度上反映在驾驭自然语言、数学语言和计算机语言的能力上。这3种语言是人们毕生有用的3种通用智能工具。前两者是后者的基础,良好的英语和数学训练是学好程序设计语言和培养程序设计能力的重要基础。

3 培养程序设计能力的有效策略

知识的价值在于运用,知识的运用需要技能,而技能的形成则依赖训练。程序设计知识的学习和能力的培养需要各方面的知识基础,它是一个系统的教育训练过程,需要多个教学环节的紧密配合才能完成。

1)明确教学要求

程序设计语言课程一般是为应用性教学而设置的,因此,课程的教学不仅仅是传授知识,而且应该强调应用性,应该以培养学生的能力为主。程序设计语言的内容比较丰富,在教学中如果面面俱到,必会耗费较多课时,而且教学效果不一定好。因为过分强调程序设计语言的系统性和完整性就可能会转移学生对课程重点的注意力,关键在于教会学生如何正确运用程序设计语言编写程序,训练实用编程能力。所以必须突出重点,突出应用性,侧重教思想,即把程序设计语言的基本思想、基本环境、基本概念、基本知识和基本方法教给学生,使他们在学习中对硬件、软件环境、程序设计的基本思想和基本技巧,所学程序设计语言的基本概念和使用方法以及编程技术有一个比较全面的感性认识,从而提高解决实际问题的能力。

2)打好数学基础。严格的数学训练是程序设计能力的基础,学习和加强排列与组合、数列、数学归纳法等离散系统的数学方法对提高程序设计能力尤为重要。问题描述和建立数学模型是程序设计的前奏,数学归纳法、穷举法、构造证明法等证明技巧是算法设计方法的基础。

3)强化英语水平。程序设计语言的符号系统以英语为基础,程序设计文档语言首选英语。英文资料是计算机最新和最大的技术资料来源,英语水平是我国软件产业发展和参与国际竞争的制约因素。

4)重视阅读训练。从某种意义上来说,程序设计是用程序设计语言和方法进行的一种写作。可以想象,如果学生没有阅读过一份完整、规范、有实用价值的标准程序,即使记住了有关语言的语法规则,也不可能写出像样的程序。所以,大量阅读、分析、修改和扩充典型的算法和程序,是提高程序写作能力的有效途径。而这个重要学习环节往往未得到应有的重视,缺乏配套的程序设计阅读分析教材。教师应经常指导学生阅读程序,理解程序,提高学生分析程序的能力。

5)注重算法设计,突出数据结构内容。瑞士科学家、PASCAL语言和MODULA-2语言的发明者沃思(Wirth)教授提出了著名的公式:程序=算法+数据结构。这个公式表达了程序的实质,说明对于一个程序设计问题来讲,算法与程序设计是紧密联系的,绝不能脱离数据结构去讲解算法设计。程序设计语言的教学应该结合数据结构的基本内容。对于同一个计算问题,选用不同的数据结构,其算法大不一样,算法的优劣程度也不同。因此,要教会学生对不同的问题选择合适的数据结构。在整个程序设计课程中,必须强调算法设计方法,通过不断的算法设计训练,使学生切实掌握迭代、枚举、递归、分类等常用算法设计方法。

6)更新教学内容。计算机学科是一门综合性学科,而且程序设计语言的应用领域在不断扩大和发展。因此,在教学中应结合专业的特点和教学的要求,将软件工程的思想方法贯穿于整个教学过程,介绍程序设计语言的最新发展和应用,重视面向对象程序设计方法的引入,搞好教材内容的更新。如图形程序设计、下拉式或弹出式菜单、计算机病毒防治等等。这样不仅能把最新的知识和最新发展动态充实到教学上来,大大丰富了教学内容,而且使学生加深对程序设计语言的理解和掌握,保持对信息技术和专业的兴趣,及时跟上信息技术日新月异的发展趋势,在今后工作中保持领先地位。

7)采用先进教学手段。用传统的课堂教学方法讲授动态的算法和数据结构是十分低效的,像排序、递归等抽象动态的内容讲解就常常是费力不讨好。应该根据课程特点,采用先进的现代教学方法,如直观教学方法:利用挂图、教具等讲解,以及计算机辅助教学(CAI)和计算机辅助学习(Computer Aided Learning,简称CAL)进行教学,通常开发利用与课程内容与教学特点相适应的多媒体课件进行教学。它们是讲解算法和进行程序设计训练的最佳教学平台,既能增加学习的趣味性,又可利用图形的直观性帮助抽象和动态过程的理解。

8)加强实践环节,强化创造性思维能力培养。在教学中,常常听到学生提出这样的问题:“程序设计语言有什么用?”,有的学生还反映:“程序设计语言并不难学,就是不知道如何应用?”一些学生学到了一定的科学知识,但上机动手水平低。这种现象与普遍忽视实践环节有关。为了扭转这一局面,在整个教学过程中,必须强调实践环节的重要性,充分安排上机实践时间,加强系统训练和实践能力的培养,强化创造性思维能力培养。根据课程特点,在教学中,采用案例驱动教学,进行兴趣引导;在实践中,可以精心组织一系列由易到难、由浅入深、配套衔接、结合学科学习、有一定设计技巧的程序设计作业,最后再安排一次综合性强、有一定难度的课程设计实践,对学生进行项目训练,提高学生应用能力。通过上机作业和课程设计的完成,使学生独立思考,各显才干,总结经验,培养他们的动手能力和编程能力,以及分析问题和解决问题的能力。

4 结论

总之,培养学生计算机程序设计能力的方法和途径很多,但是编程序不难,编好程序不易。作为教师,必须从培养学生编程思维的角度出发,按照以上策略认真进行编程知识的教学和技能的培养,加强实践,提高学生科学思维的能力,真正学会程序设计的真本领。

参考文献:

[1] ,王楠.浅谈程序设计语言课程教学方法[J].吉林大学学报(信息科学版),2005(S2).

[2] 徐进华.提高学生程序设计能力的几个措施[J].计算机时代,2005(11).

计算机程序设计论文篇11

1计算机专业程序设计课程实践教学的主要范畴

计算机专业程序设计课程实践教学主要包括上机实验、综合练习、课程设计、软件开发实训等几个方面。上机实验是最基本的实践教学,由任课教师根据理论教学的具体进度,设置一些简单的实验,要求学生在规定时间内完成,通过这些实验加强学生对理论知识的理解和掌握。综合练习一般在经历了一定的学习阶段之后,任课教师根据现阶段学生的学习情况,结合日常生活、工作中面临的实际问题,设置一些难度较小的综合性练习题,要求学生在规定的时间内进行调查分析,然后应用所学知识解决问题。综合练习主要侧重某一方面具体知识的应用。课程设计是在本门课程学习完毕后,任课老师根据教学大纲的要求,结合课程的特点和实际应用,设置一些难度适中、综合性强的课题,要求学生按要求完成课题任务。课程设计主要考查学生对知识综合运用的能力,培养学生利用所学知识来分析问题、解决问题的能力。软件开发实训则是通过实际软件项目来提高学生的职业综合技能。计算机程序设计实践教学都采取由浅入深的原则进行,其过程为:上机实验综合练习课程设计软件开发实训。

2计算机专业程序设计课程实践教学的重要性

2.1加强实践教学是实现计算机专业程序设计课程教学目标的要求计算机程序设计课程的主要目的是培养学生的程序基本开发能力、程序代码编写能力和程序调试应用能力,重点培养学生的算法应用分析能力和数据综合处理能力。其主要任务是通过日常教学,使学生掌握程序设计的一般方法和程序设计的具体过程,掌握计算机程序设计语言的语言特征,具备程序设计师的基础应用能力。在教学过程中,任课教师应以人才培养为目标,侧重编程综合应用能力的培养,通过具体的实践教学来提高学生的职业技能。

2.2实践教学是提高程序设计课程教学质量的重要手段实践教学是培养学生动手能力的重要手段,是提高学生的动手能力和职业技能最有效的方式,是对学生理论知识掌握程度的检验。“知识来源于实践”,“实践是检验真理的唯一标准”,计算机程序设计课程的理论知识应通过编程实践体现,通过具体的程序设计案例和实际编程来提高学生对理论知识的掌握,学生

综合编程能力的强弱是检验计算机专业程序设计课程教学质量的基本标准。

3成人教育业程序设计课程实践教学存在的问题

我国成人教育业程序设计课程的实践教学存在问题的体现在下述方面:①实践设施不足,教学条件不完善;②对教学认识不足,实践教学不受重视;③实践教学方法陈旧,考核方式单一。 转贴于

4积极探索,构建合理的程序设计课程实践教学模式

4.1实践教学要符合教学目标的需要计算机专业程序设计课程实践教学必须紧紧围绕专业培养目标、人才培养规格进行。要结合专业特点更新教学内容,调整实践教学内容、方法和手段。实践教学内容的更新,要注重对学生编程综合能力的培养和创新能力的培养,要对已有的实践教学内容进行筛选、整合,改变单一的演示性、验证性实验,增加综合性、设计性、创新性实验,要充分利用计算机课程的教学特征,提高实践教学效果。

4.2以社会就业需求为主导,开展多种形式的实践教学程序设计课程实践教学主要有上机实验、课程章节综合练习、大作业、课程设计、软件项目实训、校外软件基地实习、软件合作企业顶岗实习、校内软件课题研发等。其中实训、实习和研发都是采用“真题真做”。通过上述这些实践过程,学生的程序设计综合应用能力和软件开发能力都能得到良好的锻炼。

4.3程序设计课程实践教学设计一般要求定教学的具体内容。大多数情形下,采用实例教学效果比较明显,通过实例的演练促进学生对知识的掌握。实例式实践教学设计一般应包括教学目标、课时要求、教学组织、教学内容、实践方式、实践总结、成绩评定等几部分内容。在设计实践教学内容的过程中,应做好三个方面工作。一是要结合学生实际情况,尽量体现知识性、实用性,激发学生的灵感和创造欲,使学生对实践内容感兴趣,以充分调动学生的学习积极性和主观能动性,促进学生积极创新,完成实践内容。二是应注重理论教学与实践教学相结合,保证实践教学与理论课教学相适应,加深学生对基本理论、基本知识的理解和掌握。三是保证实践题目难度和工作量适中,学生通过自己的努力,可以在规定时间内完成实践任务,实践方式可以灵活多变。

计算机程序设计论文篇12

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2016)02-0173-02

引言:

“计算机导论”是在计算机专业一年级开设的一门专业基础课程,其面临着内容庞杂,学时不断被缩减,而学生基础参差不齐的矛盾。“计算机导论”原本是一门举足轻重、不可或缺、水平很高的课程。但现状是“计算机导论”在各个学校被视为无足轻重、可有可无、水平不高的课程。究其原因有以下几点:第一,课程内容不清、目的不明确,没有形成一个核心的内容;第二,课程很多时间在讲授事实,很少去讲解思维,缺少思维训练,以至被很多人误认为“水平底”。第三,觉得大学一年级学生接受不了“深”的计算机知识,授课内容定位越来越浅显,以至面临从人才培养方案被删除的危险。第四,课程内容涉及的知识面比较窄,仅仅是讲解一些语言和程序设计,然后用算法解题,不断地让学生做一道道的题目,这不符合“计算机导论”教学思路。第五,教学内容的陈旧,以概念讲概念,以概念讲原理,过度地强调“用”,不正确地理解“用”,以为“用”就是“用软件”、“用电脑”。这些都是影响“计算机导论”课程很严重的问题。这些问题怎么解决?计算机就是“用电脑”、“用软件”吗?计算机就是“编程序”吗?“编程序”就是要学习计算机语言吗?什么是真正的会“编程序”?地方普通高校的计算机学生只需要拥有技能而不需要建立计算思维吗?这些都是“计算机导论”课程改革面临的问题。本文以“计算机导论”课程“算法”内容为例,谈谈地方普通高校在“计算机导论”课程教学改革中的一些具体做法。

一、教学内容搭建与教学策略

根据教育部计算机基础教学指导委员会文件精神,参考“九校联盟”(C9)[1]的计算机基础教学改革经验,地方普通高校明确了以计算思维能力培养为核心的“计算机导论”课程改革方向。结合地方普通高校的实际,在课程内容上将董荣胜教授的“计算机科学导论――思想与方法”[2]与战德臣教授“计算之树”教学体系[3]进行融合,力争实现计算思维与计算机技能培养并重。下面以“算法”知识部分的教学为例进行阐述。

“算法”是程序与计算系统的灵魂[4],“算法”知识部分的教学采取案例驱动的教学方式,以旅行商问题(Traveling Salesman Problem,TSP)为例展开,全面讲授如何探索出为解决TSP问题而采取的确定的、有限的步骤,即算法;此算法如何经过不断细化,最终能用计算机语言来表达,进而被计算机执行,产生TSP问题的最终计算结果。

TSP问题的求解过程及思维方法包括:数学建模(相关课程:数学建模,离散数学之集合论与图论、数理逻辑等)算法策略设计(相关课程:算法设计与分析)算法的数据结构设计算法的控制结构设计(相关课程:算法与数据结构)算法的程序设计(相关课程:高级语言程序设计)算法的正确性分析(相关课程:算法设计与分析)算法的复杂性分析(相关课程:计算理论与计算复杂性)。

在讲授“算法的数据结构设计”时,引入Vcompter软件进行演示,使学生更易理解数据之间的逻辑关系以及这些逻辑关系如何在计算机中得以实现。为了让学生更容易接受“算法的控制结构设计”,利用可视化工具软件Raptor演示“顺序结构”、“选择结构”、“循环结构”。考虑到大学一年级学生还没有高级语言程序设计的基础,采用简单易学的可视化编程软件Raptor进行“算法的程序设计”的学习。如图1所示:

二、教学模式设计

“算法”知识部分的教学采取目前被计算机教育界积极倡导的MOOC/SPOC及基于Moodle的混合式教学模式。

首先,学生通过互联网进入“中国大学MOOC”,报名参加战德臣教授等教学名师的大学计算机在线课程,利用课余时间,通过在线方式学习相关知识。

其次,任课教师课前将“计算机导论”课程教学大纲、教学日历、教学课件、教学微视频、作业等信息上传到基于Moodle的在线学习平台,学生在线学习及下载使用。

再次,学生完成作业后通过基于Moodle的在线学习平台进行作业提交,教师在线下载学生作业并进行线下批阅,批阅后在线将分数及评语反馈给学生。

最后,学生利用基于Moodle的在线学习平台的即时聊天、讨论区功能,对“计算机导论”课程中遇到的问题,通过聊天工具在线向老师进行提问,或者通过讨论区出来,学生和教师在线或离线讨论。

MOOC/SPOC及基于Moodle的混合式教学模式可以解决有限的课堂教学时间与学生基础参差不齐的矛盾。学生们利用丰富、优质的课外教学资源提前学习或者课后复习,教师也可以及时发现学生的问题,有针对性地解决学生的问题。当然这样的教学改革对学生学习的主动性和自觉性,以及教师的敬业精神和业务水平都提出了更高的要求。

三、总结与展望

地方普通高校在“计算机导论”课程教学中,以用计算思维改造计算机导论、计算机导论要培养计算思维和信息素养的方针和原则为指导,融合董荣胜教授、战德臣教授的大学计算机基础课程知识体系的研究成果,结合本地高校学生的实际和人才培养目标,汲取已开展计算思维教学改革的高校的教学经验,积极探索适合本地高校的MOOC/SPOC及基于Moodle的混合式“计算机导论”的教学模式。

参考文献:

[1]何钦铭,陆汉权,冯博琴.计算机基础教学的核心任务是计算思维能力的培养――《九校联盟(C9)计算机基础教学发展战略联合声明》解读[J].中国大学教学,2010,(09):5-9.

友情链接