计算机与编程专业范文

时间:2023-10-19 16:07:59

导语:如何才能写好一篇计算机与编程专业,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。

计算机与编程专业

篇1

关键词:非计算机专业;C程序设计;编程能力;提高

中图分类号:G642文献标识码:A文章编号:1009-3044(2009)13-3446-02

1 引言

随着高科技在各行各业的普及与深入,计算机已成为一种处理专业领域问题的有力工具。是否掌握计算机知识和技能已成为衡量当代大学生适应社会发展需要的重要标志。非计算机专业的《C程序设计》[1]课程的教学目标是通过学习使学生熟练C语言,掌握程序设计的思路,并具有用C语言编程的能力;培养学生利用计算机技术解决工程实际问题的能力。但在实际教学过程中发现,学生对课程的基础知识和基本概念的理解和掌握比较扎实,但在灵活应用C语言编制程序的能力方面就比较薄弱,处于看得懂、编不出的状态。

对于一些非计算机专业的学生,他们普遍对为什么要学习编程语言尤其是C语言感到困惑。另外计算机学科概念的基础术语比较抽象,程序设计语言的语法枯燥,编程的算法比较复杂,学生普遍存在畏难心理[2]。由于以上几方面的原因导致学生在学习过程中没有学习的兴趣及动力。所以在教学中如何提高学生的学习兴趣和消除学生的畏难心理是提高学生编程能力的关键。本文针对非计算机专业学生的特点,从理论教学和实践教学两个方面作了一些探索,收到了较好的效果。

2 理论教学上的探讨与实践

一直以来,程序设计课程都采取“理论+实践”的教学模式。理论课主要教授语法、算法;实践课主要是验证性、设计性的内容。本人认为要提高学生的编程能力,理论课应该在如何提高学生的学习兴趣上下工夫。

2.1 利用第一堂课充分调动学生学习兴趣

《C程序设计》课程的第一堂课一般是概述,介绍C语言的产生、发展以及特点,初步认识C程序,介绍编辑、编译、运行C程序的步骤。但如果照本宣科地向学生灌输书本上的知识,不免让学生感到枯燥。

本人认为第一堂课应该充分调动起学生学习C语言的兴趣和热情。在简单明了地介绍上述基础知识外,应该将重点放在让学生了解为什么要学习C语言程序设计、学习C语言是件很有意思的事情上。比如本人会把用C语言编程解决实际问题作为一个切入点,以过河游戏为例。首先和学生一起玩游戏,将课堂气氛活跃起来。学生在玩这个游戏的时候,一方面启发其解决这个问题的方法,比如提出“规则”、“遍历”等概念,一方面提出人在解决问题时的“力不从心”。然后不失时机的向学生展示自己编写的解决该问题的程序,并向学生提出算法的概念。告诉学生,C语言可以解决现实中的实际问题,编程就是将自己所想的用另一种语言表达出来而已。

这样,在一定程度上消除了学生对程序设计课程的恐惧心理,充分调动起其学习编程的兴趣和热情,学生普遍进入一种迫不及待、跃跃欲试的状态。

2.2 合理调整授课顺序

在C语言教学中,无论是教材还是教师上课,一般都是先介绍数据类型和表达式,再介绍各种语句的语法规则,然后是数组、函数、指针等等。这种编写安排或教学模式不利于学生编程能力的提高[3]。学生在学习C语言时,开始怀着神秘兴奋的心情进入课堂,但随着几节关于大量难以理解和记忆的新术语、新规则的介绍,枯燥乏味的例题分析后,学生马上又产生了厌学心理,一开始的热情也随之减弱甚至消失。

针对这种情况以及非计算机专业学生的认知特点,本人在教学过程中,合理调整了授课顺序。本人主张应使学生先对程序设计有个宏观的认识,然后才是细节上的深入。所以在第一堂课后,先讲授程序设计结构,中间穿插讲解必要的基础知识,然后在学生上机过程中点出、强调,使学生在特定的编程环境中吸收这些基础知识。

3 实践教学上的探讨与实践

《C程序设计》是一门实践性要求很强的课程,只有通过上机实践,学生才能真正理解消化课堂上的教学内容,纠正原来理解上的偏差,加深对C语言的了解。学习的能力和方法比掌握的知识更为重要,教师更应该教会学生编程领域的学习方法,培养他们的学习能力,而不是仅仅教给他们知识点。在上机实践环节本人作了以下几个方面的研究和尝试。

3.1 递进启发式编程

在非计算机专业学生编程的时候,会觉得代码处处出错,无从下手,似乎只有在教师的指导下才能完成编程。因此,有必要找到一种有效的自我提高的方法。本人在实践教学过程中发现,对于初学者,应该循序渐进地进行启发,教会学生编程的方法。

第一阶段 抄代码。在每个新知识点的学习后,提供给学生范例代码。学生通过读懂、调试通过程序,感受新知识点的应用方法。

第二阶段 填空补充。在读透程序的前提下,设计新的题目,应用前面程序的知识点。在这个阶段不能全部把程序代码给学生。采取填空的方式,让学生去补充完成代码,并上机调试。

在这个阶段仍然要分步进行。开始的时候让学生补充单个的语句,最后以补充程序段的方式来提高学生的编程能力。

第三阶段 设计程序。在前两个阶段的基础上,让学生独立设计出应用相关知识点的程序。这里其实也是一种模仿阶段。

这种学习方法一方面强调了学习的渐进性,降低了学习的难度,能力得以逐步提高;另一方面可以逐步使学生从依赖老师向独立解决问题而转变。

3.2 鼓励学生读出错信息,学会自己解决问题

学生在编程的过程中,往往一出现问题,就不知道该如何是好,不会自己去查错。本人在教学过程中强调编译环境中编译信息的查看,鼓励学生遇到问题自己发现问题、分析问题、解决问题。在出错中学习,从而提高学生的编程能力。

3.3 重视程序调试

在C的编译编译环境中一般都有调试功能。虽然对于非计算机专业的学生没有调试程序的要求。但本人认为,学生通过调试不但可以对程序进行逻辑错误的查找,还可以在调试过程中更深层次地理解程序的执行过程。

4 结束语

提高非计算机专业学生的编程能力,是公共程序设计课程教学改革研究的一个课题,需要在教学的各个方面进行探索和研究。本人在提高学生学习兴趣以及消除学生畏难心理等方面总结了几种行之有效的方法,并应用于实际教学中。学生编程能力得到了很大的提高,取得了很好的效果。

参考文献:

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

[2] 谢书良.试论学习程序设计语言课程的心理障碍及压力来源[J].计算机教育,2008(20):120-122,199.

[3] 李妮.公共《C语言程序设计》课程教学改革的探讨[J].电脑知识与技术,2008(23):1094-1095.

篇2

【关键词】李克特量表 计算机编程 态度 性别

前言

相关研究表明,近十年中选择计算机专业课程学生的数目一直持续下降,同时社会对合格程序员的需求却不断增加,造成具有良好编程素质专业人才短缺的局面。其中一个客观原因是由于本科计算机专业学生的编程学习效果不佳,导致学生对编程开发的态度消极。因此,研究计算机编程学习效果的影响因素是计算机科学教育的一个重要问题,直接影响到计算机专业的教学。

1. 研究对象和方法

研究目的:探索大学生态度和性别与计算机编程学习成绩之间的关系。

研究对象:长沙学院179名(85名女性,94名男性)学习计算机编程C语言的在校大学本科计算机专业学生。

研究方法:李克特量表是目前调查研究中使用最广泛的量表,可直接反映出被调查者的认同程度。本次共设计与计算机编程学习相关的47个选项构建李克特量表,每个项目可选择:“非常同意”“同意”“既不同意也不反对”“不同意”和“非常不同意”。为量化测量值对答卷重新编码为1到5的数值,这样高分反映积极态度,反之亦然。

研究者:由长沙学院计算机科学与技术系两位教授设计问题选项,11名学生(4名女性,5名男性)监督完成答卷以确保被调查者了解每一个项目的预期含义。

2. 计算机编程学习效果的影响因素分析

根据Erodogan和Kabaca的研究,计算机专业大学生作为一个基于认知,情感和行为的信息受众集体其个人信心(态度)对学习效果有着明显影响。计算机专业的学生一般在本科学习的第三学期进行计算机编程的入门学习。

3. 调查结果

在对编程态度和性别之间的相关性研究中,学生性别对编程态度的影响经计算平均得分为3.59(Xmin=1.66, Xmax=4.94, б=0.645)。可知学生对待编程的态度普遍比较消极,同时男性对编程态度的积极性明显高于女性,如表1所示:

从表2可知,四个分量表中除对编程学习成功的态度没有显著差异以外,在其他的三个分量表中男生表现出更积极的态度。

编程的态度和编程的成就之间关联度是一个关键问题。为研究这个问题,特别做了编程效果与平均PAS(皮尔森)值相关性分析,结果如表3所示:

从表3可知,学生编程的态度与他们学习编程入门的课程之间有明显的相关性。其中相关性最高的是对学习编程会带来成功的信心。另一方面,对成功的态度与学习计算机编程并没有特别的关联,这其中相关性最低的就是对编程有用性的感知与在编程方面获得的成就之间的关系。因此16.7%的学生对编程态度的变化归咎于他们的信心、动机和对计算机程序设计有用性的感知。

4. 调查结果分析

综上所述,在计算机编程教学中学习态度和学习效果呈正相关关系,同时女性在计算机编程中参与程度较低,这与一般情况下女性在计算机专业的入学率非常低而且女性较男性对电脑负面态度更多是一致的。

关于学习态度的研究一直是教育学研究的重要问题之一,学生的主体态度是决定教学方法和教学材料设计时要考虑的一个重要因素。本研究中调查的47个项目有35项涉及编程态度,以反映学生对计算机编程的感受和看法。调查结果表明,学生的平均态度得分与编程入门课程及格之间显性相关(r= 0.443,P

5. 结论

本次研究结果有一定的局限性,主要体现在调查科目与测试样本相对较小,相关研究可参考科斯特洛和奥斯本对因素分析的相关文章。另一个局限性是被调查者可能受到不同班级与授课老师的影响。这些问题均应被包括在进一步的研究中。

篇3

关键词:C语言;编程基础;教学

当今社会,在我们看到计算机行业的美好就业前景的同时,也看到了计算机专业教育的美好前景。同许多学科的教学过程一样,计算机专业教育也要重视专业基础课程的教学。目前,大多数高校将C语言作为计算机专业的编程基础课程,作者认为将C语言作为高校计算机专业的编程基础课程是必须而必要的,但是,在C语言的教学中,往往因为目的不够明确,理念不够准确,而使我们的C语言教学没有达到应有的效果。因此,在这里提出C语言教学的四个定位问题。

一、教学课程性质的定位

C语言课程性质的定位:C语言是一门计算机专业的编程基础课程。

20世纪70年代,在B语言的基础上设计出了C语言。其中,UNIX操作系统,以及运行这一系统中大部分程序都是用C语言写成的。而被我们广泛使用的微软Windows操作系统的核心代码也是用C语言来编写的。1983年形成了C语言的ANSI(American National Standards Institute)标准,1989年ANSI C被ISO(International Standards Organization,国际标准化组织)所接受,这就是常说的C89标准,C89标准成为C语言的国际标准。而标准化委员会又于1999年再次修订C89,成为了C99标准。从这些事情上,不难想到C语言的重要作用和历史地位。因此C语言的通用性和规范性要普遍强于同时代其它的任何一种编程语言。当今编程语言以C++,C#和JAVA为主流,而他们正是从C语言发展而来。因此,从编程技术的发展过程和编程技术的前后衔接性而言,C语言也是最恰当的。所以,将C语言定位于计算机专业的编程基础课程是最合适的选择。

二、教学目标的定位

C语言作为计算机专业的编程基础课程,在开展C语言教学时,必须对C语言课程的教学目标有明确的定位。

目前,社会IT行业中,C语言实际应用的程度和广度都在大大的缩减,C语言的开发应用能力被他的后继编程语言所取代。C语言的职业应用领域更多的是结合汇编语言在单片机开发中的应用,如AVR单片机C语言开发,这突现在C语言的低端开发能力上。计算机或者单片机低端的开发应用是建立在对硬件相当熟悉的基础之上的,在这种情况下,要求编程基础课程的C语言突出其职业能力培养是不现实的。

因此,C语言课程的教学目标应该定位在计算机编程技术应用理念、编程逻辑思维、实际问题在编程中数学模型抽象能力等方面,即思维方式和模式上的培养认知上。C语言教学的开展不是去追求其职业能力,而是锻造和培养学生的编程思维能力,为后继专业课程的学习打下良好的基础。因为,没有编程思维的理念认识,编程思维模式的转变,计算机专业课程的学习是事倍功半的。

三、教学内容的定位

C语言本身所涉及的开发应用能力是一个很庞大的系统,C语言本身也是一个中级编程语言。C语言在低级方面,它允许在算法逻辑中通过详细的定义,来达到最高的计算机效率;C语言在高级方面,它隐含了计算机的结构细节,提高编程的效率。因此,C语言是介于低级编程语言和高级编程语言之间的中级编程语言。C语言本身也有着丰富而复杂的函数库。所以,在C语言的教学中还应该注意教学内容的筛选。从国内绝大多数面向高校编写的C语言教材来看,C语言的教学主要是侧重在学生运用其高级能力方面,解决数理问题方向,这也充分说明我国计算机专业教育大环境对C语言课程的定位。

在C语言教学中,结合C语言常规教材的特点,对教学内容的定位应当做到既有全局的认识,又要有所侧重;既要注重学生在C语言应用方面能力的培养,更要注重学生通过C语言对编程理念的认知。因为,C语言的教学内容的取舍不再是单纯的为C语言本身而定,更多的是想达到抛砖引玉的效果。

C语言的教学可以分为四个部分:数据类型和运算、逻辑结构、模块化思想、输入输出。

(1)数据类型和运算应该包括:普通变量与类型、指针、数组、结构以及基本的运算,尽管指针、数组、结构是在后期的教学中才涉及,但是它们依然是属于数据类型的范畴,只能说它们是一种特殊的变量。

在普通变量与类型阶段,教学内容的重点应该放在对变量的存储机制和运算机理的认识和概念理解方面。而到了指针和数组方面,就要求学生能够灵活应用变量的存储机制和运算机理。而结构部分是早期编程语言对于实际问题抽象方面最好的数据模型,有助于进一步提高学生的数据抽象能力。

(2)逻辑结构的主要内容是三大结构:顺序,选择,循环。这是所有成熟编程语言的重要逻辑结构模式。在这个部分,侧重于引领学生如何将实际问题的解决思维方式转变为用三大结构来解决的逻辑思维方式。在教学中,单纯的就结构谈语法,会限制学生的眼光,相反,应该就语法谈结构,编程中的逻辑结构才是计算机所有编程语言的理念之一。

(3)模块化思想是指C语言中的函数部分:标准库函数,自定义函数。C语言的函数思想是编程模块化思想的前身。在C语言中,将指定问题的处理过程放到函数里解决,函数的相对独立能力,使函数能够多次或者多处被使用。避免代码重用,提高了执行效率。

函数的应用,模块化的思维模式在编程技术的应用中,为程序的分工协作,或者把一个大问题分成多个小问题来解决提供了最佳的途径。所以在教学中,应当使学生充分认识到编程的模块化思想应用的重要性和必要性。

(4)输入输出即I/O。这里的输入输出既包括控制台的输入和输出(scanf函数和printf函数),也包括文件的输入和输出(fscanf函数和fprintf函数)。在技术上,控制台I/O和文件I/O只有微小的差别,但在概念上,两者是截然不同的范畴。

输入输出的内容能够使学生明确,程序代码的编写过程和运行过程是完全不同的两个过程,编写过程是从程序开发者的立场出发,而运行过程就要从程序使用者的立场出发。输入输出部分的内容是一个强化,强化学生在编程理念上有程序员和用户的立场差别。

四、教学理念的定位

在C语言教学中,教学理念的定位将直接引领教学的开展过程,直接影响教学方法、手段的设计与使用。把握好教学理念,是教学成功开展的捷径。

(1)实例性教学,先应用再理解。

C语言课程同许多计算机专业课程一样,是一门应用型的工具学科,我们这里的应用不指行业应用或者职业需求应用,而是指建立在计算机硬件条件下的软件的运用过程,这些都有一定的标准,典型的说,比如C语言本身的C89,C99标准,对于这些标准的理解,对于计算机初学者而言是非常困难的。在教学中,学生常习惯去追求为什么要这样?这就涉及到C语言本身内在运作机制的理解,很容易造成知难而退。在教学中引入实例性教学模式,目的在于使学生在学习中首先关注的是怎么用,而不是为什么,然后再去关注程序的运行过程,最后理解程序的存储机制和运作原理。在IT行业中,许多程序员也可以证明这一点,对于他们而言,应用是第一位的, 理解是第二位。

所以,在C语言教学中以实例教学方法为主,把握先应用再理解的原则,从而使学生在应用的基础上,再加强对编程的理解。

C语言教学中,新语法新知识的学习过程,通过对同一问题的旧新知识解决过程的对比,突显新知识的优越性,突出新知识的必要性和重要性。我们称之为“实例对比法”。

在知识的展开、强化、复习过程中,通过多个实例的解题过程,关注学习内容的变化过程,在解题过程中,引导学生的思考过程,接受和形成自己的经验,我们称之为“实例经验法”。

经历了一个阶段的学习,在学习内容的总结中,让学生从事一个相对综合的实例的开发过程,在教学中,引导学生对这个综合实例进行功能拆分和模块分析,而这个实例的分析和开发过程,可以让学生独立完成,或者分小组完成。强化学生的综合知识能力,培养学生实际问题的分析解决能力。最后教学中,对综合实例进行分析,探讨,教学相长。我们称之为“综合实例法”。

(2)培养学生的逻辑思维为主,强化源代码为辅

C语言课程作为计算机专业编程的基础学科,教学中把如何引导学生用编程的思维模式去分析问题、解决问题能力的培养放到重中之重,而把学生是否能够写出正确的C语言源代码做客观的分析。如果学生的源代码符合编程逻辑思维模式的要求,解题的逻辑结构准确,仅在C语言语法上有错误,对于这种情况,教学中应当作出肯定。学生在学习中,重视对编程理念的认识,要远比他们重视源代码要重要的多,当然两者兼顾自然最好。同时也要说明,这种观念只适应在编程的基础教育中。

(3)打破常规思维模式习惯,打造良好的编程习惯

计算机专业的编程基础是培养学生的编程逻辑思维模式。对于这种思维模式有别于常规的思维模式。常规上,人们使用的一种思维模式是来自于一般数学的思维模式,而这种一般数学思维模式是“集中型”的,在多个已知条件下,结论是明确的或者是唯一的。而计算机专业的编程中要求的思维模式是“发散型”的,在编程理念中解决实际问题时,要求归纳的是解决问题的方法,处理在各种可能条件下得到结论的过程。简单一点说,使用编程的方法解决实际问题时,对于一个“点”上的问题,往往要在一个“面”上分析,归纳这个“面”上所有点的条件,在程序控制过程中,筛选所满足条件的“点”;在编程中,对这个面的每一点都要妥当的处理,这样写出的程序才不至于漏洞百出。

打造学生良好的编程习惯,比如说:变量名的命名规则,变量声明定义方法、源代码分层次分段书写;把大问题分解成若干个小问题使用函数来解决,即模块化思想。这些小的习惯的运用,对于程序而言,也许并不影响结果,而对于学生而言,也不存在困难的技术问题,但是这些小的习惯的形成,将会直接带来良好的程序风格和可读性,为以后写出高质量的程序代码打下基础。

综上所述,高校计算机专业C语言课程是专业编程的基础课程,教学中弱化其社会实际职业应用能力,强化编程思维理念的培养,明确教学的目的,定位准确的教学理念,使用强化训练的教学手段,为以后后继的专业知识学习构建良好的基础和框架。

参考文献:

《C++ 程序设计教程》 钱能 清华大学出版设

《C++ 参考大全》 [美]Herbert Schidt电子工业出版设

篇4

关键词:计算机网络课程;实践;教改

一、引言

计算机网络编程是计算机专业一门重要的专业基础课,通过教学使学生初步理解了计算机网络编程的基础知识,但是在具体应用中,学生们普遍感受到的问题是,难以使学到的理论知识付诸于具体应用。所以这时就需要改革计算机网编程实践课,通过建立完善的实验环境,制定科学合理的课程和考核方式,给学生创造实践的机会,培养学生的动手能力,增加他们的就业能力。

二、计算机网络编程课程的实际情况

上海电机学院是一个应有型本科学校,注重实践,而目前来看,在教学中对于计算机网络这门课程,存在如下问题:

(一)理论与实践的脱节。目前很多高校计算机网络课 程实验学时很少,甚至没有开设实验课程,只注重理论教学。

(二)教学过程实验课时有限,课下知识得不到巩固。由于实践课时有限,业余时间实验室不开放,学生实践课所学知识,课下得不到巩固,容易很快的忘记。导致学生的实践动手能力不强,对所学知识掌握不牢固,不能满足市场的需求。

(三)实验内容少且过于简单。由于受实践课时的限制,开设的实验只是演示和验证性等一些简单的实验。缺乏综合性、设计性实验,学生的创新能力得不到锻炼。

(四)师资、设备落后。计算机网络技术发展过快,日新月异,我们很多高校的设备相对比较落后,不能满足当前的需要,我们的教师缺乏实践教学经验。

三、计算机网络编程课程的实践探索

根据实际情况,不仅在师资队伍和教学内容方面进行改革实践、而且在教学方法、实践考核等方面,对课程进行了一系列的改革实探索,并且取得了较良好的效果。改革是一个长期的过程,不断采用新方法与时俱进、及时进行创新,采用网络新设备,提高教学水平,为社会培养更多优的应用型技术专业人才。我们的探索在这几个方面:

(一)教学内容的改进。制定实验的教学内容应该考虑企业的需求,依据企业的需求来制定教学内容,特别是实验内容,这对于学生的就业进一步促进。

(二)加强项目建设。在实验内容上,对于项目的要求十分重视,在试验教学中,应以实验的项目形式进行,这样的实验形式比单一知识点的复习利于学生能力的掌握,这对于实践能力有很大好处。

(三)实验室开放管理。多给学生实践的机会,这样的机会可来自实习,在学校阶段则来自于实验室,在不影响正常的教学的情况下可开放式管理,让学生能来实验室学习,给学生提供更多的机会,从而能进一步提高学生的动手能力。

(四)合理考核。考核成绩应包括平时和期末,考虑实验及理论。

(五)教师建设。加强教师培训,提高实验技术人员的素质工作水平,重实验技术人员交流和培训工作。购买实验教学设备。使得能适应网络编程教学的需求。

对于实验教学研究应有的研究原则:科学性原则、主动性原则、交互性原则、坚持以学生为本的原则、培养学生独立探索和合作探索精神的原则、效益性原则。据此进行网络编程技术的建设发展。

四、结束语

在应用型本科教学中,计算机网络编程技术应重视实践,从教学内容、考核、教师、项目等方面进行改进,适应实践的发展。网络编程技术实际应用能力的培养应按照企业需求来建立,不仅在课本中的理论,还包括实际应用。应用型本科院校的课堂教学需要体现“应用”本质,不仅强调学生对所学理论的理解,更强调培养学生的实践应用能力。对计算机网络编程课程的实践教学,需要创新。从内容上说,创新包括科学创新、技术创新、知识创新、文化创新、教育创新、制度创新、理论创新等。大学教育要想传承久远,就必须实现教学创新。创新型人才以人为本,强调个性,要求个性教育化。

参考文献:

篇5

随着科技的不断进步,计算机技术的快速普及和发展,传统编程教学表现出了其自身明显的劣势,笔者通过阅读大量资料,并结合自身实践,将传统编程教学中存在的几点问题总结如下:

①语法学习过程较长从我国当前各高校计算机编程语言的教学来看,基本上都选择了计算机编程C语言、C++、C#、或java等,从这些编程语言的比较来看,其中相对要容易学习和掌握,而C语言、C++相对要比较难掌握,它们属于强类型编程语言,语法比较复杂,其中会存在较多的语法陷阱,导致学生将很多的时间浪费在纠错上,学生在进行学习时,需要用较长的时间来修正代码中的错误和漏洞,这带来的直接影响就是不利于学生编程思想的形成,最终导致只会使用一些编程工具,但是却不能在未来更好的进行编程工作。C#在面向对象编程语言中,即使是比较优异的一种,但是使用C#进行编程,需要计算机具备较高的配置,如果学校机房设备等比较落后,或者是学校硬件建设资金不足,那么进行设备更新,采用高配置的计算机是比较困难的,而且,C#仅支持windows平台,这就在很大程度上阻碍了部分不能在windows环境下学习的学生使用这一语言。

②受高校授课制度的影响编程语言的学习通常需要一段较长的、连续性的时间,而一般高校的授课时间都是固定的,每节课程的时间需要统一安排,排课老师需要考虑不同课程之间的授课冲突问题,所以一般情况下无法实现编程教学的集中授课,而只是同其他课程一样进行分节学习,这种授课模式对于编程教学来讲,其弊端就是难以让学生形成连贯性思维,通常会造成尽管这节课的内容在课堂上已经全部掌握,但是等到隔几天再进行下节课的授课时,却全部都已经忘记的现象,导致编程教学效果较差。客观来讲,编程课程实际上是一门比较枯燥的课程,不容易让学生全身心的投入和激发他们的兴趣。

③不利于学生的自主学习编程语言(如C语言、C++等)是比较难掌握的一门语言,一般需要教师对其进行入门教育。但是,在实际的教学中教师也仅仅是“抛砖引玉”的作用,教师将其基本要领教授于学生之后,还需要学生对其进行深入的研究与实践。然而,这些编程语言自身的学习难度在很大程度上决定了学生进行自主学习的难度,尤其是对于非计算机专业的学生。比如C语言的学习,就需要学习者首先具备较好的计算机功底,要详细的了解并理解堆栈、内存、指针、数组等概念,掌握代码的书写要求,对于很多计算机专业基础知识不扎实的学生,及非计算机专业学生来讲,代码就好比是天书,无法正常的判断代码错误原因,最终导致学习失败,最终放弃对编程语言的学习。

2Python编程语言在计算机理论教学中的作用

与C语言、C++、java等编程语言相比,Python语言表现出了其明显的优势,笔者接下来从以下三方面进行具体的分析。

①学习难度最小化首先,Python的代码书写规则与计算机算法中的“伪代码”非常相似,GuidovanRossum最初在开发这一语言时,参考了ABC语言的特性,使其最终设计出的语言书写规则与日常英语十分相似,在很大程度上增加了这一语言的易用性,即使是非计算机专业的学生,只要认真研究就可以迅速掌握,大大节约了教学资源。Python可以支持unicode字符集,因此就解决了ascii字符集的字节存储空间问题。uniocde字符在其它语言中一般需要进行比较复杂的转换,而python具有强大的序列(各类定长数组、动态数组、字符串等),从而较容易的实现了在同一个序列中放置不同数据类型的数据,以此省略了较复杂的组合变量声明和处理。还有就是Python自身的IDLE既可以在windows平台上使用,又可以在UNIX上得到较好支持。学生只需对python进行入门学习,便可以快速的进行代码书写。

②提高学生学习动力Python编程语言具备对学生的计算机功底要求较低,因此扩大了其使用人群,尽管是计算理论知识基础薄弱的非本专业学生也能够较快的掌握这一编程语言,并能够树立较强的编程思维,在很大程度上提高了学生的学习动力,我国有不少的编程爱好者,他们一般都没有接受过系统的计算机理论的学习,而Python的易用性恰恰解决了他们理论知识薄弱的问题,面向用户的设计和偏重程序逻辑的编码方式,让更多的编程爱好者树立较强的编程思路。③强大的类库使编程更简易Python有强大的各种类库的支撑,具备较多的免费编程资源,更容易进行布置,因此减小了开发难度,加快了开发速度。另外,由于Python是开源的,为了能够更加方便的进行工作,可以自行扩展Python的库,构建具备自身特色的类库。

3结论

篇6

关键词:编程能力;课程设置;教学方法;实践

编程是指我们为了借助计算机来解决某个问题而使用某一种程序设计语言来编写程序代码,并最终得到结果的过程。编程是人和计算机之间沟通交流的唯一方式,如果没有编程计算机就是等同于一堆废铁。编程能力在计算机专业技能中排在首位,因此有些学生虽然在学校期间学习了很多专业课程,但是由于编程能力弱,在步入社会后就出现了就业困难的情况。这就需要我们改变以往的传统教学方法,以新的方式来培养学生的编程能力。

1、合理的课程设置

根据教学的三要素即教学目标、教学重点、教学难点来合理的灵活的安排程序设计类课程,这样才能更好的培养学生的编程能力。在第一学期的课程设置上,我们应该首先增加几堂引导学生入门这样的课程,循序渐进的将学生引入到编程学习当中,使学生感受到学习编程的乐趣,这样学生就不会在学习一门陌生的课程时感到可怕和厌学。在进入正式学习编程课程后,在讲解基础知识的同时要增加讲解实例的课程,只有学会运用知识,才能培养学生的编程能力。

2、改变教学方法

传统的教学方法是灌输式、交代式的教学,为了激发学生的积极性,使学生能够主动的思考问题,我们要带着问题进行授课,通过与学生一起找到解答的方法并最终得到正确答案,来完成教学过程。

3、加强实践和练习

学习计算机专业就是为了以后应用到实际的计算机操作中,因此学生不能只学会专业的理论知识,更重要的是要将理论联系到实际,在实践中运用自如。这就需要学生大量的练习,在练习中提高自身的编程能力。

3.1 强化上机实践

编程的实践需要学校为学生提供良好的上机环境,因为只有在计算机上进行编译、运行,编程能力才能得到锻炼,而不能纸上谈兵。学校应该提供一套完善的系统来给学生进行编程实践练习,学生通过自己编程、上机操作、程序运行后得到正确与否的结果来训练自己的编程技能。培养学生实践、查找错误、改正错误、再实践,如此循环直到正确的这种上机实践习惯。

在辅导学生实践时,要求学生上机前做好充分准备,认真编写程序,确保在上机实践时能顺利操作,避免临时抱佛脚。在上机实践的过程中,要让学生查找自己编写的程序中的错误或不足,以便修改和完善。在整个实践完成之后,要求学生将本次实践整理出一份报告,上交给老师批改。写报告是为了让学生及时的总结本次实践的经验,吸取教训。这样深入精确化的实践训练大大挺高了练习的效率,让学生学会独立分析及解决问题,挺高了学生的编程能力。

3.2 选择典型习题

课后的习题练习能够帮助学生将课上老师教授的教材内容运用到习题中,从而更好的理解和巩固知识点,同时也能检查出自己对课上内容的理解及掌握的程度。在做习题中,尤为重要的是习题的选择,学生不能一味的追求量而忽略了质。老师可以帮助学生根据各阶段的重难点来选择典型的习题,提高学习效率。对于普遍存在的问题,老师应该在课堂上进行统一讲解,但是由于编程是一门专业的课程,往往会出现学生们在专业理论和技术上都有自己独特的见解。这时候就需要老师对学生的见解进行分析和评价,鼓励学生们在专业领域里不断探索。

3.3 掌握练习时机

许多学生都会按照教材上的进度来制定自己的学习计划,其实这是不合理的。学生应该根据自己的专业特点和将来的就业需求,来安排自己大学四年的学习计划。就培养编程能力来说,本专业的学生应该从大一开始就进行大量的编程练习。编程能力是从事计算机技术开发工作所必备的基本功,而想成为一名编程高手,大量的练习则是必不可少的。从大一开始练习编程,能够很快的体验到编程的乐趣,提升自己的自信心,尽早形成专业的思维方式。拥有大学四年积累的大量编程经验,学生在毕业时就可以自信的选择好的工作了。

3.4 实践中多交流

篇7

关键词:软件工程 编程语言

中图分类号: TP311文献标识码:A文章编号:1672-3791(2012)03(a)-0000-00

2010年3月,国务院学位委员会了新修订的学科目录。对计算机专业来说,此次修订最大的变化是软件工程从隶属于计算机科学技术的二级学科上升为同其平行的一级学科,这意味着随着计算机技术的发展,软件在计算机中的作用越来越大,从而使计算机最核心的东西,编程更加重要。那么,软件开发人员应该掌握那几种编程语言呢?笔者认为:软件开发人员应该掌握以下几种语言:C语言, C++及VisualC++,Java语言,Visual Basic及Access.。现分别阐述如下:

1 C语言

C语言已经诞生30多年了,今天仍然被广泛的使用,而与它同一时期出现的语言,许多都已经被淘汰了,这充分说明了C语言内在的强大的生命力。今天,C语言已经成了工科专业的必修课和计算机等级考试的必考语言。对计算机及相关专业来说,C语言是最应该被掌握的,其原因有三。第一,C语言短小精悍,功能强大,通用性好,目前从大、中型机到工作站、微型机,几乎都配有C语言编译系统,这有助于C语言的学习和开发。第二,C语言对于理解其它计算机编程语言乃至计算机工作原理都有很好的帮助作用。正如一位美国信息专家所说:“大学生毕业前要学好C语言,C语言是程序员共同的语言。C语言比其他高级语言都更接近机器。如果你不能解释为什么while(*s++=*t++)的作用是复制字符串的,那你就是在盲目无知的情况下编程,就像一个医生不懂最基本的解剖学就在开处方。”这句话很好的道出了C语言的本质。第三,对于自动化等专业的学生来说,经常要用到单片机对系统进行控制,由于汇编语言的复杂及通用性差,C语言有取代汇编语言的趋势。

2 C++及Visual C++

自从微软推出视窗操作系统以来,图形窗口界面成了事实上的工业标准。现在的操作环境大部分都是窗口环境,而要用C语言编写一个窗口界面简直是一个令人望而生畏的任务,用VC++则轻而易举。并且C语言是面向结构的,可重用性差,难以面对大规模的任务。而从C语言脱胎而来的C++语言除了继承c语言的优点之外,还具有封装性、继承性、多态性等面向对象编程语言所具有的所有特征,可以很好的应付大规模的任务。看到这里,读者可能要问,既然这样,我只学C++语言好了,不用学C语言了,其实不然,虽然C++包含了C,但C++是面向对象的,而C语言是面向过程的,由于C++过于庞大复杂,很难掌握,所以非专业人员只要掌握C语言就可以了。需要特别强调的是目前C语言的主流开发环境也是VisualC++6.0。这里需要注意的是VisualC++与C++并不是一回事,C++是一种语言,而VisualC++是微软公司所提供的一种开发环境。另外,这里之所以将C++及VisualC++合起来谈,是因为微软在软件领域的垄断地位,及庞大的MFC(微软基础类库)可以利用。在Visual C++环境下学习C++还可以更好的了解微软的产品及工作原理。

3 Java语言

随着互联网的出现,软件的开发模式从单机转向网络。Java就是一种很好的针对网络开发的语言,当然,VC++也可以。前面已经讲过,VC++过于复杂,难以掌握,因此java就成为一个不错的选择。Java语言抛弃了C++中指针,多重继承等复杂概念,相比C++简单了很多。并且它也是完全面向对象的,即具有封装性、继承性、多态性。虽然Java不具有多重继承功能,但通过接口属性也可以实现多重继承。Java是一个分布式语言,利用J ava来开发分布式的网络程序是Java的主要应用之一,Java的安全性高是受人青睐的另一个主要原因。因此对于非计算机专业人员,Java就是一个很好的选择。Java是与平台无关的,对于目前主流的两大操作平台,Windows与Linux都可以很好的支持,Java是通过Java虚拟机来实现与平台无关这一机制的。由于计算机专业人员需要熟悉不同的操作平台进行开发,因此,计算机专业人员也应该掌握Java语言。

4 Visual Basic及Access

我们知道现在是信息社会,对于信息的管理来说,经历了人工管理,文件管理,数据库管理等阶段,目前,大型信息系统都是数据库管理。因此对一个软件开发人员来讲,还需要掌握一门数据库语言,目前主流的数据库语言是SQL语言。VB对数据库的支持就很好,并且内置了SQL语言。在功能强大的VC++中访问数据库要比VB复杂的多。而且VB简单易学,入门容易。对数据库管理系统来说,Oracle和SQLServer过于庞大,内容繁杂,不容易入门。Access虽然是针对小型数据库的,但是功能也很强大,并且与Oracle和SQLServer一样,都是主流的关系型数据库管理系统。Access通过它的工具VBA与Visual Basic紧密集成在一起。学习VB还可以对微软的Office系列产品进行更深入的了解。目前,用VB和VBA(Visual Basic for Application)进行开发仍有一定市场。

5 结语

本文探讨了软件开发的四种编程语言,并分别指出了它们的特点及性能。当然并不是说,只学习这四门语言就够了,软件开发人员要学习的东西还很多,比如数据结构、操作系统、组成原理、编译原理、计算机网络等。但这四种语言应该软件开发人员应该掌握的四种语言。目前软件开发有专业的开发人员和非专业的开发人员,所谓专业的开发人员是指计算机专业毕业,系统的学习过计算机理论知识,他们是软件开发的骨干。非专业开发人员是指没有系统的学习过计算机理论,但由于工作关系又经常接触计算机,因为现在是信息时代,他们是计算机开发的主力,因为他们熟悉本行业的流程,专业人员与他们结合起来才能开发出高效的软件。考虑到计算机与非计算机专业之间的差别,这里给出学习四种语言的如下建议:对专业开发人员来讲,四种语言都应该掌握或至少熟悉。对于非专业人员,掌握四种语言有较大困难,可在掌握VB及Access的基础上再掌握一种语言(笔者推荐C或者Java)。

参考文献:

[1] 谭浩强. C语言程序设计[M]. 清华大学出版社.2010.

[2] 孙鑫. 余安萍 VC++深入详解[M].电子工业出版社. 2006 .

[3] 朱福喜. Java语言程序设计[M]. 科学出版社.2009

篇8

【关键词】教学改革;编程;高职教育

一、高职院校计算机编程类课程教学的现状

高职院校计算机编程类课程教学的好坏,一直制约着学生专业核心课程的学习,也成为影响学院招生的重要因素。与计算机软件开发息息相关的编程知识是一个不断发展,并不断的更新的新兴学科,因此,我们计算机编程类课程的教学就不能墨守成规,这对当前的高职计算机教育提出了更严格的要求。当前高等职业院校计算机编程类课程的教学还存在一些问题。

(一)课程教学安排不够合理

由于计算机编程类课程属于专业基础课程,理论知识偏多,目前大部分高职院校此类课程的教学以理论课程为主,实践课程较少。有些课程如c语言程序设计、Java程序设计等会安排一定的实践课程。但是由于课程内容过于抽象,教师在实践课程中也是以讲授为主,学生成为了教学的旁观者,并没有真正融入到教学中去。

(二)课程教学对学生的评价方式过于单一

由于课程的特殊性,目前大部分高等职业院校对于编程类课程教学中的学生评价主要有平时出勤情况、期中考试和期末考试构成,且期末考试成绩占学生总评成绩的大部分比例,期末考试采用的考试形式是闭卷笔试。考核形式过于单一。有些学生投机取巧通过背书、背课后习题甚至通过考场作弊的方式拿到高分。部分高校通过了一系列的改革,利用在线考试系统随机出题方式考核,但是局限于选择题和填空题,学生考前背题库的现象随处可见。这些问题的出现,明显违背了编程类课程教学设计的本意,达不到培养学生编程思想和提高学生能力目的。

(三)高职院校学生学习积极性不足

计算机编程类课程本是枯燥无味,比较难学的课程,且通过多年的教学经历我发现目前高职院校有很多学生都是被班主任和家长强迫上课学习,只有少部分同学由于对课程感兴趣或者有明确的学习目标而主动学习。这样导致部分学生对这类课程的重要性认识的不够充分,特别是一些基础差的同学更是如此,长此以往便失去了学习的积极性。这便给高职院校编程类课程的教学和学生后续专业课程的学习造成很大障碍,更不利于学生专业能力的提升。

(四)教学模式期待进一步改革

传统教学中,教师课堂讲授完之后学生接着练习。大部分学生其实所谓的课后练习仅仅是将上课老师的例子记下来然后重复地输入到电脑里然后运行,或者是将教材上的实例输入到电脑运行,如果运行正常,这次练习到此结束。如果运行过程中出了问题,那么也是输入错别字母所致。其实在这个练习过程中学生能学到的仅仅是计算机的信息录入能力。因为在整个过程中学生不会去思考和发现问题,更不会去解决问题。

二、高职院校计算机程序课程的改革

针对目前各高职院校计算机编程类课程教学中存在的各种问题,结合我院实际情况以及本人在教学过程中的亲身经历,提出了对此类课程教学的几点改革思路,并取得了一定成效。

(一)培养和提高高职院校学生学习编程类课程的积极性和主动性

高等职业教育不同于高等本科教育,高职教育重点在于培养学生的动手实践能力,因此在我们的程序设计类课程的教学过程中加强对学生学习的积极性和主动性的培养是非常必要的。我们应该充分认识到高职院校学生基础偏差、学习耐心不足和学习积极性不高这一特点,适当降低课程教学内容的难度,挖掘课程教学过程中学生学习的兴趣点,创新实践教学内容,优化教学案例,并布置以小组形式完成的且与学生生活相关的编程小项目等,以此来挖掘学生本身的潜能,让学生体会到程序设计的成就感,进而调动学生学习的积极性。

(二)创新编程类课程教学模式和学生评价体系

目前大部分高职院校的教学评价系统仅仅只是对教学结果的评价,主要体现在学生的成绩上而忽视了教学和学生学习的过程。学习的过程即为发现问题到解决问题的过程,我们的编程教学也要遵循这一过程。

据此,结合我院的实际情况和课程教学情况,本人开发出一套创新性学习平台,通过此平台可以将学生课堂学习和课后练习紧密联系起来。首先教师上完课程后必须通过此平台学生将要完成的课后小项目,并同时设定完成的时间。不仅如此,教师还可以设定完成该项目的同时必须记录下来同学完成任务过程中遇到的问题(至少5条),同时学生还必须回答其他同学提出的问题(至少5条),只有在指定时间内完成的项目并记录了指定数目的问题和回答了指定数目的问题后,系统会自动帮该学生计人一定分数,每次项目的分数累积可作为期末综合成绩评定的重要参考。学生可以实时看到自己本次课程的动态成绩。通过本系统对教学模式和学生评价的改革可进一步提高学生主动探索式学习的主动性、积极性和团队合作的精神。

篇9

关键词:敏捷软件开发;计算机语言课程设计;团队合作

计算机语言课程设计是各大工科院校自动化及相关专业的必修实践环节,一般安排在计算机语言类课程之后开设。学生通过2~3周的编程集训,完成一个小规模的软件设计,体验软件的开发周期,从而获得软件开发综合能力的提高,为后续专业课程的学习奠定编程基础。近年来,企业对本科毕业生的要求越来越高,毕业生不仅要有扎实的专业功底,而且要具备较强的计算机应用、软件开发、创新和团队合作等综合能力。而且,团队合作能力越来越受到企业的重视。因此,高校应根据现代企业和社会的需求进行人才的全面培养。作为计算机语言课程设计的带队教师,应在教学过程中不断探索新的教学方法,寻求新的编程训练模式。

1计算机语言课程设计的教学现状

目前,我校开设的计算机语言课程设计实践课历时两周,主要训练学生进行Windows程序的开发,编程语言由学生根据自己的情况自选。课程设计的题目分为两类:一类由带队教师自己拟定;另一类由学生自己拟定。教师拟定的题目大多结合生活实际,且带有难度系数,最终以题目库的形式呈现给学生,学生可根据自己的情况进行选题;考虑到有的学生对题目库中的设计题目都不感兴趣,影响编程的积极性,允许学生根据自己的兴趣取向自拟题目,但是要得到教师的许可。这样,学生才能真正体验到开发程序带来的快乐,计算机综合能力也会得到相应的提高。经过多年的教学实践探索,计算机语言课程设计实践虽然取得了一定的成绩,也得到了学生的认可,但是还存在一些不足之处需要进一步改进。(1)每个设计题目均指定单个学生独立完成,学生从查阅资料到完成程序设计的整个实践过程中同学间的交流、合作机会少。(2)带队教师很重视计算机编程能力的培养,但是忽视了社会实践、团队合作之类的软技能[1]培养。分析上述的不足之处,可以看出以往的教学模式不利于学生团队合作综合能力的提高。因此,为了进一步提高教学质量,令学生既能体验最流行的编程模式,同时又能在实践过程中培养创新探索能力、团队合作能力,在本课程设计的教学方法改革中引入敏捷软件开发模式[2],给学生创造沟通的机会,增强学生的团队意识,让学生在团队互动的实践过程中得到最好的编程锻炼,使得软件开发能力和软技能综合能力得到最大的提升。

2敏捷软件开发模式

2.1敏捷软件开发模式

敏捷软件开发模式[2]是从2001年2月开始兴起的软件开发模式,属于轻载软件模式。因为它的开发效率高于重载软件开发模式,已成为全球流行的软件开发模式。2010年12月10日,中国敏捷软件开发联盟正式成立[3],从此,国内的软件界也加入了敏捷软件开发模式的行列。敏捷开发模式有一个突出的优点——非常重视团队合作。该开发模式有很多子方法[2]:如极限编程(ExtremeProgrammin)、特性驱动开发(FeatureDrivenDevelopmen)、水晶方(CrystalMethodologie)、Scrum方法、动态系统开发(DynamicSystemsDevelopmentMethodolog)等,每个子方法中都内含了团队编程。和传统的软件开发方法不同,敏捷软件开发的团队成员在每天开始工作前,都要进行一次集体的面对面的讨论与交流[2]。所以,为了保证整个开发过程的顺利进行,团队的每个成员必须要学会主动和他人交流。

2.2敏捷软件开发子模式的选择

在所有敏捷开发的子模式中,开发团队一般为5~6人。如果在计算机语言课程设计中规定5~6名学生组建一个编程团队,那么肯定有些学生会变得不主动。仔细研究敏捷开发的子模式,发现极限编程中的结对编程方法非常适合小规模团队的编程训练。这种编程模式通常由两个学生组成一个编程小组,在同一台计算机前共同完成一个软件的开发。具体分工是:一个学生负责写代码,另一个学生负责检查代码的正确性。在开发过程中,负责输入代码和检查代码的角色可以根据需要灵活地调换。在整个编程过程中,一旦发现语法和运行错误,须及时讨论并调试。在计算机语言课程设计的实践过程中采用结对编程这种敏捷方法,相对于以往的训练方式,是一种新的教学方法。这种结对方式既可以提高程序的开发效率、缩短代码的开发周期,又有利于建立起良好的团队合作和学习氛围。这也符合现在的以CDIO(ConceiveDesignImplementOperat)理念[4]培养工程技术人员的要求。

3敏捷软件模式在计算机语言课程设计的实践应用

3.1组建团队

在课程设计开始之前,首先要进行团队组建,即结对。敏捷宣言的原则中提到[3]:“最好的架构、需求和设计出于自组织团队”。所以,组建团队时,教师从不强行指定,而是让学生本着自愿结对的原则,这样形成的小团队才是最有潜力的团队。在接下来的两周时间内,结对的学生将在整个课程设计过程共同完成软件的前期调研、设计开发、调试和成果答辩汇报等。学生将在所选项目的开发过程中通过亲身体验团队合作学会如何发现问题、共同分析问题和解决问题,同时提高自身的项目分析能力、创新思维能力和合作交流能力。

3.2选题与构思

结对以后,小组成员要通过初步讨论进行选题和方案构思。如果对题目库中的题目不太感兴趣,允许学生根据自己的兴趣自拟题目。待题目确定后,继续进行查阅资料、调研,并设计出初步的方案。如果两个人对设计方案意见不一致,需要进一步进行沟通交流。必要时请老师参与讨论,最终的设计方案必须是通过结对的两人讨论一致好方案。在整个选题构思过程中,学生都处于主动地位。

3.3具体实践

这一阶段,结对的学生要根据第二步的设计方案开始编程。按照经典的结对编程流程,两个学生须在同一台计算机前一起编程。由于在本课程设计开设之前学生从没有经过系统的软件开发训练,所以在课程设计的过程中,不能照搬经典的结对编程流程。我们为每个结对组配备两台计算机,结对的双方要合理地利用两台计算机:一台用来显示资料和代码实例;另一台主要用来结对编程实现。这样整个代码的开发仍在一台计算机上完成,负责输入代码的学生要保证代码输入的快速性,负责校验代码的学生要保证代码的正确性。编程中如果遇到了不懂的地方,可以利用另外一台计算机随时进行资料查阅和代码实例的比照。在整个编程实现的过程中,结对编程的两个人要相互信任、互相督促,共同学习编程的技能,这样编程能力弱的学生也能在结对过程中学到编程的方法,共同完成团队的任务。在整个实践阶段,为了掌握学生编程的进度,带队教师将以客户的身份全程参与到每个结对小组的实训中。建议每个小组在开始一天的工作前,必须开会决定当天的任务,并做成计划文档;每天的工作完成后,需将当天的编程结果给带队教师看,教师会根据每天的进展对每个结对小组当天的结果提出反馈的意见和改进的要求。

3.4检查与提交

具体实践完成后,结对小组邀请教师来检查已完成的软件。通常,带队教师先检查代码的正确性,保证程序能顺利运行;然后,从使用者的角度来检查软件是否符合设计要求。如果发现问题,则再次讨论修改,直到通过教师的认可方可提交代码。

3.5考核

作为一门实践课,成绩考核是非常重要的,不能光靠最后提交的程序评定成绩,这样就会造成成绩的不公平。采用了敏捷软件的结对开发模式后,由于带队教师全程参与了各个小团队的开发过程,掌握了每个团队成员的平时表现,设计成绩由程序运行情况(40%)、答辩情况(10%)、平时表现(30%)和报告文档(20%)四部分组成,每一部分又分为五个等级,具体评分标准见表1。

4结束语

面对用人单位对人才的高要求,高校对程序设计之类的实训课应不断探索新的教学方法。将敏捷软件开发模式应用到计算机语言课程设计的教学中,已在我校自动化12级、13级的学生中进行了两年的实践。从两年的教学效果来看,在新的教学模式要求下,学生学会了相互间的交流、相互间的合作,学会和别人一起分享成功。从小团队的组建到课题的选择,从方案的设计再到实现,均通过结对的两人合作完成,给学生提供了很大的自主空间。相对于以前的教学模式,学生在课程实践中获得计算编程能力的极速提升,软技能也得到了培养,极大地提高了学生的积极性和创新性。后续专业课的任课教师也反馈:学生经过本教学模式的编程训练,在专业课需要编程的实验环节表现出了很强的程序开发能力和组织能力。

参考文献

[1]袁华,张凌.网络工程设计实践课程能力培养初探[J].计算机工程与科学,2014,36(A2):242-245.

[2][美]RobertC.Martin.敏捷软件开发:原则、模式与实践[M].北京:清华大学出版社,2003.

[3]张志丽.软件开发生命周期法比较之敏捷与传统[J].电脑开发与应用,2013,26(12):32-37.

[4]顾佩华,包能胜,康全礼.CDIO在中国[J].高等工程教育研究.2012(3):24-40.

篇10

关键词:计算思维;大学计算机基础;教学改革

1.计算思维是改变大学计算机基础课程现状的核心推力

计算思维(Computational Thinking)是美国卡内基梅隆大学计算机系周以真教授提出的概念,其定义为“运用计算机科学的基本概念去求解问题、设计系统和理解人类的行为,包括了涵盖计算机科学之广度的一系列思维活动”。计算思维反映了计算机技术本质特征和解决问题的核心方法,能够提升非计算机专业学生的计算素养,培养学生用计算机处理和解决领域问题时的思维方法和表达形式,对学生有深远影响。2010年陈国良院士提出将“计算思维能力培养”作为计算机基础课程教学改革切入点的倡议,2012年7月,教指委在西安举办了“第一届计算思维与大学计算机课程教学改革研讨会”。2013年7月“第二届计算思维与大学计算机课程教学改革研讨会”在成都召开。这些都表明,增强计算思维能力的培养已成为非计算机专业计算机课程教学改革的重要方向。

大学计算机基础是大学本科的公共基础课程,通常作为大学第一学期的课程。当前,在该课程教学过程中存在一些问题,已经引起广泛关注:首先,多数教学内容是计算机专业知识的浓缩,缺乏主线,显得多而杂;其次,实践环节侧重软件工具使用,由于不少学生在高中阶段已经掌握这些工具的使用,导致其失去对该课程的学习兴趣。不少专业教师和教育管理者已经针对课程教学中存在的问题进行了有益探索与实践,例如,面向多类专业不同计算机基础的学生,组织了分类教学,收到一定效果,但没有从根本上改变课程现状。而以计算思维教育与训练为核心实施大学计算机基础的改革与创新,能从根本上改变该课程的现状,并有效提升教学质量与效果。

2.大学计算机基础课程教学过程体现计算思维培养

2.1亟待解决的问题

课程的改革目标是让学生在学习计算机核心知识和掌握应用工具的基础上学习运用高效的思维去思考,将无意识的计算思维教学理念提升到有意识、系统性的计算思维教学。力求从根本上扭转目前大学计算机基础课程所面临的教学困境。针对以上目标,需要以计算思维为核心重构教学内容,并通过合适的教学实践手段和方法使得这些重构的内容能够被学生接受和理解。通过分析,提炼出要解决的具体问题如下:

1)在有限课时内需要培养学生哪些具体计算思维要素。

我们的目标是传授给学生基本的计算机核心知识,但是计算机科学作为一门学科包含了复杂的知识体系,并在不断地发展和创新,需要确定哪些知识点能够被定义为该课程教授的核心内容。

2)如何在学生尚未掌握任何一门编程语言的情况下实践所学计算思维内容。

大学计算机基础课程所面临的是大学一年级学生,除个别学生在入校之前有过编程经验,学生普遍没有编程基础。如何在缺乏编程实践的前提下让学生掌握计算思维是决定最终教学效果的关键问题。

3)面向不同基础和专业的学生如何体现不同的计算思维的教育和训练内容。

2.2分类教学、专业融合的教学内容设计

西北工业大学是一所以发展航空、航天、航海工程教育和科学研究为特色,以工、理为主,管、文、经、法协调发展的研究型、多学科性和开放式大学。不同专业对学生的计算机知识的要求不同,存在较大差异。相同专业学生之间的计算机知识也有较大差距,在这种情况下采用分类教学是必要的。例如在程序设计课程中按照文、理科进行分类实践教学,取得了良好的成效,积累了经验,但是在大学计算机基础课程中尚未实施。此次以计算思维培养为核心的大学计算机基础课程教学改革在教学内容设计上除按照文、理分类外,还考虑到特殊方向和专业学生群体的较高计算机教育的需求,将教学内容分为4个方向:(1)面向理工类专业学生;(2)面向文管类专业学生;(3)面向国际班学生全英文计算机教学;(4)面向教育实验学院卓越班。

西北工业大学作为理工科重点院校,大多数学生都归类于方向(1),以2013年数据为例,方向(1)约占62%,方向(2)约占17%,方向(3)约占4%,方向(4)约占17%。在确定每个方向学生教学内容时,遵循“两个融合”的原则,将计算机基础教育与计算思维培养融合,构建以计算思维能力培养为主线的非计算机专业通识教育;将计算机基础知识与学生的专业技术融合,在进行计算机思维培养教学内容选择时,注重计算机基础知识与学生专业方向的融合度。“两个融合”的具体内容包括:

(1)计算思维培养融合,是指将计算机科学中最具有基础性和长期性的计算思想教授给学生,侧重使非计算机专业学生能够领略计算的核心方法,学会如何把问题转化成能够用计算机解决的形式,培养学生从本质和全局来建立解决问题的思路,为其今后的专业学习和应用计算技术打下坚实基础。

(2)专业技术融合,是指根据学生专业特点和需求,在计算思维培养融合的基础上,动态选择课程内容,形成可定制教学模块,实施分类分层教学。

“两个融合”原则体现了具有鲜明特色的非计算机专业大学计算机教学方案,形成了纵向分类、横向分层的教学内容。每个方向内容由基本理论知识层、计算思维融合层、专业融合层组成。以面向理工类专业学生的方向(1)为例说明各层的含义,如图1所示。

1)基本理论知识层。

该层属于计算机基本知识内容,包括基本概念和基本计算思维模块,在介绍计算机软、硬件的历史和未来发展趋势过程中贯彻计算机基本知识,包括二进制、冯・诺依曼计算机、图灵机、计算复杂性等计算机重要基础概念等。这部分内容比较近似于之前课程中计算机基本知识部分,但我们在教学改革中对其内容重新组织,从计算机重要的“分层”和“抽象”概念出发引导学生学习这部分知识,力图让学生领略到这些技术背后的基本计算思维内涵。通过学习计算机发展历史,让学生对整个计算科学发展有全局了解。

2)计算思维层。

包括问题求解方法和算法模块,学生在学习了计算机重要基础知识后,开始深入学习计算系统底层具体思维和运行机制。这部分从系统和算法角度让学生学习计算机解决问题的方法,包括求解框架、典型案例的计算算法、具体思维过程和实现方法等,让学生在计算思维较高层次讨论计算机学科的根本问题和思维方式,深入了解计算机的工作和运行机理。这一部分内容体现了本课程的计算思维培养目标。

3)专业融合层。

最高层的专业融合层完成融合专业知识、提升学生在专业学习中应用计算思维的能力的任务。该部分从数据处理和网络计算角度,让学生领略到计算机目前最广泛的应用模式,从而在自己的专业领域加以运用。这部分模块属于变化较大的模块,目前仍然需要开发和扩充大量与其他专业更为紧密相关的案例和应用模式。

按照图1所示,不同类别学生在基本理论知识层内容是相同的,在第2层上,教育实验学院学生所学的算法和系统内容更为深化和多样,实现了差异化教学。在专业融合层,为理工类和文管类不同专业特色的学生设计了不同模块内容。理工类学生学习数据处理和计算网络知识,而文管类学生侧重学习用计算机处理数据和利用计算知识研究社会关系等。

2.3两阶段培养、可视化计算思维实践的实验环节

一直以来,实验教学通常是理论教学的辅助,和理论教学在章节内容上是对应的。但在我们的教学改革中将实验课程和理论课程定位为“互补关系”,实验课程具有相对独立性,在内容中体现“两阶段培养”的实验教学理念。第一阶段实验为计算机基础知识实践,包括Windows的使用、常用工具软件的使用、常见网络应用等。此阶段目标是培养学生对计算机基本操作技能和常用工具软件的掌握;第二阶段实验是关于计算思维的实验。这部分内容要求学生依据具体应用问题设计程序,实现典型算法。两阶段培养中的第一阶段目标就是要学生熟练掌握工作和学习中常用的工具类软件,为以后的学习和科研打下基础。

针对在本文2.1节中提出的第2个问题,即此阶段的学生尚未具备程序设计的基本知识和经验,我们认为,采用可视化编程工具是解决这一问题的有效方法。可视化编程工具支持可视化(Visual)程序设计,主要是让程序设计人员利用软件本身所提供的控件,构造应用程序的各种界面,可视化编程技术已经成为当今软件开发的重要工具和手段。

为此,我们在课程实验改革中引入可视化编程工具Raptor,使得尚未具备编程基础的大一学生能够实施算法实践和验证。Raptor是一种可视化的程序设计环境,其将程序设计中的要素以图形符号的方式展现,使得学生在不具备编程知识的基础上可以实践计算机中算法类问题。目前,它已经在卡内基・梅隆大学等世界22个以上的国家和地区的高等院校中使用。

在实验课程中设计了4个学时讲解Raptor工具并要求每个学生至少课堂完成8个基本算法实验任务。在实验课之外,要求学生用Raptor完成算法类大作业并撰写实验报告,以综合训练学生解决算法类问题的能力。教学过程和最后的调查结果表明,引入算法类可视化工具有助于实验教学取得良好效果。

3.改革实践和总结

在2013-2014学年,我们将改革后的教学内容对部分理工类班级开展了试点教学,试点专业涉及材料、自动化、电子信息专业等,在课程末期分别针对任课教师和学生做了教学效果调查,调查结果表明教学效果基本达到预期教学目标。

教师普遍感受为所带课程的难度和以往课程内容相比备课较难,但课堂氛围较好,内容受到学生关注,尤其实验环节引入了Raptor可视化程序设计工具,课堂氛围活跃,学生的学习兴趣和积极性较以往有大幅提高。

部分学生调查结果如图2和图3所示。图2是学生对计算思维认识的调查结果,显示出大多数学生(达到60%以上)理解了计算思维的概念,认识到计算思维和计算机基础课程的重要性,不仅仅只是学习工具应用,而是对今后理解和掌握计算机应用技术奠定基础,从无意识地应用计算机解决问题到有意识地培养自己的计算思维思想。图3为调查学生认为教学内容中哪部分收获最大,19%的学生认为计算思维有最大收获,居第二位置,说明这部分的学习为培养优秀学生的创新能力打下了良好的基础。