计算机程序设计范例6篇

前言:中文期刊网精心挑选了计算机程序设计范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。

计算机程序设计

计算机程序设计范文1

一般来讲,语言类课程的教材通常如下安排:第一章讲授语言的历史背景、特点、运行机制等。第二章介绍语言的数据类型、运算符和表达式等内容,此时的实践课基本上不具有实质性内容,通常几周后学生才有动手操作的机会。课程的讲授基本上都以语法为主线,在讲授某一章语句语法时,会配有程序说明,但也仅作为内容的示例或验证来加以讲解。这种教学模式的形成有其历史原因,过去计算机都比较少,学生很难有上机的机会,所以希望上机时减少由于语法错误而浪费的时间,一般在上机之前将要运行的程序在纸上写好,然后仔细检查,认真验证,唯恐出现语法错误,延长调试时间。这种教学模式一直延续到现在,已完全不符合现在社会发展的需要,其弊端主要有:以教师的讲授为中心,学生入手比较晚,积极性不高,所编写的程序大多是对内容的验证,创新能力得不到锻炼和提升。等到学生语法都已学完,能够做一个综合性的大型程序设计时,也快接近结课考试时间,学生忙于考试,无心编写程序,得过且过,效果不是太好[1-3]。

2转变教学模式

目前计算机的发展速度很快,学校里供学生上机使用的计算机越来越多,上机条件越来越好,编译平台也发生了很大的变化,会给编程者以更多的提示,缩短了检查编译错误所需时间。学生的理论课基本上也能够在机房上课,教师边讲学生边做,克服了过去只听教师讲授而看不到真正操作环境的局限,因此,仍然沿用旧的教学模式已不能适应新形势下人才培养的需要。可以从以下几个方面对课程进行优化研究。1)打破传统教材的顺序,前后结合。传统教材都是先介绍某种计算机程序设计语言的历史背景、特点,之后介绍这种语言的一个简单的小程序,讲解框架和基本单位,这个阶段可以有一次上机实验的机会;然后就是算法,接下来是数据类型,对这部分内容的讲解要占很长的时间,在这段时间里,学生动手的机会很少,很难建立起对该类语言的印象,而且到后期能够动手操作的时候这部分内容基本上又都忘了,还需重新加深印象。另外,教师讲解时间过长,容易使学生产生厌学情绪。有鉴于此,在讲解这部分内容时,我们可以结合后续的知识,比如讲解数据类型的同时,可以结合输入/输出语句同时进行,针对每种数据类型告知学生如何输入,如何输出,并结合实例进行大量练习。一般的教材都将输入/输出语句的讲解设置在数据类型之后,学生经过数据类型的练习后,再接受输入/输出这一章的学习时就很轻松,老师仅做一个总结就可以了。一般来讲,每一种语言都有一个程序的框架,首先要知道这个大的框架,然后才能向其中添加自己的代码。所以讲解的顺序应该是最简单的程序,可能只由几行代码构成,甚至可能就是一个程序的框架,加上一些简单的输入/输出语句。由此循序渐进,由易到难。现时期的教学模式可以从以教材章节为中心向以项目为中心来转变。教学中虽然不严格按照教材的章节顺序讲解,但是项目的选择也不能过于随意,要能够覆盖教材的知识点,而且能够符合学生的认知规律。在项目中讲授语法知识,直观不抽象,入手才会比较快。2)双项目驱动。课上可将一个项目作为主线,比如学生信息管理系统,从这个系统的功能构成一直到每种功能的具体实现都和学生共同完成,课下再以图书信息管理系统为主线,让学生仿照课上的实现过程自己设计。在这种思路下,仍然要打破传统教材的讲解顺序,比如在学生信息管理系统中,介绍完程序设计的基本方法后,可以确定出本项目的主要功能模块。如果是C语言课程,就给学生确定出主要函数的框架,但这并不意味着要给学生介绍完整个函数一章的内容,只需告知学生程序是要分模块设计的,不讲函数的实现细节。然后再一个模块一个模块地加以实现,其他语言的讲授与此类似,期末时,学生便学会了两个项目的开发。语言类课程可以使用相同的项目,比如学生信息管理系统和图书信息管理系统,但在完成时可以采用不同的形式,一方面使学生对该项目的功能烂熟于心,另一方面又能对比每种语言的不同点及优缺点,进一步加深印象。3)听看抄改写。教授课程采用“听看抄改写”五部曲方式,听教师讲解,看老师的操作,学生动手抄写程序,学生模仿老师的操作自己动手实现,学生仿照已实现的程序改写。以期达到举一反三,多多练习的目的。其中增加了一个“抄”的环节,一方面,现在计算机资源的利用率很高,学生很少有机会手写程序,所以一旦需要手写程序时(比如面试)就无从下手;另一方面,学生通过手写程序,确实可以加深很多印象。这五部曲中“听看”固然重要,但“抄改写”占的比重更大,老师通过了解学生动手过程中出现的问题总结经验,发现学生对哪些问题已掌握,哪些问题还不熟悉,还不了解,还需要深入讲解,以便加强练习,做到每一个练习都是有针对性的,使学生更快更好地掌握所学的知识。

3转变教学重心

传统方式下,每节课基本上都以教师讲解为中心,经过上述课程教学模式的转变之后,很容易使教学重心也发生转变,即以教师讲授为中心向以学生学习为中心转变,比如上述“抄改写”的比重和“听看”的比重相近,学生动手操作的机会增加,能力增强,积极性自然也就高涨。教师也从一节课不停地讲解中解放出来,留给自己更多的时间观察学生,留给学生更多的时间锻炼自己,学生和教师共同查缺补漏,共同完善教学。在教学过程中,应尊重学生的差异性和多样性,并采取有效的措施因材施教[4]。转变教学重心还要以提升学习兴趣为基础。在入门阶段,为了吸引学生的注意力,激发他们的学习热情,使用的程序尽量具有一定的趣味性,可以是一个简单的小游戏,比如第一节课就让学生自绘简笔画。再如简单的猜数字游戏,两人一组,一个学生做,另一个学生玩。后期,随着学生能力的提高,可以使用越来越复杂的程序,以培养能力为重心,开拓学生的创新思维,学生在已知程序中学习到该语言的基本语法后就可以按照自己的思维给出更具创意性的设计。在课上学习基本语法时,也可以多做游戏,比如教师给出一个关键字,一个学生比划一个学生猜,再比如“跳跳跳”等小游戏。

4辅助工具建设

4.1课程网站建设笔者结合自己多年的教学经验总结出:采用传统教学模式与网络相结合,会收到良好的效果。建立课程教学网站,上传课件、工具、学生作品等,同时提供讨论区、留言板,方便学生之间、师生之间的交流,定期优秀的学生作品,给其他同学提供榜样和思路,通过这种手段来达到提高学生动手能力,激发学生的学习热情和兴趣。4.2其他教学工具的使用从专门为学生开发的仿真教学系统的使用中可以得出结论:在上述教学手段的基础上,可再开发一些辅助教学工具,如点名系统、速度测试系统、习题自测系统、仿真系统等。另外,还可以增加一些视频案例以增强学生的认知和提升学生的兴趣[5]。4.3多种考核方式提供多种考核方式,侧重考查学生的动手操作能力、创新思维能力。鼓励学生自主设计程序,对于好的程序作为优秀作品在全班展示,并为下一届学生留存[6],提供更多学习经验。

5结语

计算机程序设计范文2

关键词:高职 程序设计 教学 探索

中图分类号:G633.3 文献标识码:A 文章编号:1672-3791(2012)04(c)-0200-01

计算机程序设计一直是高职院校比较难学难教的课程,其抽象的语法结构、费解的编程思想等让很多学生失去了学习的兴致和主动性,为提高教学效率,本文从高职计算机程序设计存在的一些问题着手,对优化计算机程序设计教学进行了一定探索。

1 计算机程序设计教学中存在的问题

1.1 学生基础不同,学习信心不高

由于课程学习的特点,对于逻辑思维能力和数学基础要求较高,高职学生很多数学基础比较薄弱,逻辑思维能力各不相同,所以很多学生学习程序设计过程中会显示信心不足,更甚至有些学生对计算机程序设计还产生一种恐惧感,自己给自己设置了门槛。

1.2 教材不适应高职学生的学习要求

如今高职教材普遍存在应用技能偏轻、内容陈旧等问题,不能很好的体现高职教育的实用性,因为高职培养的是技术应用型人才,从而不能达到要求,使得培养出来的高职学生不具有自己的特色。

1.3 教学与考核方式比较单一

计算机程序设计的教学一般采用教师讲授和学生上机操作的形式,学生在上机操作中一般只是对程序进行调试,调试成功的话就算完成了任务,虽说上机学生有了实践的过程,但是此过程仅仅使得学生掌握了程序设计的语法和调试的方法,但是不能培养学生利用程序审计分析解决实际问题的能力。考核形式一般以“限时上机解题+闭卷”为主,随着现代技术的发展,程序设计所要求的分析问题、处理信息、利用合适工具等能力根本无法在这样的考核中体现,这种考核方式很难考核学生的实际综合能力。

2 关于计算机程序设计教学的几点探索

针对上面提出目前存在的几点问题,为优化计算机程序设计教学,达到良好的教学效果,笔者通过几年来的教学经历,主要从以下几个方面进行了探索。

2.1 完善课程教学大纲及标准,使其内容适应高职人才培养要求

高职教育必须体现是以培养高技术应用型人才为目的的,和普通本科教育不同,而应该根据区域经济发展和学生就业情况以及各个学校自身的情况来确定教学内容,加强教学的针对性和实用性。可以从几点考虑:(1)选取经典传统或联系实际的程序设计案例分解组织基础知识内容。(2)选择一个现实中规模比较大,比较具有代表性的,以及工程实用较高的案例,即一个整体项目贯彻始终,案例教学与项目教学相结合。(3)教学过程将软件工程的思想贯穿到课堂中,俗话说“授人以鱼不如授人以渔”,在学习程序设计中也要掌握软件工程的思想,为今后能胜任程序开发做好充分的准备。

2.2 强调动手的重要性,着力提升学生自主学习的意识和能力

程序设计教学应以培养学生的学习能力和编程能力为主,一开始就要给学生强调不动手编程是学不了编程的,而在学生动手的过程中,教师起着关键性的引导作用。为切实有效的发挥老师的引导作用,可从以下三个方面着手:(1)课前,通过设计联系实际的教学案例调动学生动手的兴趣。(2)课中,通过提出问题引导学生去动手解决问题。要尽可能多地为学生创造发现问题的机会,通过借助问题引导学生探究问题背后隐藏的知识、技能,强调问题解决中知识运用与获得的过程性。使学生在实际操作中遇到困难时,学会主动从书本、同学、老师以及网络等处去寻找支撑知识或解决问题的方法,培养和提高学生自主学习的能力。(3)课后,通过辅以一些强制性措施,比如练习检查、平时练习记录考核成绩等督促学生动手。

2.3 教师在课堂教学的演示中尽可能多的采用现场编程,发挥教师示范的最大作用

在课堂教学的演示中,将以往纯粹的演示已经准备好了的代码转变为现场编程,现场编程有其不可忽视的作用。其一,能在学生面前体现老师对知识的熟悉程度,老师的熟练操作能带给学生对老师的信任,增强他们对学习的信心。其二,能增强课堂互动,在敲代码的同时边敲边讲解,对某些应用到的知识点设置适当的提问,引导学生共同思考。其三,将对编程环境的有效利用带给学生,比如开发环境中的智能提示,变量值的跟踪,以及自己编程过程中积累到的排查错误的经验等。其四,将规范操作带给学生,比如良好的编程风格,一些约定俗成的规范等。现场编程能更方便的将学生引入案例现场,可以更好的帮助学生清晰的理解知识在实际中的应用,使学生能够更容易的将知识应用于实际。

当然,为了将现场编程融入课堂,发挥其作用的同时也要使预定的授课进度得以顺利进行,这就要求我们教师在备课时做足准备。但要想从根本上提高自身编写代码的能力与熟练程度,随时随地真真正正的给学生以示范以及有效的指导,只能靠不断丰富和积累自己的项目实践经验。这对作为教师的我们也是一个要求与促进。

2.4 灵活设置考核方式,检测学习的同时考出水平

考核的目的不能单单只是用来检测学生学习的情况,更应该成为学生认识自己提高自己的一个过程,同时也成为强化教学的一个有力环节。对于象程序设计这类注重实践与培养开发技能的课程,“限时上机解题+闭卷”这类型的考核方式严重束缚了学生的真实发挥,无法让学生更好的认识自己、战胜自己。笔者认为程序设计课程的考核应该给予学生足够的时间和开放的空间。因为在这个互联网时代,学会搜索、筛选、理解和转化海量的信息也是一种非常重要的能力,应该借助考核让这种能力更好的得到提升与发挥。为此,教师应该改变传统的考核方式,灵活多变,比如采用案例设计与答案的形式,精心设计考核案例选题,给学生时间去思考,去查阅相关信息,包括资源丰富的网络,当然也要确保学生在网上搜索到的只能有类似的题,而不会出现环境与要求完全相同的题,如此学生也必须理解找到的资料并加以转化才能用来解答自己的选题。

程序设计是一门比较难学难教的课程,但学习这类课程本身能很好地培养学生的逻辑思维能力、自主学习能力和实践能力,这同当代教育的基本理念目标是一致的。因此,如何推进这些能力的培养,上好这一门课程,有待我们不断的探索与努力。

参考文献

计算机程序设计范文3

关键词:翻转课堂;程序设计;传统教学;教学环境;应用

中图分类号:G642 文献标识码:A 文章编号:1009-3044(2016)19-0084-02

翻转课堂是在充分了解与掌握教育部信息化教学改革目标的基础上创建的一种新型教学模式,其重要性不容忽视。与传统教学模式相比,翻转课堂教学模式有了较大的改变,其旨在强调学生的主体地位。计算机程序设计课程是每个本专科学生所需要必修的课程,其中专业学生则需要进行更深入的探索与研究,非专业学生只需参与计算机等级考试即可,但同时也需要掌握与理解一门基础语言编程方式。一般而言,语言编程课对学生来说是较为困难的一门课程,在学习过程中存在较大难度,所以部分学生缺乏学习兴趣,甚至部分学生都直接放弃这门课程。但翻转课堂教学模式在一定程度上提升了学生的学习积极性、开发了学生的思维、增强了学生的自信心、提升了教学质量等,但在具体教学过程中还存在较多问题,因此翻转课堂在计算机程序设计课程中的合理应用尤为重要。

1 计算机程序设计课程教学现状

1.1 缺乏合理的课程授课规划设置

通常,计算机程序设计课堂开设于学生进校后的第一学期,主要原因在于大部分省份在中学阶段就已经开设了相应的计算机基础知识与简单程序设计课程。然而在具体教学过程中,大部分学生在中学阶段根本没有掌握牢固的基础知识,学校开设的这些基础课程并没有实质意义。加之学生刚走进大学校园,对大学环境与大学生活都充满着好奇与幻想,且大部分学生还未适应大学的学习模式,盲目延续中学的学习习惯,对计算机的了解与认识也较浅,即他们所掌握的计算机知识主要包括聊天与浏览网页等,在没有充足计算机基础知识的基础上学习计算机程序设计课程,无疑增加了学生的学习难度,及打击了学生的学习信心。总而言之,计算机程序设计课程授课规划没有切实考虑到学生学习的实际状况。

1.2 缺乏科学有效的教学方式

与中学相关课程相比,程序设计语言具有较大的差异性,如VC、VF等知识点,中学学习的知识结构与语言设计课程的合理贯串存在较大的难度,加之教师在制定教学方式时通常过分注重基础概念与语法规则的讲解,没有考虑到学生分析与处理问题能力的培养,及学生思维的开发,从而导致学生稀里糊涂的学完这门语言,并没有真正掌握学习内容。因此,大部分学生逐渐产生叛逆心理,甚至是丧失学习计算机程序设计课程的信心,而且教师教的也十分累。

1.3 缺乏宽松的学习环境

计算机程序设计课程具有一定的难度,大部分学生都表示:上课同不懂教师所讲内容、课后自己无法自行复习巩固、请教教师又缺乏合适的机会与平台、标记出不懂的内容留着下节课向教师请教等,虽然标记出不懂的内容留着下节课向教师请教的方式在一定程度上可以解决部分问题,但同时也积留了大量新课问题。长此以往,程序设计课程不仅教学质量差而且耗时较多。

2 翻转课堂在计算机程序设计课程中应用的必要性

与传统教学模式相比,翻转课堂教学模式具有较大的变化,传统教学模式旨在强调课上四十五分钟的教学成效,教师则需要最大限度地利用课堂时间竭尽全力的解决所有问题,然而课时少内容多是计算机程序设计课程存在的普遍现象。传统课堂教学模式,教师以高高在上的教育者身份自居,盲目灌输学生相应的语法规则与基础概念,学生则被动学习,盲目在下面抄写满黑板的规则与概念,没有多余的时间思考、理解,及合理应用。这样的教学模式无疑增加了学生的学习难度,加之教师在学生没有完全理解与掌握的情况下继续灌输新的知识与内容,所以导致计算机程序设计课堂呈现出死气沉沉的气氛。

而翻转课堂教学模式的出现刚好缓解了这种死气沉沉的学习环境,课堂环境逐渐自由灵活化,但该模式的实行需要网络与空间平台的支持。社会与现代教育技术的快速发展,使得各个高校都创建了校园网,一般口常教学是没有问题的。而且大部分高校都创建了图书馆与电子阅览室,也就是说学生不仅可以视自己的手机、电脑与iPad为终端设备连接网络,而且利用视图书馆与电子阅览室为终端设备连接网络,加之现代世界大学城空间平台也提供了广阔、良好的平台,所以这些都为翻转课堂模式的实行奠定了良好的基础。

翻转课堂教学模式是:教师以空间上传的方式将自己的视频与课件分享给学生,积极引导学生进行课前预习,即在实际课堂教学前认真观看视频、理解视频内容与完成课前作用,从而为课堂学习奠定良好的基础,并引导学生将自己无法理解的问题进行重点标记,以便课上解答。实际课堂教学过程中,学生将自己标记的难题向教师提问,教师则帮助学生解开心中疑惑,课堂时间不再紧张,学生不仅对课堂教学有了一定的信心,而且对课堂教学有了基本的了解,提升了学生的学习兴趣。当然,教师除了需要帮助学生解开心中疑惑,还需要结合教学的实际情况设计相应的任务与问题,鼓励与引导学生进行小组合作与讨论,这样的方式既促进了学生之间的友谊、提升了学生的人际交往能力又增强了课堂互动氛围、创建了愉悦的学习环境。课后,部分学生肯定还会预留一些不懂的问题,这时学生则课堂利用网络与平台空间向教师请教,且教师能够及时准确的在空间给予解答。因此,翻转课堂教学模式增强了空间与实践的联系,拓展了学习环境与学习领域,真正做到了学生随时随地学习,教师也能及时准确的了解与掌握学生的学习情况,从而更好地把握教学方式,真正促进所有学生共同进步。

3 翻转课堂在计算机程序设计课程中的应用

与其他课程相比,计算机程序设计课程较繁杂与空洞,具有一定的难度,学生在学习语法结构时无法承受。然而翻转课堂教学模式旨在强调完转变繁杂与空间的课堂,取而代之的是生动化的课程,并创建和谐的师生相处模式,增强师生、生生之间的沟通与互动。例如,在学习VF程序设计中的循环结构时,学生难以掌握与理解的问题主要包括:如何在理解与熟知简明扼要语法规则的基础上实现单循环、如何依据单循环解决带条件的循环、如何判断何时使用多循环等问题。这些问题都是课堂教学中普遍存在的难点。

翻转课堂教学模式的合理应用,首先教学需要以空间上传的方式向学生分享自己用心制作的动态课件,教育与引导学生自行学习与掌握循环语句的语法规则,生动形象的视频与课件可以帮助学生产生初步的概念。在学生观看课件的时候教师需要有目的有针对的设计相应的问题,让学生在观看完后进行解答,以便及时巩固知识点。其次教师需要及时通过空间了解与掌握学生课前习题完成的实际情况,做到对学生的学习情况有基本的了解,处理起来也有一定的把握。最后教师需要在课堂教学过程中为学生解答心中的疑惑,及归纳整合学生课前预习的实际情况,在此基础上确定任务目标,如告知学生带条件的多循环通常在哪些类型题目上出现的几率较高,及解决方式。选取一个类似案例,引导学生进行分小组合作与讨论,增加学生之间的沟通,让学生先自己完成,在完成过程中遇到不懂的地位教学需要及时给予帮助与解答。这样的学习方式不仅开发了学生的思维、提升了学生解决问题的能力而且营造了良好的学习氛围,而且在课堂上就能完成本节基本的重难点,这无疑减轻了学生课后的压力,即学生便可以轻松地完成课后作业,以及通过课件与视频预习下一个知识点。

4 结束语

综上所述,翻转课堂教学模式既是计算机程序设计课堂教学的正确方向,又对学生学习起着积极促进作用,即提升了学生的学习热情、培养了学生自主学习意识、发挥了学生的学习主体地位等,教师不再是高高在上的教育者,而是以引导者身份辅助学生学习。这种创新型教学模式是一个循序渐进的过程,且计算机课程设计课程教学过程中存在的问题不容忽视,因此结合学生学习的实际情况合理应用翻转课堂教学模式至关重要。

参考文献:

计算机程序设计范文4

摘要:“计算机程序设计语言”课程是计算机科学与技术学科核心的课程之一,极大地影响着学生对计算机领域的理解和兴趣。本文针对教学过程中存在的问题,提出了层次化教学目标思想。以面向对象语言C++为例,介绍基于层次化教学目标体系的具体思想和内容,并提出与之相适用的课程及实验设计,达到优化教学方法,提高教学质量的目的。

关键词:计算机程序设计语言;层次化教学;C++

中图分类号:G642

文献标识码:A

1“计算机程序设计语言”教学现状

“计算机程序设计语言”是普通高校计算机教育的基本专业课程,在计算机领域的各个专业的课程体系中都处于核心的地位。这门课程不仅可使学生获得基本的程序设计能力及锻炼学生的逻辑思维能力,它还极大地影响着学生对计算机领域的兴趣和理解,对引导和培养学生在计算机工程及理论方面的研究兴趣起着先导性和基础性的作用。因此,“计算机程序设计语言”的教学质量成为影响大学本科计算机教学质量和效果的一个关键的因素。

影响课程教学质量的主要三个因素为教学内容、教学方法和实验设计。当前,大部分教师受传统教学模式的影响,教学的重点都放在程序语言的基本语法的讲授,课堂所设计的程序实例大部分围绕语法规则的演示和说明,这种模式同样也影响到实验环节的设计。这种就事论事,形而上学的教学模式具有许多明显的弊端,主要体现在以下几方面:

(1) 不利于培养学生的学习兴趣

许多从事程序设计语言教学的教师(包括笔者)都有这样的感受:每讲授一门新的程序设计语言课,初期学生都抱着积极,对获取知识的极大热情投入课程的学习,但随着教学过程的深入,这种热情往往不能持久。导致这种局面的原因固然有教师本身的教学方法和教学手段的缺陷,但根本原因还是教学内容的设置不科学。在单纯以讲授语法规则这种教学模式下,学生难以保持长久的学习兴趣和动力。

(2) 不利于学生建立综合化,系统化的知识体系

程序设计语言是表达设计者思想和计算机计算逻辑的符号系统,具有多层面、多视角的内涵。要把学生培养为具有高素质的程序设计人员,仅仅熟悉没有精神的符号及符号规则远远不够,这需要学生具备设计高质量程序的综合化的知识体系,而当前的程序设计语言的教学现状并不能满足这种需求。

(3) 不利于培养学生解决实际问题的综合能力及创新意识和思想

当前,素质教育成为各级教育系统,包括高等院校所关注的热点,知识高等院校所关注的“素质”内涵不同。笔者认为高校大学毕业生应具备的素质包括:综合化、系统化的专业知识体系;应有已有的知识体系解决实际问题的能力;具有创新的意识和思想。总体而言,大部分教师对程序设计语言课程所采取的教学不利于这种素质的培养。

针对这种现状,结合我国高等教育发展的现状,本文提出程序设计语言的层次化教学目标的思想,并以面向对象程序语言为例,论述在层次化教学目标驱动下的课程设计。

2层次化的教学目标

各项教学活动有效展开的基本条件是合理的教学目标的确定,但单一的教学目标并不能适用当前中国复杂的高等教育现状。社会经济的快速发展产生了明显的多类型、层次化的人才需求,这种趋势在各类软件公司里表现得尤其明显。为了适用这种人才需求的转变,高等教育领域在这些年相应地发生了巨大的变化,各种类型、各种不同层次的教育机构大量出现,改变了过去高等教育机构单纯负责培养具有从事复杂脑力劳动的高级专业人才的状况。这些变化最终体现为教师的工作,体现为教师针对不同的教学对象所制定的教学目标体系。

当前,由于社会信息化的发展,各类计算机类课程已经渗透到各个学科,例如笔者所在的苏州大学,几乎所有的院系都设置了信息技术类的有关课程,大约超过一半的院系设置了“计算机程序设计语言”的课程,因此“计算机语言设计课程”的教学质量是总体教学质量评估的重要组成部分。笔者多年来一直在苏州大学承担程序设计语言的课程,包括一类本科计算机专业基础课程、二类本科专业基础课和公共基础课程。大量的教学实践表明单一的教学目标不能适用多样化的教学对象、多样化的人才需求和程序设计语言知识逻辑在广度和深度方面所具有的层次化的特点。下面将论述程序设计语言课程的层次化的教学目标体系及各层的具体内涵。

2.1低级目标

该目标要求掌握标准化的程序语言语法体系,以学生掌握基本的标准语法体系为基本要求,并能初步应用语言开发较小型的简单应用程序,具备初步的程序设计能力。低级目标要使得学生对所学知识“知其然”,课程教学内容主要围绕标准的语法规则,课堂和实验环节所选定的程序实例大多围绕着验证和演示语法规则及语法规则之间的联系进行设计。在以低级目标驱动的教学中,因为重在基本知识的传授,因此核心教学内容的选择是第一位的要素。当然每门程序设计语言课程都有其固有的核心内容,例如,在C++语言中,核心的教学内容为:面向对象的概念、继承、多态、模板及异常等,即使如此,还需要根据教学对象,对教学内容和授课方式进行选择和取舍。总的原则是围绕重点概念和知识采取“精讲多练”和“突出重点”的方式进行教学。

2.2中级目标

中级目标则要要求学生围绕目标程序设计语言,具备系统化的程序设计方法和技巧,逐渐使学生“知其所以然”。该层目标不仅要让学生掌握“语法”,还要让学生掌握“语义”;不仅让学生掌握语言本身,还要让学生扩展思维,了解、理解更多的外延的知识;不仅要让学生掌握基本的程序设计方法,要让学生初步掌握系统化的程序设计方法和建立起程序质量的观点。程序设计语言的外延知识涉及计算机专业许多重要的核心课程,包括编译原理、算法分析与设计、计算机组成与结构、离散数学、数据结构和软件工程等。当然,不可能指望通过一门课程的学习,使学生有效地、完整地掌握所有这些知识,只能使与实现中级目标有紧密联系的知识能渗入到重点的知识讲授和实验的安排中。

2.3高级目标

不管是初级目标的“知其然”,还是中级目标的“知其所以然”,都是知识学习,而高级目标阶段的重点是运用知识,体验知识,要求学生具备利用目标程序设计语言解决一定复杂度和规模的实际问题的能力,建立抽象的程序设计思想、方法和质量的观点。高级目标的教学内容的重点在如何在所讲授的语言框架里解决一定规模的应用问题,并从具体的实现里提炼出抽象的设计思想,分析实现的质量,总结好的实现方法和设计思想。

确立了教学目标,下一步的焦点为围绕实现具体的教学目标,制定各教学环节的具体的教学内容和教学手段,主要包括课堂教学环节和上机实践环节。结合笔者的教学实践,下一节将围绕这方面的内容展开论述。

3层次化的目标引导的课程设计

C++语言因其强大的功能及广泛的实用性而日益成为当前高校理工类专业程序设计的主流教学语言,因此本节将以C++为例,讨论层次化教学目标思想如何在教学实践中得到贯彻。C++程序设计语言的教学涉及课堂教学和实践教学两个环节,下面将就这两方面展开论述。

3.1课堂教学

确定目标课程的教学内容是开展有效的课堂教学,取得既定的教学目标的前提和基本要求。针对本文所提出的层次化的教学目标体系的基本内涵,C++程序语言的课堂教学内容在深度和广度上也应该展现出层次化,递进性的特点。

在低级目标中,掌握本程序语言的基本语法体系是最重要的目标,在教学内容的设计上,应确定语言的最核心最重要的语法现象。过程化程序设计向对象化程序设计是C++语言的最重要的特征,因此“对象”和“类”,以及由此产生的“继承”,“封装”,“多态”和“异常” 成为最核心的教学内容。在教学时应集中注意力于这些类对象的关键个性技术,围绕关键技术“精讲多练”,使学生深刻理解面向对象C++的这些关键技术;要有重点,不能面面俱到,有所失,才能有所得。

低级目标是为了使学生掌握知识,使其“知其然”,那么中级目标则要逐渐使受教育者“知其所以然”,教学的重点从对语法的训练转向对语义的理解,包括静态结构语义和程序执行语义。在C++的教学中,以C++对象模型作为教学内容的重点,通过从静态的程序代码结构和运行的程序状态两方面展开课堂教学,这样在知识语言的“所以然”的基础上,学生不仅知道什么是“多态”,并且知识“多态”是怎么实现的;什么是运行时类型检查(RTTI),运行时类型检查能提供什么程序设计策略等;许多的外延知识能沿课堂展开,例如编译原理、算法分析与设计等。由Stanley B. Lippman所著的《Inside The C++ Object Model》为我们设计课程材料提供了方向性的指导。

低级目标和中级目标都是针对知识的学习,而高级目标则针对知识运用,提高运用知识进行设计的能力。此层次涉及知识的学习、理解和综合运用,要在有限的时间内,实现教学目标,在课程教学内容的选取和设计及课时的安排上,具有一定的难度,对教者和学者都具有一定的挑战性。“设计模式”可以成为本层次的基本或延展性的教学内容。设计模式虽然不与具体的设计语言有着必然的、密切的联系,但事实上各种技术性、或纯教学性的书籍中,都把面向对象语言作为实现各种设计思想的不二选择。通过设计模式内容的讲授,可以使得学生对面向对象的基础知识有更深刻的理解,同时增强灵活运用所学知识的能力,体验面向对象程序设计方法学所带来的设计上的“美”,激发学生的创造力。

当然,上面针对课堂教学内容的论述仅仅进行了基本的界定和论述,需要通过下面几方面来贯彻实施,以达到各个层次的教学目标:

(1) 通过教者的努力,设计出丰富的、具体的课程素材;

(2) 针对不同的教学内容,设计多样化的教学手段和方法;

(3) 针对不同的教学内容布置合理的作业和考核方法。

3.2实践教学

在程序设计语言的教学中,课堂教学和上机实践教学是并重的环节,不可偏废,一起决定着教学的质量和教学目标的取得。如何设计安排上机环节通过大量的教学实践,已经总结出了大量的行之有效的方法。下文就实验内容及实验的组织形式进行一些必要的、有益的讨论。

结合课堂内容,以往的实践环节主要由学生编制一些小的程序,进行语法现象的演示及验证。但笔者通过大量的教学实践发现:这种普遍采用的,且行之有效的方法,对于学生巩固知识,提高调试程序的能力和技巧具有显著的效果。但随着教学的深入,这种方法也显示出种种的弊端,例如:学生专著于知识点,必然缺乏对知识的整体把握;学生容不易形成良好的编程习惯等。针对这种情况,笔者在实践的环节中,增加“读程序”的分量。教师提供一些高质量的程序范例让学生进行阅读、理解,并对范例的程序风格和设计方法进行总结比较,以提高学者的综合能力,尤其是到了后期,所提供的范例更具有综合性、全面性和示范性,能极大地提高学生掌握知识的深度和广度,激发他们的学习热情。

在实践人员的组织形式上,一般在程序设计语言的教学中,都是学生独立进行的。在教学实践中,也可引进一些软件开发中的方法,比如采用小组制的形式,根据实践内容的不同,小组或大或小。即使是在低层目标为导向的教学中,也可采用小组的方法进行实践环节的教学,不过此时小组人数不宜过多,最佳数目为二人。采用这样的方法,有以下的益处:

(1) 便于学生进行交流,以达到取长补短的目的;

(2) 提高教学效率,以较少教学活动取得同样甚至更好的效果;

(3) 培养团队合作精神等。

在以中级和高级目标为导向的教学中,实践环节应从语法演示和验证为重点转变为以知识的理解和知识的运用为重点,因此除了结合教学内容设计相应的实践内容外,最显著的特点是增加综合性的项目开发环节,以达到知识的综合掌握和运用。

当前以语法的演示和验证目的实践环节的设计具有大量的教学实践可资借鉴和学习,但针对更高两层教学目标的实践环节则缺乏有效的素材和经验可以利用,需要通过进一步的教学实践活动加以积累和总结。当前的一些做法是借用开发一个具有一定规模的项目来弥补纯语法的演示和验证实践方法的不足。

4结论

本文针对当前在程序设计语言的教学中存在的问题,提出了多层次教学目标的观念,并介绍了各层次目标的具体内容和以此目标为导向的主要的教学环节的设计。各个层次的教学内容和教学方法手段并不是彼此割裂的,如何针对各种不同的教学对象进行合理的课程设计,以提高教学质量有待于进一步的大量的教学实践活动。下一步最主要的工作总结探索各种教学资源以及相应的考核方法,尤其是用于中级目标和高级目标为导向的教学活动。

参考文献:

[1] 吴乃陵. 面向对象C++程序设计教学改革[J]. 电气电子教学学报,2003,25(2):9-11.

[2] 徐宏,聂影,黄征华,等. 计算机程序设计语言的教学探索[J]. 教学研究,2004(2):89-93.

[3] 沈军. 程序设计语言类课程的教学思路研究[J]. 高等工程教育研究,2001(1):80-82.

[4] Stanley B. Lippman. Inside The C++ Object Model [M]. Addison-Wesley Publisher, 1996.

[5] Erich Gamma, Richard Helm, Ralph Johnson ,et al. Design Pattern: Elements of Reusable Object Oriented Software [M]. Addison-Wesley Publisher,1995.

Research on Teaching of Programming Language

CHEN Dong-huo,YAO Wang-shu

(School of Computer Science and Technology, Soochow University, Suzhou 215006, China )

计算机程序设计范文5

【关键词】转换优化 计算机 程序设计

通常在设计程序时,要考虑时间和空间的平衡以追求合理的时间和空间。通过合理的数据存储以及操作,空间复杂度可以有效地降低时间复杂度。单纯的追求时间或者空间之一,则有可能造成无法接受的错误。例如如果时间复杂度过于高,则程序的时间响应速度会非常慢,当输入问题的数据量达到一定规模,程序可能会无限长的运行下去。同样,由于计算机的内存空间是有限的,当空间要求过大时,程序可能会用光所有的内存空间,这样程序会因为空间不足无法继续运行。一下我们以一个简单的实际问题来表述时间和空间的转化, 以及平衡的复杂度安排的重要性。

假设我们有如下问题:输入n个整数(n>1),返回这n个数据是否有重复。

1 首先我们考虑最简单不用临时存储的情况,程序数据如下:

对输入的每一个数据依次执行:

查看每一个其他的数字,对当前数据进行比较:

如果相同,则返回程序结果有重复。

如果不同,则对下一个数字进行分析。

我们对如上的设计进行分析,在最快的情况,前两个数就有重复,那么一次比较就知道有重复。在最坏的情况下,?即n个数字没有重复,对每一个数字,我们都要进行n(实际上是n-1次,我们用n来近似)次比较。所以当不用临时存储总的运算量是n*n次比较。在实际问题中,由于我们不知道问题的情况,无法预测有没有重复或者在哪里重复,所以我们要一直用最坏的情况进行分析。在此问题中时间复杂度是n*n,没有用到辅助空间。

2 程序优化

此程序可以进行优化,对每个数据和其他数据比较时,不用和该数之前的数据比较,因为该次比较已经被执行过了。比如:对1,2,3,这个问题进行比较,首先我们比较1与2,1与3,然后我们开始对第二个数分析,这时不用继续比较2与1,因为1与2已经执行过,只需要比较2与3程序修改

所以修改程序如下:

对输入的每一个数据依次执行:

查看每一个在此数据之后的数字,对当前数据进行比较:

如果相同,则返回程序结果有重复。

如果不同,则对下一个数字进行分析。

我们对如上的设计进行分析,在最坏的情况下,即n个数字没有重复,对第一个数字,我们要进行n(实际上是n-1次,我们用n来近似)次比较,第二个数字n-1次比较,第三个数字n-2次比较……所以当不用临时存储总的运算量是n(n+1)/2次比较,没有用到辅助空间。

最后我们用一个带有临时存储空间的算法:我们把每一个数据存到临时空间里(注:此临时空间能提供非常快的存储和查看操作,忽略存储和查看的操作时间),查看当前数据是否已经在存储空间内,如果有,则返回是,如果没有,则继续下一个数据:

3 创建一个临时的空存储空间

对输入的每一个数据依次执行:

查看存储空间是否有这个数据

如果有,则返回程序结果有重复。

如果没有,则对下一个数字进行分析,并且将当前数据储存到存储空间。

我们对如上的设计进行分析,在最坏的情况下,即n个数字没有重复,对每一个数字,我们都要进行1次查看,所以当使用临时存储总的运算量是n,额外的辅助空间大小也为n。

到此,我们的程序设计完毕,为什么利用辅助存储降低时间复杂度重要呢?我们进行如下分析:

假设有计算机A,每微秒执行一次指令,那么此计算机每秒钟可以执行106次指令。假设程序的输入为10个数,那么三个程序所需要的时间依次为T1=10*10/106=0.0001秒,T2=(10*11/2)/106=0.000055秒,T3=10/106=0.00001。在输入规模不大时候,相差不大。如果输入为10000个数,三个程序所需要的时间为T1=104*104/106=100秒,T2=(10000*10001/2)/106=0.000055=50.005秒,而T3=10000/106=0.01秒。可以计算,当输入为一百万个数字时,第一个程序需要运行27小时,而第三个程序只需要一秒钟!

我们换另外一种分析方法,如果我们有另外一条比较快的电脑B,每秒钟可以进行109运算,则B电脑比A电脑快1000倍!我们用慢电脑A处理有额外空间的程序,快电脑B处理没有额外存储的第一个程序,那么当输入为10万个整数时,A电脑需要0.1秒处理该问题,B电脑需要10秒处理该问题!A电脑在本身速度比B小1000倍的时候,计算速度反而可以可以比B快100倍。可见一个优化的算法可以迅速的提高电脑响应速度,而不需要花费太多成本在提高电脑本身的速率上面。

可以看出,当问题规模变大时,额外的辅助存储可以大规模的降低时间复杂度。有些读者可能会质疑额外的存储可能会很大,但是以这个问题为例,最差的情况下需要10000个整数的存储空间。一个整数占4B,10000个整数只需要40KB的存储空间,小于一张小图片的大小,几乎相当于一个纯文本文件的大小。由此可见适当的利用空间存储可以有效的减少额外存储。

在实际应用中,遇到的问题会比本例子更复杂,而且数据规模会更大。但是,合理的利用空间和时间,会有效地提高程序效率,因此我们在设计程序时,要合理的利用空间来降低时间复杂度。

计算机程序设计范文6

关键词:计算机程序设计;教学评价平台;程序自动化批改

文章编号:1672-5913(2013)18-0091-04

中图分类号:G642

0 引言

计算机程序设计课程是高等院校计算机专业的必修课程,主要讲授C、C++、Java等程序设计语言。作为实践性要求很高的一类课程,计算机程序设计课程教学评价的核心内容是对学生实际编程能力的评价。各类纸质考试成绩并不能全面反映教学效果,而且要想从中获得有用的信息用于相关教学评价工作,必然会花费大量的时间和精力。随着教学改革的不断深入,目前逐渐兴起利用计算机网络平台开展大量的考试工作,给课程教学评价工作带来新的思路和方法。但是由于缺乏对学生实际编程能力的自动化评价方法,已有的网络考试平台在对学生编写的计算机程序进行评价时,仍是基于人工方式,并未从真正意义上减少评价工作所花费的时间和精力,这使得运用已有的网络考试平台进行计算机程序设计课程教学评价时,具有一定的局限性。如何实现对学生编程能力的自动化评价方法,搭建基于网络考试的计算机程序设计课程自动化教学评价平台,强化对学生实际编程能力的考察,是我们改革探索的焦点和核心。

1 指导思想

1.1 强化全过程考核

传统的计算机程序设计课程实践教学环节,对学生的学习过程管理不够充分,往往只考核最终的实验报告和程序代码,对程序的实现过程缺乏评价管理。这种终结式评价存在很多弊端。对于学生来说,这种评价方式容易导致学生只重视最终程序的实现,而忽视对编程过程的经验积累,学生难以及时发现编程过程中的问题所在,学习缺少主动性。同时,终结式评价也容易引起抄袭现象。对于教师来说,这种评价方式使教师在教学过程中难以准确把握学生对计算机程序设计的掌握程度及教学中存在的问题,也无法根据学生的学习状态及时有效地调整教学策略。

1967年美国芝加哥大学教授Michael Scriven提出形成性评价(Formative Assessment),强调教师在教学过程中利用多种机会和手段评估学生的学习状况,以获得有益的教学信息指导教学,促进教学健康发展,最终促进学生学习进步。与终结式评价不同,形成性评价关注学生的学习过程,给予学生获得多次评价的机会,有助于改善学生的焦虑情绪,增强其学习自信心,激发其学习积极性并保持学习的持久性。形成性评价既是教师获取教学反馈信息、改进教学管理、保证教学质量的重要依据,又是学生调整学习策略、改进学习方法、提高学习效率的有效手段。

借鉴形成性评价方法,在计算机程序设计课程教学评价中,强化全过程考核。从课程教学准备阶段,到课程教学执行阶段,管理学生作业、项目实践过程等关键教学活动,实现教师与学生跨时间地点的交流,记录教师在教学和交流活动中的情况,为教学评价提供参考依据。将学生的成绩评定渗透到各个教学环节和教学活动中,对学生各个学习环节的完成程度和情况进行评价,以客观评价学生对知识的掌握和应用情况,促使学生真正重视平常的学习,使教学与评价融为一体,做到在评价中学习,在学习中评价。

1.2 评价指标多元化

传统的计算机程序设计课程教学评价以教师对学生的期末试卷和实验程序评价为主,多是对学生理论知识掌握程度和程序实现功能完整性方面的考核,评价指标单一,主观性大,不足以全面评价学生的学习主动性、学习效果和实际编程能力。客观全面的综合评价可以激发学生的学习积极性,增强学生编程动手实践的主动性,从而保证教学质量的提高。同时,自动化的评价手段将教师从繁琐的评价事务中解脱出来,从而将更多的精力投入充实教学内容和设计任务中,更好地引导学生学习。

2 教学评价平台设计

计算机程序设计课程自动化教学评价平台的总体目标是构建基于B/S架构的计算机程序设计实践平台,开展学生编程能力综合评价体系的研究和探讨。

2.1 系统功能模块

计算机程序设计课程自动化教学评价平台功能设计见表1。教学评价平台的主要功能模块包括:基础数据管理、课程资源展示与学习、实践准备、实践执行、综合评价、实践情况统计查询和师生互动。

功能设计满足如下要求:

(1)将计算机程序设计课程的习题、课件、相关技术资料等资源网络化,面向学生开放,方便学生在线学习。

(2)平台以自动化评价为主、人工评价为辅的方式评价学生所完成的程序,使学生能够自主进行编程练习。

(3)平台随时记录学生的学习过程(在线学习时间、编写程序耗时、错误程序提交次数、程序错误原因、互动情况等),同时根据学生学习状况,为学生提供后续学习建议等。

2.2 系统流程

计算机程序设计课程自动化教学评价平台基于B/S架构,通过浏览器向学生提供自主学习、资源浏览、程序自动评价等功能,向教师提供资源管理以及学生上机实践的全程掌控服务。系统总体流程如图1所示。

程序自动批改是系统的核心功能。本文借鉴软件黑盒测试方法,通过编译、运行、运行结果比对等步骤实现程序的自动批改,程序自动批改流程如图2所示。其中,对于不同的程序语言选用不同的编译程序进行编译操作,例如,Java语言选用iavac.exe,C/C++语言可选用VC的cl.exe。当程序不能成功编译,或者程序不能运行,或者程序的运行结果与测试用例的预期结果不符时,均判断为错误程序,并输出相应的错误原因。

2.3 教学评价指标

为了尽可能全面客观地评价学生的编程能力和学习效果,笔者从学习态度、编程正确率、编程思想运用程度等方面制订了相应指标,具体内容见表2。其中学习态度方面包括出勤率、网络资源自主学习情况、师生互动情况、编程实践完成情况等指标,反映学生的学习积极性;编程正确率方面包括编写程序耗时、错误程序提交次数、常见错误原因等指标,反映学生能否在较短时间里编写出符合要求的程序,相关指标主要由程序自动批改功能完成;编程思想运用程度则主要反映程序的质量,程序是否具有模块化、可扩展、可移植等优点,主要由人工评价的方式进行,包括学生自我评价、学生互评、教师评价等,通过人工阅读代码的方式分析总结出程序代码的优点。对于上述3方面的指标,表2给出了相应的权重,以计算学生的最终成绩。当然,指标权重的确立可依据自身教学特点和教学大纲的具体要求,在执行时通过系统进行动态调整。

2.4 系统实现

计算机程序设计课程自动化教学评价平台采用Java EE技术开发,开发工具使用Eclipse 3.4,应用服务器使用Tomcat 7.0,数据库服务器使用SQL Server 2005。

3 实施效果

计算机程序设计课程自动化教学评价平台在重庆大学计算机学院的面向对象程序设计与C++课程中进行试运行。学生可以通过网络利用本系统进行自主学习和编程实践练习。系统自动批改学生程序,全程记录学生学习和编程的实践情况。如果在学习中遇到疑难问题,可以利用网上留言、主题讨论、Q&A等方式进行师生在线交流。通过教学评价平台的使用,让学生的编程练习不再局限于实验课时间,学生在课外时间也能自由地进行编程练习并及时获得教学评价平台对程序的批改结果。同时,通过将教学评价平台统计出的学生学习时长、提问次数、实践项目完成个数等数据作为课程成绩的组成部分,促使学生重视编程实践练习,学生平均在线编程练习时间得到了提高。目前,本系统使用情况正常,获得学生好评。

4 结语

计算机程序设计是计算机本科专业的重要教学内容之一。为了更好地强化学生的实际编程能力,我们在计算机程序设计课程中需要不断改进教学方式,完善评价方法。教学实践表明,借助程序自动批改技术和网络考试平台,为进一步完善计算机程序设计课程教学评价提供了一种有效的解决思路,能够充分调动学生自主学习的积极性,强化培养学生实际编程能力。在后续研究中,还需通过更多学生的使用验证,对评价内容、评价方式、评价主体进行扩展,进一步科学化完善评价指标体系,并随着技术发展,继续开展平台建设,使其功能日趋完善。

参考文献:

[1]周肆清,杨莉军,李利明,“数据库应用基础”开放式实验平台与实验过程综合自动评价系统研究[J],计算机教育,2011(22):104-108