计算机编程自学教程十篇

发布时间:2024-04-25 23:54:26

计算机编程自学教程篇1

摘要:在分析现有问题的基础上,提出一种科学设置课程体系、构建良好实践环境、改进教学方法手段的三位一体的建设思路,同时给出具体建议对策,目的是聚焦实战化,提高军校学员的计算机编程能力。

关键词:实战化教学;编程能力;信息素养

0引言

为推进军事院校教育向实战聚焦、向部队靠拢,培养能打仗、打胜仗的高素质新型军事人才,当前各个军事院校都在着手实施实战化教学。计算机技术作为现代信息化的重要技术手段,已广泛应用到武器b备、战略决策、远程控制、作战指挥、后勤保障等各个环节。军事领域对计算机编程方面的需求越来越高,聚焦实战化教学,提高军校学员计算机软件编程能力,让学员掌握正确的程序设计方法和思路,促进学员利用计算机解决专业领域的问题及日常事务问题,对于培养学员的自主能力、探索能力、合作能力、问题分析能力和动手能力都是非常重要的。

1计算机软件编程的地位与作用

1.1计算机软件编程是培养学员信息素养的重要手段

随着我军信息化建设的不断深入,以利用计算机获取、整合、运用信息等能力为主的信息素养,是新世纪新阶段对军人素质提出的基本要求。加强军校学员的信息素养教育是军队院校人才培养的重要任务,提高学员的计算机软件编程能力,使学员掌握程序设计的基本方法和编程技能,学习和理解计算机处理问题的思想方法,对于培养学员利用计算机解决实际问题的能力非常重要,这种能力正是军校学员应该具备的信息素养。计算机软件编程是培养学员信息素养的重要手段。

1.2计算机软件编程是培养学员自主学习和协作学习能力的重要方法

计算机软件编程是一个系统工程,不但要突出学员个体的学识和能力,而且要发挥学员群体的协助作用,即我们通常所说的集思广益、相得益彰。在实战化人才培养中,计算机编程类课程力求倡导将协作学习和自主学习相结合,大力营造相互学习和相互帮助的环境氛围,提供各种学习资源,这样不但能使学员学到计算机的编程知识和技能,而且也能够学到更重要的信息处理能力;在培养学员间良好人际关系的同时,增强协作能力和学习能力,为学员的后继发展和部队建设打下良好的基础[1]。

2计算机软件编程教学与实战化要求存在差距

当前军校学员计算机软件编程能力的现状并不乐观,尤其是计算机软件编程教学的课程设置、实践保障、教学方法等方面与实战化要求还存在较大差距。

2.1课程设置存在差距

目前空军预警学院计算机课程设置主要停留在大学计算机基础、计算机软件技术基础、计算机硬件技术基础等计算机基础课程层面,缺乏能够提升学员计算机软件编程能力方面的课程。目前我们仅开设一门与软件编程相关的课程――计算机软件技术基础,而这门课程的内容又主要以C语言为主,C语言主要是培养学员的编程感觉、习惯和思维,在实践运用中并不是很多,因此仅仅依靠计算机软件技术基础这一门课程提高学员的计算机软件编程能力是很困难的[2]。

2.2教学实践保障存在差距

实践环节是学员将所学计算机软件编程知识转化成动手能力和水平的必然途径,与其他专业课程相比,具有特殊性和不可替代性。计算机软件编程的实践表现为两个方面,一是课堂实践,另一个是课余实践;其中,课堂实践具有强制性,课余实践则强调自觉性。

在课堂实践方面,由于空军预警学院计算机课程的课时量较少、课程内容较多,直接导致在教学中,计算机基础理论知识的内容占据大多数的学时,而学员上机实践环节难以给予保障。由于空军预警学院学员的学位证是与计算机等级考试挂钩的,因此学员希望通过计算机软件技术基础课程的学习能够对通过计算机二级考试有所帮助,然而这门课程的理论课时只有20学时,实践课时也仅有20学时,教员要想在有限的课时里将计算机等级考试C语言相关的知识全部讲完,同时又想通过实践环节提高学员的计算机软件编程能力,这显然难以达到。在课余实践方面,由于计算机软件编程不是军校学员的专业课程内容,大多数学员对学习软件编程处于一种应付的心态,认为只要能够通过计算机等级考试就满足了,因此大多数学员不能够自觉地利用课余时间进行上机实践,难以在掌握正确的学习方法和刻苦钻研学问上下工夫,而是用死记硬背的方式学习程序设计,学员的学习效果不令人满意。课堂实践课时不足,课余实践又无法保障,必然会影响学员计算机软件编程能力的提升。

2.3教学方法手段存在差距

目前空军预警学院程序设计类课程的教学多是理论学习为主、实践上机为辅,以语法知识为主、程序开发为辅;理论讲授与上机实践往往不在同一个教室,而是分开授课,理论课枯燥无趣,实践课又由于学员人数太多而难于管理,导致学员的学习兴趣不高,学习效果不佳,学习计算机软件编程只为应对考试,实际动手编程时却不知从何下手。

3聚焦实战化教学,提高军校学员计算机软件编程能力的总体设想

为了紧跟当前计算机技术发展的步伐和适应军队信息化发展的需要,只有立足当前、着眼未来,针对学科的发展特点,追踪学科前沿,抓好学科建设,聚焦实战化教学,科学设置课程体系,强化实践环境,改进教学方法,才能培养出高素质的信息化人才,提高学员的计算机软件编程能力。提高学员计算机软件编程能力的总体设想如图1所示。

3.1科学设置课程体系

实战化教学要求在课程设置上统筹兼顾,建立综合性强、覆盖面宽、基础知识与专业知识相结合的课程体系。为培养军校学员的计算机软件编程能力,我们必须把军校学员的计算机软件编程能力培养看作一项系统工程,围绕提高其计算机软件编程能力这个具体目标确定科学合理的课程体系。

第一,在保留现有计算机文化基础、计算机软件技术基础、计算机硬件技术基础三大基础性课程的同时,还应增设一些有利于提高学员计算机软件编程能力的课程,如数据结构、数据库、Java程序设计、C#程序设计、网站制作、信息管理系统设计与开发等。

第二,对于编程能力的培养,要把握由浅入深、循序渐进的原则。教员应先通过计算机软件技术基础课程的学习,使学员掌握基础编程语言知识和编程思想,然后再通过数据库技术基础、C#程序设计等课程的学习,使学员再进一步学习软件开发中常用的高级编程语言,最后通过网站制作、信息管理系统设计与开发等课程的学习,使学员能应用编程语言的知识和思想,进而达到培养学员计算机软件编程能力的目的。

3.2构建良好的实践环境

由于学科专业教学计划等原因的限制,针对军校学员开设的计算机编程课程不可能太多,课时也很难满足教学内容的客观要求,因此教员在培养军校学员计算机编程能力时,就要注重营造好计算机专项教学以外的实践环境,提高学员学习的主动性和积极性。从教学的现实情况看,构建良好的实践环境关键是要实现“两个强化”[3]。

3.2.1强化课内实践环境的营造

教员在培养过程中,要突破计算机基础课程课时量少的局限,增设与计算机软件编程相关的课程,将计算机编程能力的培养融合到其他与计算机软件编程相关的课程当中。教员在施教时,可将本学科计算机编程技术与学科内容紧密结合,促使学员能自主利用计算机软件编程去思考问题、分析问题和解决问题,提高计算机软件编程能力,从而延长计算机编程能力培养的周期。

3.2.2强化课外实践的引导

教员要综合利用校园网络资源与学t活动组织,组织学员开展计算机软件编程能力的交流、评比、竞赛等系列活动,通过丰富的课外活动增强学员对计算机软件编程的兴趣和自觉性,进而引导学员自主提高计算机软件编程能力[4]。

3.3改进教学手段

先进的教学手段是提高学员计算机软件编程能力的重要途径。

3.3.1合理安排教学场所

以计算机软件技术基础课程为例,以前20学时的理论课在教室讲授,20学时实践课在计算机机房授课,为了方便学员更好地理解理论知识,我们建议把教学场所全部安排到机房;这样既可以防止理论教学和实际操作的记忆断档,又有利于学员在理论转化成实践的过程中,对出现的问题现场提出并现场解决,提高学习的成效[5]。

3.3.2采用小班化授课

把100多人的大班拆分成20~30人的小班,既方便机房管理,又能够提高教学效率,改善教学效果。

3.3.3实施“理实一体”教学方法

根据实战化教学的要求,教员应组织实战化教学,探索新教学方法。近年来,我们在日常教学中,通过不断探索研究,将“理实一体”教学方法应用在教学过程中,取得了很好的效果。所谓“理实一体”教学模式,就是在教学过程中实时根据课程进度和课程内容,将理论讲授与实践环节合为一体,如图2所示。

以计算机软件技术基础课程为例,具体做法总结如下:

在该课程的初级阶段,因为概念性内容居多,程序的语法知识还没有讲解,学员还不能独立编写完整的程序,所以这个阶段可以采用先理论后实践的方法。例如,针对C语言数据类型的教学内容,可以先精讲数据类型及每种数据类型的特点,然后讲解典型的具有代表性的例题,再上机利用程序填空的形式,使学员对理论知识进行验证性地学习和掌握。

到了课程的中级阶段,由于学员对程序的基本结构有一定了解,开始学习语法知识时,就可以采用实践―理论―再实践的方式授课。例如,学习C语言选择、循环程序设计时,可以让学员先上机依照案例输入简单程序并运行查看结果,使学员对该程序的执行过程有总体了解并对如何得到这样的结果产生一定兴趣,然后再进行语法知识的详细讲解,理论讲授完后,再要求学员上机编写相关的小程序,进一步加深学员对语法知识的理解。

当课程进入最后阶段,课程内容基本结束时,教员可以采用先实践后理论的方式。先给学员布置一个具体的任务,提出任务目的和内容,要求学员上机编程、调试并运行,独立完成任务;然后再组织学员讨论,相互进行交流和学习并从中总结提炼出理论精髓,通过这种方式调动学员主动参与学习的积极性,进一步培养学员的独立动手能力。

4结语

要聚焦实战化教学,提高学员计算机软件编程能力,是一项系统性、改革性的工作,任重而道远,还需要不断努力,加紧研究,深入探索。

第一作者简介:程敏,女,讲师,研究方向为计算机基础教育,。

参考文献:

[1]郝红卫,高桂清,张甲文.论加强军校学员信息素质教育[J].二炮院校教育,2007(1):7-9.

[2]唐晓,李强,陈新,等.基于mooC平台的C语言课程教学模式研究[J].空军预警学院学报,2015(3):227-229.

[3]朱利娜.注重加强非计算机专业大学生计算机应用能力的培养[J].高等教育研究学报,2007(2):60-61.

计算机编程自学教程篇2

[关键词]中职计算机教学《C语言程序设计》改革

一、注重课程改革的探索,提高“C语言程序设计”的教学效率

中职计算机专业的学生,今后将从事计算机应用和软件开发的实际工作。基于这点,我们就要制定详细的教学计划和改革方案,逐步提高每个学生对于研究工作的初步能力。《C语言程序设计》是现今计算机科学与技术相关专业的核心课程和主干课程。《C语言程序设计》涉及到诸多的理论基础和教学内容,教师要制定详细的课堂教学规则,从C语言的教学理念出发并明确课程项目的改革目标。目前,C语言教学分为两部分的内容,即理论课堂和上机实验。两个都是非常重要的过程,教师要给予高度重视。首先,在理论课堂上,我们主要讲解一些C语言的基础知识,比如“#in-cludemath.”表示在程序中会引入数学函数;当运行错误时在软件页面的下方会出现“error”的标识;“#includestring.h”会在主函数中引入字符类型等这些都是C语言的基础编程知识,一定要学生掌握透彻并合理运用。其次就是上机实验过程。实验前要让学生对预习内容做简单总结性的回顾,同时也可以让学生之间相互探讨交流,以问答的形式复习C语言的相关知识。教师自己也可以进行编程练习,把作品的灵魂和特点充分展示给学生,带领他们走向更高级的编程世界。

二、加强计算机课程的教学力度,培养学生的“C语言程序设计”能力

《C语言程序设计》主要通过让学生系统学习C语言的基本知识和编程过程中的基本语法,激发学生的灵动性思维,较好地训练学生解决计算机问题的思维逻辑。计算机课程是当前中职教育中的直供电课程,对学生的思维能力以及编程思路和技巧都有较高的要求。所以我们在设置实验题时还可以故意在程序中再设置一些BUG,让学生自主编译,从编译错误中发现程序语句的问题,和学生共同探讨交流,找到有效的解决方案。只要加强计算机课程的教学力度,学生就能自主培养“C语言程序设计”能力,在日常的学习中学会探索求知、学以致用。接下来,教师就可以把教学重点转向“项目为导向”的组织课堂。在案例分析时,学生的动手编译过程非常重要。我们要给学生重点讲解编写程序的思想和方法,让他们确定整体性的编写程序方案,给学生提供一个轻松、自由的C语言学习环境,然后再引导学生讨论学习。只有这样才能吸引学生的注意力,在每个教学环节都做到错落有致,提高学生程序调试能力。

计算机编程自学教程篇3

论文关键词:编译原理;能力培养;教学

从当前的就业情况看,计算机专业的学生在软硬件知识和应用能力上的优势逐渐弱化,在与具备特定行业、应用领域和专业背景的学生竞争就业时,面临的压力越来越大,而在已就业的学生中又少有人从事编译系统的研究和开发工作。所以,“编译原理”作为计算机科学与技术专业的“经典”核心课程的存在价值受到质疑。其实,本科教育解决的是培养学生基本专业能力、可持续发展能力这些本质性的问题,因此,我们要从如何结合专业课程完成学生专业能力的培养与素质的提高这样的角度来看问题。

在大学里,学习一门课程,不能简单、肤浅地看成是对这门课程所含内容的研究、设计和开发,而是关注是否在有限的时间内最有利于学生专业能力的培养。计算机是一门技术性、工程性和应用性很强的学科,有其自身的基础理论支撑体系。“编译原理”课程本身以计算机专业基础知识为载体,含有问题求解的典型思想、技术和方法,整个课程的内容对培养学生的计算思维,程序设计与实现,算法设计与分析,计算机系统的认识、开发和利用等学科基本能力都非常重要。并且,编译技术在计算机体系结构设计、提高软件开发效率与质量的工具开发等方面有着重要的应用。因此,“编译原理”课程不但有存在的价值,而且对于计算机专业学生的能力培养和素质提高有着极其重要的作用和意义。

作为计算机专业的教育工作者,应该结合当前计算机的发展状况,重新认识“编译原理”课程的重要性,并根据当前的教育和就业形势,积极研究、改进“编译原理”课程的教学和实验方法,提高教学效果和质量。

一、明确“编译原理”课程对学生能力培养和素质提高的重要性

从课程体系总体设计看,“编译原理”课程的主要教学目标之一是使学生在系统的级别上重新认识算法和程序,提升学生的系统能力。它是计算机专业课程中最难学的课程,既涉及形式语言和自动机等抽象理论,又是数据结构、程序设计语言、算法和软件设计等知识的综合体现,有效培养了计算机专业学生应具有的计算思维,算法设计与分析,程序设计与实现(硬件和软件实现),系统的认知、分析、开发与应用等四大基本能力。

计算学科问题求解的基本思路是“问题-形式化描述-计算机化”,以抽象、理论、设计为其学科形态。“编译原理”课程中要求学生掌握的包括程序变换基本概念、问题描述和处理方法(自顶向下、自底向上、逐步求精、递归求解,目标驱动,问题分析、问题的抽象与形式化描述,算法设计与实现,系统构建、模块化)等知识、思想和方法,有利于学生养成“问题、形式化描述、计算机化”问题求解的习惯,实现从“实例计算”到“类计算”和“模型计算”的跨越。这其中既有明确的、便于抽象的问题,又有较成熟的理论,而且在限定规模下又容易实现(设计),涉及的是一个比较适当的抽象层面上的数据变换,所以该课程是计算机专业本科生的重要专业技术基础课程。

二、“编译原理”课程“教”与“学”的新思考

目前,在“编译原理”课程教学中,“教”与“学”两方面的问题都很突出:一些抽象的重要理论使学生学习的畏难情绪严重,加上有些人认为毕业后很少有机会参与设计与实现编译系统,使得该课程的“教”与“学”的热情偏低,而适用于新型体系结构及新一代计算机系统的编译器的需求和大量应用,也给“编译原理”课程内容的充实与更新提出更高要求。

作为教师,要让学生深刻认识到:“编译原理”是许多课程知识的集成与实践,能进一步加深对许多专业基础课程知识的理解;编译程序所使用的原理、方法和技术有利于领悟计算机理论的精髓,在非编译系统的实际应用中也发挥着很大作用;学习编译对今后从事应用软件,语言开发平台、编译系统甚至操作系统的开发等工作非常有益。

实践证明,如果首先让学生认识到课程内容的重要性,再辅之以合适的教学方法和教学手段,是不难取得好的教学效果的。根据笔者的“编译原理”课程教学经验,认为对于该课程的设置和教学可以从以下几个角度来开展。

1.科学设置课程

对于“编译原理”课程的设置问题,可以根据本科院校自身办学宗旨,从普通高校本科、重点高校本科和研究生阶段教育三个层次来考虑教学目标和培养要求等因素,在总学时的限制下,实现总目标的最佳课程。因此,可以考虑以下2种模式。

(1)课程分解模式。分为:“编译技术”(必修),介绍为满足基本应用而需要学生掌握的基础知识、方法和技术,以达到语言转换和实现理论基础介绍的目的;“编译理论”(选修),主要偏重于介绍形式化等原理性的深层次内容,方便有进一步深造需要的学生学习。

(2)内容分解模式。不单独设置一门“编译原理”课程,根据深浅和涉及到的具体问题,将与其他课程相关的内容分解到不同的课程中去,使学生在相关课程的学习中逐步掌握相关知识。这和前者比有一定难度:一是课程难分解,课程内容分解后与其他课程内容的重新整合在短时期内难做到科学分解与组织;二是增加了其他课程授课教师的工作量与难度。

2.优化教学内容

教师还要坚持教学与科研相结合,将最新的教改和科研成果引入教学,将经典编译理论与现代编译技术有机地结合起来。例如,可以将嵌入式编译器、分布并行编译器、多核编译器以及适应新体系结构及新一代计算机系统编译器的研究及其研究结果迅速充实到“编译原理”课程中。此外,还可以向学生介绍编译技术在人工智能、并行计算、自然语言处理等领域里的具体应用,为后续课程做好铺垫。

3.用实例演示来形象化抽象理论

学生学习“编译原理”课程的最大困难是其较为抽象,要获得好的教学效果,就要将抽象理论形象化。改革教学方法,提倡互动式、研讨式和案例式等教学方法。一方面,可以通过实例类比,例如,用自然语言的翻译过程来类比编译程序执行高级程序设计语言的翻译过程。另一方面,教师可以借助多媒体手段,把抽象的原理用动画、图像等形象化的方式展示,便于学生的理解。同时,还可以向学生推荐网上优秀的“编译原理”课程教学网站、电子书等资源,拓宽学生视野,培养和激发学生学习兴趣。

4.把握联系,启发学生积极思维

在教学过程中,充分考虑“编译原理”课程与数据结构、计算机组成原理、操作系统、算法分析与设计等先修课程之间的内在联系,不断深入和强化,以加强课程的系统性,培养学生的全局观。同时还要把握编译过程各个功能阶段的内在联系与规律,有目的地设计问题,有意义地提出问题,通过问题把编译原理中的理论难点、抽象概念引导出来。

三、重视实验,建立行之有效的实验教学方法

设计和组织良好的实践教学环节可以使“编译原理”课程获得良好的教学效果。现在很多高校都增加了实验学时,并独立计算实验成绩。我们在借鉴兄弟院校和国外经验的基础上,摸索出验证性实验加综合设计性实验的2阶段实验教学模式,各高校可根据自己的教学目标和培养要求来选择实施。

1.验证性实验

这类实验主要是为配合配合课堂授课内容,由教师按编译原理授课顺序,提供同步的若干验证性实验题目,让学生逐个完成相关子模块,逐步扩大完善整个编译程序。这样循序渐进地完成实验,不仅增加了学生的成就感和自信心,而且使他们养成扎实的作风,使学练互动,激发学生学习兴趣和积极性。而作为教师,则要做好组织、监督和解惑工作,帮助学生掌握编译系统主要技术、算法的理解和设计,引导学生从整体上把握编译系统的结构和各子系统之间的协调工作。

2.综合设计性实验

一定规模的综合设计性实验训练是保证实践教学效果必不可少的环节。我们可以让学生以小组(由4~5名成员)为单位结合软件工程课程实验的环节完成一个规模适度的编译程序开发。在实际操作时,可根据验证性实验阶段的情况,把学生分成不同层次的小组,由他们选择适合自己水平的不同的实验题目。每组遵循完整的编译器开发方式,融入软件工程的思想,由大家推举的组长分工、协调完成任务。这样,不仅能让每个学生体验从分析设计、编码测试到交付维护的软件开发全过程,还提高了他们的工程和团队意识以及开发大型软件的协调结构设计能力。实验结束时,教师要求学生以演示系统、答辩的方式公布实验成果,以便公正评分。

四、结论

计算机编程自学教程篇4

关键词:信息的编程加工;讲解演示法

中图分类号:G434文献标识码:B文章编号:1671-7503(2013)01/03-0119-04

【设计思想】

以程序为基础,以算法为核心,不以代码编写训练为要义,而以程序设计方法和算法思想的体验为旨归。

充分利用与学生生活、学习经验联系紧密的例子,碰撞出思维的火花,让学生了解信息编程加工的方法,理解算法的作用,尝试简单代码的书写?熏体验编程的魅力,激发学生的学习兴趣,同时,也锻炼学生的思维。

【教材分析】

《信息的编程加工》是教育科学出版社出版的《信息技术基础(必修)》第三章第二节的内容。本节课主要是通过分析、编写简单程序?熏让学生初步了解信息编程加工的一般过程?熏感受利用计算机编制程序解决问题的魅力,解开计算机程序的神秘面纱。教材没有详细介绍编程加工的关键步骤:算法,但是这部分内容是编程的核心,所以,引入了算法的概念及算法的简单设计。

【学生分析】

高一学生思维活跃,逻辑思维能力也日趋严密。所教学生大部分来自城市,基础整体相对较好。但是,程序设计很少有学生接触过,再加上内容本身相对枯燥,因此,创设情景,激发学生兴趣,消除他们对程序设计的陌生感和畏难情绪,调动他们学习和探究的主动性、积极性,显得尤为重要。学生一节课的时间对编程掌握不了多少,但让他们在体验中理解编程加工的主要过程,了解其内在机制,并通过简单的修改实现小小的目标,有成功的体验和收获是完全能够达到的。

【教学目标】

知识与技能:对比人类是如何分析问题、解决问题,了解计算机求解问题的过程;掌握算法的基本含义及设计思想,从而了解计算机信息编程加工的内在机制;理解并能够用VB语言实现算法,尝试简单代码的书写。

过程与方法:通过教师的实例讲解和学生的亲身实践,让学生理解计算机解决问题的一般过程与方法;感悟信息编程加工的基本思想和基本流程。

情感、态度与价值观:消除程序设计的神秘感,产生对程序设计的求知欲,形成积极主动地学习算法与程序设计的态度;逐步养成严谨、科学的程序设计思想;通过小组协作,培养学生的探索精神与合作精神。

【教学重、难点】

重点:体验了解计算机解决问题的主要过程,了解其内在机制;简单算法的设计。

难点:算法的理解及其设计;认识、书写简单代码。

【教学方法】

讲解演示法、讨论法、任务驱动法。

【教学环境】

硬件:多媒体网络教室;软件:极域电子教室、VisualBasic6.0。

【教学过程】

一、创设情境问题,引入课题

问题:祖冲之如何计算圆周率?

分析:人的特点是有分析、思考能力,但计算能力有限;计算机的特点就是算得快、准确,但需要依靠人为它设计程序。计算机的灵魂是程序,没有程序,计算机是无法运行的。

二、讲授新课:以求解“水仙花数”为例讲解信息编程加工的一般过程

问题:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+33。同学们能找出所有的水仙花数吗?

学生两人一组,各尽所能,找出100-999之间的水仙花数,看哪一组找的最多?

(1)分析信息。确定要解决的问题,即要求计算机“做什么”。

让计算机找出100~999之间各位数字的立方和就是这个数本身的数,并显示出来(如图1)。

(2)设计算法。对某一特定的问题设计的一组(有限个)求解步骤和方法(如图2)。

学生体验小游戏,青蛙过河,找出过河的方法。

分析完成的步骤:公1母1向前一步,母2向前一步?熏公1公2公3向前一步,母的均向前一步,公的均向前一步,接下来很简单。

(3)编写代码。把人们设计的算法转换成计算机能够识别的代码。

程序设计语言有很多,已经从最初的机器语言发展到现在的比较接近自然语言的高级语言,例如:C、pascal、VB、C#、Java等都是高级语言。

我们使用VB来实现。VB基于事件驱动编程方法。

学生实践:根据流程图(如图3)完善程序代码(算法一的代码实现)。

(4)调试运行。刚编写的程序不一定完善,必须在计算机上实际运行,排除程序中的错误,测试其能否达到预期的结果。

小结:计算机运行的程序就是人思维的延伸。

信息编程加工的一般过程:分析问题设计算法编写代码调试运行。其中,设计算法是最核心的部分。

三、轻松一下:加深算法的印象?熏编程算法是核心

(3)小结:只要能设计出算法,程序设计就不神秘了。

四、总结提升

计算机编程自学教程篇5

关键词:编译原理;教学指导思想;专业能力;专业素质

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

1引言

计算机学科是一门年轻的、发展迅速的学科,在人才培养、教学模式和教学体系的改革乃至具体的课程设置中都面临新的挑战。“编译原理”是计算机专业本科生的重要专业基础课程,其原理、方法和技术在语言处理、软件工程、软件自动化、逆向软件工程、搜索引擎甚至非编译系统等诸多技术领域有着广泛的应用。但是,学生普遍反映“编译原理”是一门难学的专业课程,毕业后也很少有从事编译器研发的机会,在该课程学习的认识上存在障碍。同时,随着教学改革的不断推进,课程理论教学学时不断缩减,这也是推动课程改革必须面对的问题。

鉴于“编译原理”课程的知识点涉及许多知识和技术领域,诸如离散数学、计算机体系结构、数据结构与算法、软件体系结构、软件测试、形式语言与自动机等,因此课程讲授面临诸多概念、知识点、原理和算法。如何将这些知识融会贯通,启发式地引导学生,提高学生的学习兴趣,加强他们对知识的掌握,达到提升学生专业能力和素质的目的,值得研究。为此,需要在课程的教学指导思想定位的基础上,从教学方法、教学手段及内容等诸方面协调保证

课程的教学目标和效果。

2“编译原理”课程教学的发展与现状

国内“编译原理”课程最早开设于20世纪70年代末期,该课程的发展和改革至今仅有30余年的历史,其发展和改革进程大体可以概括为:

(1)课程起步阶段。20世纪70年代,高级程序设计语言的课程纳入学校教学计划,与之配套的课程是“编译方法”、“编译技术”等,重点讲授高级程序设计语言的发展和编译的基础知识和技术。由于缺少配套的教材,主要结合一些实际编译程序的实现技术展开课程内容。该阶段后期,国内引入格里斯的教材上、中、下三册,本科生重点讲授上、中册。80年代初至80年代末,国内组织计算机专业统编教材,国防科技大学陈火旺教授于1983年编写出版了《编译原理》,国内多数学校采用了该教材,课程名称也相对统一称为“编译原理”。由于当时该课程参考资料缺乏,开设的学校较少,加之当时国内软件研发刚刚起步,对课程涉及的编译程序这类大型系统软件有关理论和技术理解受限,教师把握课程的精髓及学生学习皆感到有一定困难。为此,国内一些高校联合举办每两年一次的“编译原理”课程研讨会,交流课程教学计划、教学方法和教学手段等,对该课程的推进起到了很好的促进作用。

(2)课程发展阶段。约从20世纪80年代初、中期开始至90年代中期,计算机学科及体系不断发展完善,许多较早设立计算机专业的院校成立了计算机系(院),许多院校结合学习、理解和分析ieee教程,较系统梳理了课程体系,制定了“编译原理”课程新的大纲和知识体系,更新了教学内容。特别是设置计算机软件专业的本科院校,“编译原理”课程基本都设为必修课,有些学校还设置了“编译原理”的前驱基础课程“形式语言自动机基础”,为学生更深入、牢固地掌握编译理论奠定了良好的基础和系统的学习途径。

(3)从20世纪90年代到现在,随着全球范围内it业的迅猛发展及it领域人才市场的需求拉动,对计算机专业的课程设置和改革提出了更高的要求。课程教学体系和教学模式不断提升,积累了丰富的教学资源。此阶段亦正值我国高等教育大发展大变革时期,自1999年开始,招生规模逐年迅速扩大,计算机专业已成为中国规模最大的理工专业,专业调整、合并不断推进。而本课程在此阶段的一些重要改革是:教育部高等学校计算机科学与技术教指委确立了“分类培养”的战略思想,在教材建设上更注重汲取世界上著名编译教材的优点,先后引进了本领域权威的“鲸书”、“龙书”和“虎书”等经典教材。国内许多高校结合自己多年积累的教学和科研经验,先后出版了适合自身教学要求的教材及教学参考书。与此同时,课程实验教学的改革与理论教学的改革同步,更注重通过编译原理教学培养学生综合的软件工程能力。

3基于专业能力和专业素质考量的教学指导思想

3.1人才培养目标主导课程教学指导思想

按照教育部计算机教指委“分类培养”的指导思想,根据学校为创建研究型大学而确立的“厚基础、宽口径、强能力、高素质”的人才培养目标,结合计算机学科的发展趋势和现代计算机人才的社会需求,我们明确了本专业“编译原理”课程的建设目标和指导思想是:立足夯实基础,拓宽课程相关领域,训练工程素质;使学生明确认知语言及语言的处理是求解问题的一种有效途径;培养学生对系统软件和中、大型软件的规划、组织、设计和实现的综合能力和素质。

3.2课程设计实施保障专业能力和素质提升

“编译原理”课程具有理论性、系统性、实践性强的特点,课程涉及的知识可以让学生领悟到计算机理论的精髓。在课程教学指导思想定位的基础上,结合课程规划、设计与实施,把面向知识的教育转变为能力导向的教育,探讨课程教学如何在学生专业能力和素质培养中发挥有效的作用。这需要教师有厚重的业务水平和教学经验的积累,凝练与之相适应的课程内容的内涵,注重对课程学习思维方法的启发和引导。以“编译原理”课程为例,我们的讨论关注其中的两点:

(1)课程知识向专业能力和素质的升华

专业能力实际也是知识的综合体现。编译程序是一个庞大复杂的系统软件,涉及到计算思维能力,系统规划、实现能力,算法能力等知识点及可应用性。因此,编译的原理性研究、学习和实践,可以从多角度提高学生的逻辑思维能力、实践动手能力、编程调试及综合应用能力,有助于切实有效地提高学生的专业素质。

(2)知识的融合和关联

“编译原理”的课程体系和知识点具有许多内在和外在关联,知识点的可应用性亦处处存在,可以经过专门的课程设计,启发式地让课程知识点融合或关联,有利于拓宽学生思维,将专业能力和素质的提升融入教学之中。

下面举例说明“编译原理”课程中知识的融合和关联。

例1:对语言的表示和分析,涉及形式化描述和自动机;自动机的化简是一种数学抽象,直接利用离散数学中等价划分、商集的基础理论和知识;而在软件测试中,理论上的测试用例往往是无穷集,亦可以划分为等价集设计高质量的测试用例。

例2:编译程序在从程序设计到程序运行产生输出结果这一过程中处于核心地位,编译系统对用程序设计语言编写的源程序进行编译,编译过程中会用到源语言自身的规范和库程序,需要操作系统提供的库程序和接口,以及目标体系结构的相关信息生成可执行的二进制程序。根据用户的需要,可执行程序由操作系统调度运行,并与下层硬件系统产生密切的关系。为此,编译课程所讲授的部分内容需要程序设计语言、操作系统和体系结构等课程内容作为支撑,这样才能使学生更好地理解计算机系统中从软件设计到程序执行这一完整的过程。

例3:对编译程序的组织与结构,若从软件体系结构层面考虑,将词法分析器作为语法分析器独立调用的子程序,则属于层次结构;若从接口关系上存在的直接i/o关系,可以认为属于过滤器结构。若从操作系统知识领域考虑,将词法分析器和语法分析器各作为一个独立线程,则对共享程序要解决互斥问题等。

再如,代码优化则是数学、逻辑学、结构程序设计、体系结构和优化理论的综合应用。

4结语

对课程教学指导思想的定位要紧扣人才的培养目标,有了明确的教学指导思想,才能有针对性地进行课程的教革,把面向知识的教育转变为能力导向的教育。本文结合学校研究型人才的培养目标、教学指导思想的定位及本课程特点,探讨在教学中将编译原理和技术与相关技术领域知识的融会贯通,提出在编译课程的教学改革中应加强与其他课程内容的交叉和联系,以提升学生的专业能力和素质。

参考文献:

[1]陈英,陈朔鹰,王贵珍,等.编译原理[m].北京:清华大学出版社,2009.

[2]教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)[R].北京:高等教育出版社,2006.

计算机编程自学教程篇6

【关键词】程序设计计算思维

【中图分类号】tp30【文献标识码】a【文章编号】1006-9682(2012)12-0026-02

一、引言

进入信息时代,计算思维能力的培养越来越得到社会的认可和广泛关注。计算思维不仅仅属于计算机科学家,它是每个人应具备的基本技能。就像所有人都具备阅读、写作和算术能力一样,也要学会计算思维。如同其他思维能力获得途径一样,计算思维能力也需要通过系统的培养方案和课程计划的科学实施才能获得逐步的提高。[1]程序设计课程除了基本语法外,还涉及问题建模,求解方法评价与取舍,编程实现,程序调试、运行以及结果分析等诸多环节,涉及计算思维多个核心概念问题,它不仅仅是培养学生的编程能力和编程技巧,而且也是培养学生计算思维能力的重要手段。然而在传统的程序设计语言教学过程中,教师通常比较注重语言语法规则的讲解,而程序设计又往往涉及多方面知识,面对程序设计语言中繁杂的语法规则和对解决问题方法的欠缺以及有机结合,很多学生慢慢丧失了学习的兴趣,动手能力普遍较差。教学实践表明,相当数量的学生仅仅停留在书本知识的死记硬套,另外,一些学生虽然实现了某问题的求解,往往也不能做到活学活用,也就更谈不上计算思维能力的培养。本文介绍了计算思维的基本概念以及本质特征,结合多年的教学经验,探索在程序设计课程中融入计算思维的理念,构建以教师为主导、学生为主体、教学内容为载体、突出学生计算思维能力培养为目标的创新型教学模式改革。

二、计算思维及其本质特征

计算思维是当前一个颇受关注的涉及计算机科学本质问题和未来走向的基础性概念。这一概念最早是由麻省理工学院的Seymourpapert教授在1996年提出的,但是把这一个概念提到前台来,成为现在受到广泛关注和认同的代表人物是美国卡内基梅隆大学的周以真教授。周教授认为,计算思维是运用计算机科学的基础概念进行问题求解、系统设计,以及人类行为理解的涵盖计算机科学之广度的一系列思维活动。计算思维是一种递归思维和并行处理,是基于抽象和分解原则,利用约简、嵌入、转化和仿真等方法形式化地将复杂问题转化为易于求解问题的思维活动,是按照预防、保护及通过冗余、容错、纠错的方式从最坏情形恢复的一种思维,是利用启发式推理来寻求解答,就是在不确定情况下的规划、学习和调度的一种思维。计算思维是概念化,不是程序化,是计算机科学不是计算机编程。像计算机科学家那样去思维意味着远远不止能为计算机编程,还要求能够在抽象的多个层次上思维。计算思维是根本的,不是刻板的技能,是每一个人为了在现代社会中发挥职能所必须掌握的。刻板的技能意味着简单的机械重复。计算思维的本质是抽象和自动化。[2]

三、程序设计课程计算思维培养模式

为了有效的在课堂教学中开展学生计算思维能力的培养和训练,教师要深刻认识和理解计算思维的基本概念和本质特征,在此基础上,结合程序设计课程的教学内容和教学目标,重新整合教学内容,改进教学方法,构建以教师为主导、学生为主体、教学内容为载体、突出学生计算思维能力培养为目标的创新型教学模式。

1.教学主体

学生和教师是教学活动中两个重要的角色,相互作用,互相影响。教师起主导作用,引导学生积极参与课堂教学活动,教师要能充分调动学生的积极性和能动性,使其乐于其中,而不仅仅是简单的知识传授和编程技能的训练。教师要将计算思维的思想融入教学过程,努力创建师生平等的教学环境和学习氛围。学生是教学的主体,学生要在教师的引导下,充分发挥自身的主观能动性,在教师营造的平等的教学氛围下,积极创造性地学习,深刻体会各个知识点之间的衔接关系,在举一反三的过程中逐步获得计算思维的能力。

2.教学内容

课堂教学内容要能激发学生学习的激情和动手参与的欲望,并且使其能顺利地参与。这就要求选取对学生有益的或有意义的教学内容。正如李波教授所说:“要让学生做些他们感觉有意义的工作”,否则,就不可能引起他们的兴趣,那么就不可能学好。[3]同时,选取的教学内容要符合学生现有的接受水平,做到通俗易懂不晦涩。程序设计类课程主要包括算法流程(程序流程)和程序实现两个内容。算法流程主要学习问题求解方法和求解思路,而程序实现是利用现有计算机资源,编程实现问题求解算法,进行问题求解和仿真。这两者涉及对求解问题的抽象、分解、约简、转化以及问题求解算法实现过程中所涉及到的对计算机资源的理解、问题求解的预置,可能出错的预防、保护等计算思维的核心概念。教学过程中涉及到如何将这些核心概念贯穿于教学过程中,需要教师对教学内容进行整合和重组,选取能引起学生兴趣的典型案例,并根据学生实际情况,分层次、分梯度不断对其进行进阶和拓展训练,并举一反三、触类旁通。

由于是学生的第一门编程语言课程,学生对问题求解方法和求解思路的欠缺是其编程的最大障碍。特别是对于专科班的学生,部分学生即使掌握了编程语言的基本知识,也不能灵活运用。为此在教学的过程中,特别是初期,尽可能采用流程图的方式进行问题讲解和学生练习,用类语言,甚至自然语言进行设计和讲解,使学生先掌握问题求解方法和思路,再考虑如何转化为计算机语言编程实现,在这个过程中尽量发挥学生的主观能动性和创造性思维,教师在引导学生的过程中要使其知其然、知其所以然,并循序渐进,设计进阶和扩展练习,多让学生思考对于某个问题是否还有其他的解决办法?这几种方法的优缺点是什么?对计算机资源有什么特殊的要求等等。使学生在反复问题求解和编程实践中逐步掌握计算思维的能力。

3.教学方法

为了将计算思维能力的培养融入计算机程序设计教学过程,我们采用任务驱动、问题引导、典型案例、课堂讨论、反思与构建以及易于理解的手段组织和开展教学活动。任务驱动根据教学内容设定不同难度的编程任务,通过提出问题,引导学生思考解决方法,设置典型案例特别是核心问题的典型案例,有利于学生举一反三,易于掌握知识,提升技能。布置专题组织课堂讨论,互相学习,能够取长补短,发现自身不足,激发学生的学习热情,同时教师也能够及时掌握学生的知识掌握情况;反思和自我构建就是在教学中,通过综合性任务,使学生在反复训练的基础上对自己所学到的知识进行自我思考和重新组织,以求获得解决复杂问题和综合性任务的能力。同时,在教学的过程中要采用易于理解的手段开展教学活动,国防科大非常成功之处在于程序设计课程中引入Lego机器人编程,学生能够很生动直观地进行控制程序控制设计与实现,而且乐于其中。虽然我们学校目前还不具备这些条件,但如果能够做到仿真模拟,也将是一大进步,容易被学生接受。例如,采用Raptor软件配合算法流程的讲解,学生几乎在没有掌握计算机编程语言的情况下,能够独自实现问题的求解和仿真验证,同时切身体验计算机对于问题求解算法的执行过程。由于Raptor软件是以流程图的形式设计和执行,而且几乎没有编程语言所特有的语法规则,非常容易上手,特别适合初学计算编程的学生使用。

总之,在教学过程中要尽可能地将复杂的计算机学科知识以简单易懂和趣味化的方式呈现给学生,让学生在参与中提升能力,在拓展中寻求创新。

4.教学评价

教学评价是教学活动中的重要环节。为了保证提升学生计算思维能力这一教学目标,我们采用了平时教学过程考核和最终测评相结合的考核模式,并非常重视平时考核,平时考核包括课堂参与、作业、项目参与,并采用师生座谈,小组考核和自评相结合的方式进行,努力做到公平公正。

同时,教学评价不仅仅是给出一个评价结果,而是要为教学过程的不断改进提供参考依据,让教师感知教学活动的得与失,进一步改善教学活动。师生座谈能够使教师和学生各自反思当前存在的问题和症结所在,及时修正。小组考核能激发学生的学习热情和组间协作,自我评价能够让学生反思学习过程的得与失。总之,评价不是目的,而是计算思维能力培养教学活动改进的依据。

四、结束语

计算思维能力的培养是一个系统工程,不可能一蹴而就,也不是靠一两门课程的学习就能够获得,计算机核心知识和理论的不断积累是理解并建立计算思维的重要条件,而计算思维能力的培养和提升,贯穿于学习者整个学习过程,以及利用计算思维解决实际问题的正反馈,这也是一个动态发展的过程。本文根据计算思维的特征,探讨了以计算思维培养为目标的程序设计课程教学模式,并在我校应用,解决了初学者难于理解问题求解方法和流程和入门的难题,为后续课程打下了程序设计基础和编程基础,使其计算思维能力得到一定的训练和提升。

参考文献

1陈国良、董荣胜.计算思维与大学计算机基础教育[J].中国大学教学,2011(1):7~11

计算机编程自学教程篇7

目前,在一些国家的中小学,已经正式开设编程课。我国中小学编程课的成功实践,也证明了这门课程具有可推广性。

手机编程打败游戏

在手机app中输入你的身高、体重,系统会自动计算出你的标准体重,并给出你合理的饮食和运动建议。最近,这款由中学生个性制作的手机软件在广州大学附属中学校园风靡。而手机软件的设计者正是该校的两名初三学生,目前他们正打算将这款“健康小助手”向更大范围推广。

当使用者输入自己的身高体重选择职业后,显示体重比标准体重轻,这款软件就能根据数据提示使用者,该多吃哪些食物,并标示出食物的营养成分,如鱼类、牛肉、猪肉富含蛋白和脂肪,谷物富含碳水化合物。软件设计者、广州大学附属中学初三学生杨承熹和杨成林表示:“开发游戏比玩游戏更酷。”杨承熹小学时就对电脑特别感兴趣,初二时参加了广附正在推行的介绍手机软件开发的科技创新课程,一下子就喜欢上了。他和同学通过编程已开发出了配餐助手、个性小备忘录等小软件。最近,他们正在努力开发一款通过手机蓝牙控制的排障机器人,并计划申请专利。

该校负责手机软件开发课程的教师王晓鹏介绍:以前学生要想在中学阶段学习程序设计知识,只能参加信息学竞赛,需要学量的数据结构和算法设计等大学生的课程,但由于知识太难,令很多学生望而却步。“而课程使用的编程软件,只要大胆发挥想象力,轻松创作出个性的互动式手机app,简单,易上手。”王晓鹏介绍说,在前不久的校园社团招新中,该课程一亮相就已有百余人在上该课程。最近,该课程也获得了广州市教育局的科技项目经费支持,“下一步,我打算多开些课时,让更多学生参与进来。”

《教育》记者在采访中了解到,初中阶段开设手机开发app设计课程,在各地中学已经多有实践,如北京景山学校已在下属各分校推广该课程。北京景山学校石景山远洋分校的一位家长,为避免孩子接触网络,家中没有安装互联网。但是,他表示,支持学校开设这门课程,培养孩子的创新能力。现在电子产品已很普遍,想不让学生玩手机很难。但是通过软件开发课程的引导,学生将注意力集中在创新设计上,反倒转移了他们对游戏的过多关注。在教学中,学生接触课程后,对于开发app的兴趣很浓厚,倒是慢慢地对手机游戏不太感冒了。

辅助英语教学

内蒙古自治区牙克石市第四中学教师李艳霞发现:计算机与英语教学结合,能促进英语教学。她把计算机编程辅助英语教学的好处归纳为5个方面:讲授单词、为教师备课提供信息量、课件、语篇理解、当堂训练。她认为,两者的结合能让单词教学形象化,把思维形象化,让学习效果最优化,课堂教学容量也因此扩大。

中学英语课程内容较为枯燥,没有生动的故事,没有缜密的逻辑,充斥着单词、短语、语法及语意语境,全要靠学生的记忆。很多学生不喜欢学英语,就是因为要求记忆的东西太多。记着记着,烦了,逐渐失去了学习兴趣。有了计算机的帮助,这一切都可以改变。学校同时开设有信息技术课,学生们发现,英语学得好,对编程有帮助,学习英语的兴趣增加了。英语从一门用不上的语言变成了实用的语言。那些学习信息编程技术的学生,英语成绩也得到很大提高。李艳霞认为,计算机技术与英语教学有效结合的初步尝试,使英语学习将越来越受到关注。英语学好,计算机才有条件进入较高的境界,电脑中大部分高级语言或注册表都是英文的简写。而且先进的计算机理论基本都是英文原著,看翻译的会有一定的误差。

在南京师范大学附属小学的课程表中,有一门把英语和计算机组合在一起的课程。三年级小学生的课程内容是“看听学3L(1-30)+计算机”,四年级小学生的课程内容是“新概念英语(1-36)+计算机”。这门课程由南师大计算机中心创办,是以培养编程兴趣、锻炼逻辑思维、提高动手能力为出发点的新课程。以生动趣味的教学方法和内容,鼓励学生主动思考、大胆想象、积极实践,全面提升计算机编程综合能力。孩子越早认识计算机,就能越早理解未来社会的生产生活,利用高科技工具认识和改造世界。学习计算机程序设计,学生能够不断得到创新的乐趣,将一直有机会走在高科技的前沿,体验钻研高科技的幸福。南师大计算机中心的许老师说,青少年提前学习计算机编程,可以一举多得:电脑编程是人与电脑之间的桥梁,是未来信息社会必备的一种技能。有的学生痴迷于电脑游戏和聊天,通过学习编程,把对电脑的痴迷,转化为学习电脑知识的动力,变坏事为好事。青少年学生适当学习计算机编程,可帮助其智力发展。现在学习电脑编程的学生很罕见,如果能领先一步,就可以提升孩子的自信心,而自信心的增强对在校学习有很大帮助,能够培养学生的科学精神,锻炼思维方法,养成严谨踏实的作风,提高分析问题和解决问题的能力。

未来世界的接口

据英国《每日电讯报》2014年7月6日报道,英国5岁儿童将开始学习编写电脑程序。学校将编程知识引入课本的目的,是为新课程做准备,也是对信息通信技术(iCt)教学方式的一种革新。为培养儿童对计算机科学的兴趣,英国政府将2014年定为“编程年”。在伦敦东部的皇后桥小学,编程知识已被纳入学校课程。例如,一群四年级的学生正在完成一项主题作业,任务之一是对印度和印度文化进行生动的展示。具体要求是,当字符移动到屏幕边缘时,展示画面就会自动切换,带观众领略印度的地理、文化等风土人情。在完成编程作业过程中,学生的自信心得到了提升,解决问题能力、团队合作与沟通的能力也得到了提高。电脑编程教学的低龄化,将使儿童的技术能力得到显著提高,也将使他们更善于动手实践和创建个人项目,为初中学习做准备。

据悉,英国政府将编程知识引入学校课本,并成为必修课的目的,是为了学生能够掌握必要计算机思维和创造性,以便更好的理解当今全球变化。微软研究院在剑桥大学的核心成员、同时也是“计算机在学校”(ComputingatSchool)项目创始人西门・琼斯(SimonJones)认为,全新的计算机课程虽然将依旧包含计算机和应用方面的授课内容,但同时却会加入更多计算机科学和编程方面的知识。“计算机科学是计算机和编程的基础学科,通过这一学科所学习到的内容将贯穿学生的一生,并能够帮助他们更好的理解自己正在使用的科学技术。”琼斯说道。

西班牙马德里也在2014年将编程列入初中必修课。对于马德里15所公立初中的四年级学生来说,2015年至2016年,编程课将推广至马德里所有初中。据了解,编程课将首先通过教授学生使用开源程序开发平台“Scratch”让学生了解简单的程序设计、数学和计算知识。之后,再进一步介绍难度稍高的“阿尔杜伊诺”开源电子原型平台。马德里大区地区创新和培训中心新技术培训部主任豪尔赫・卡斯蒂亚诺斯表示,按照教学计划,学生在完成编程课的学习后将掌握设计网站、开发简单的手机应用程序或电脑游戏的能力,并且还将掌握与3D打印和机器人相关的基本知识。“从实用角度来说,网络和电子通信产业是一个发展速度很快的产业,就业缺口很大,学习编程可以帮助学生在未来就业中占据有利地位。更重要的是,我们正处在一个网络和科技时代,不仅需要熟练的高科技服务使用者,也需要具备基本能力的技术开发和创造者。这是马德里大区开设编程课的根本原因。”

完全有条件推广

对中国人来说,计算机编程是一项很辛苦的工作,要成为一个高水平的计算机编程人员尤为艰难。这是因为计算机软件技术更新的速度越来越快,而这些技术大多来源于英语国家,语言障碍严重影响对新技术的理解和消化。编程本身就依赖于英语,没有能够完全使用中文的编程语句。其次,软件开发中的技术文档和资料大都是来自英文,即使有翻译好的,不是晦涩难懂,就是译法混乱,比如:rollback就有“回滚”“回退”“返回”“重算”等多种译法;又如翻译成中文的“域”,有可能是从“field”“region”或“domain”译过来,只有阅读原文才能准确把握作者所指是什么。对于那些进入大学后开始学习编程的大学生,这是一门艰难的课程。

在国际信息学(计算机)奥林匹克竞赛中,我国一些从小学习编程的中学生取得了优异的成绩。国际信息学奥林匹克竞赛组委会官方统计显示,目前中国选手在历届比赛中获得国际信息学奥赛金牌总数名列世界第一,远超其他国家获得金牌的数目。

计算机编程自学教程篇8

关键词:C程序设计;C语言;课程;教学

1概述

C语言是当今计算机应用中最重要且被广泛使用的一门程序设计语言,它兼具高级和低级语言的优点,特别适合于编写计算机系统软件。高校的很多计算机专业课程,如数据结构、操作系统、算法设计等,多选用C语言作为教学语言。学生学好C语言,不仅是一门课和一种技能的问题,而且涉及到能否学好整个专业课。因此,C语言程序设计的教学越来越被提高到重要的位置,各校纷纷进行C语言教学方法的改革和试点工作[1-3],并取得了一定的经验和成绩。

笔者所在高校也进行了有益的探索[4]。在部级教学团队“计算机基础系列课程教学团队”共同确立的教改思想和指导原则下,各授课教师根据自己的教学经验,进行了多种教学方法的尝试,取得了良好的成果。其核心思想是,不断加大C语言的实践课时,注重学生编程技巧和编程能力的提高。尽管如此,部分学生仍然不能很好地掌握C程序设计技术。在C语言考试中,学生更易于完成填空、选择、判断正误等检验“基础知识”的题型,程序设计或上机编程题则完成质量较差。直到学习数据结构等课程时,部分学生仍然难以用C语言编写算法,这直接影响到了数据结构等课程的教学效果,对后续课程造成了影响,甚至严重影响了毕业论文的进度和质量。

C语言是一门程序设计语言,它是程序员和计算机相互交流的语言。作为语言学习,它也遵守人学习语言的最一般规律:在实践中学习语言,重视单词的学习和积累,重视语言的交流能力。

2像婴幼儿学习说话一样,学习计算机语言

婴幼儿学习语言的方法对C语言程序设计课程的教学组织具有很大的启示作用。

2.1跟着大人,重复学习说话

婴儿学习说话,是从“mama、baba”开始,爸爸妈妈积极应答,并鼓励孩子继续“说话”。期间没有人在意,孩子是有意识或者是无意识的,孩子的发音是否准确,只要有声音,就给予足够的鼓励。之后,婴儿继续学习其他称呼和各种词汇,会说“开门、妈妈抱”等短句,直到“我要出去”等简单的句子。这一语言学习的过程特征很明显:跟着大人,重复说话,不在乎语法是否正确,能简单表达意思,大人能听懂即可。

C语言学习也一样。教师把自己看作大人,学生就是婴儿。从语言教学上看,不首先去强调语法等规则,而是教授“例子”。教师可以在课堂上重点讲授一个又一个例子,在课堂上编译、连接并调试运行程序,让学生课后去重复这些程序。这种方法可以让学生在最短的时间内,真正“接触”到C语言,通过老师的程序实例和计算机实现对话。教师通过作业,鼓励和引导学生修改这些简单的程序,并鼓励学生独立完成一些新的程序。这种方法使学生在刚开始上课时就接触计算机,重视学生快速和计算机建立联系,让学生在编辑、排错、调试和运行程序的实践过程中,和计算机对话,达到从实践中学习的目的。

“在例子中,学习和计算机的对话,让计算机训练自己。”

2.2不断学习单词,丰富语言的内涵

会说话的婴儿有了新的渴求,他需要通过不断学习,拓展自己的知识和生存空间,大人们也非常配合他,不断教他新的“知识”,这些新知识,首先就是“单词”。婴儿会指着电视机“啊啊”地叫,大人们教给他说“电视”,于是婴儿学会了“电视”这个单词。他可能说“宝宝要电视”,虽然不符合语法,但他已经勇敢地清楚地表达了自己的需求。宝宝在大人的纠正过程中不断学习,掌握的词汇越来越多,他也越来越具有和人交流的能力。这种能力是通过不断学到“新词”开始的,是不断被大人们纠正提高的。

C语言学习也一样。教会学生编写基本的C程序后,接下来的工作,不是要写复杂的“让计算机唱歌跳舞”的程序,而是让学生不断掌握新词汇,扩大和计算机的交流范围。在C中,这些新词汇就是C的库函数。C语言提供了丰富的库函数,程序员不可能脱离开这些库函数妄谈编程。以往的C教学中,可能会忽视这些库函数的介绍,只有在课本的附录里,才能找到他们的索引。教师课堂上的主要时间,花费在介绍C的各种语法上。考试中,这些语法就是“基础”知识,这又会把学生的学习重点,引导在学习和背这些语法上,无形中又忽视了实际编程能力的培养和锻炼。这是造成学生不会“写程序”重要原因。

婴儿不认识新事物,就无法开口说话。学生如没有很好地掌握库函数,就难以写程序。比如,若没有printf()函数,学生就不可能知道如何把信息显示在屏幕上。因此,学习写C程序,首先需要学好C的库函数。教师在课堂上的重点,就在于在例子中,尽可能多地使用库函数。让学生“见过”并“知道”有这样的库函数可以用,再通过编程作业,促使学生掌握库函数。库函数就是C语言中的“单词”,有了这些单词,才能开始编程,和计算机“对话”。

“不仅要会和计算机说话,而且可以天南海北地聊。”

2.3多说多练

学会说话的婴幼儿对这个世界充满了好奇,他已经长大了。他不仅和他的爸爸妈妈说话,他还要和其他人说。他要去上幼儿园,可以和老师说话,可以和幼儿园的其他小朋友说话,他的语言能力不断进步,他会唱歌,会背唐诗、三字经、弟子规,他已经像个大人了。

学生学习C语言也一样。最开始模仿老师的程序,编写程序,按照老师布置的作业练习编程,最后可以根据自己的兴趣,编写一些应用程序。学生解决问题的能力越来越强,可以排除程序中的错误,掌握调试程序的方法,逐渐能够书写小规模的程序了。

这些能力的提高和培养不是教师在课堂上能够完成的,需要学生在实践中提高。此时教师可以使用特殊资源了,即上机课时。高校中C语言的课时一般由3部分构成:课堂学时、课后机时和专门的上机课时。利用上机课时,教师可以布置小规模的系统编程作业,让学生去完成。通过这种作业,让学生系统掌握C的编程知识,提高程序设计能力和水平。

“多写多练,可以和计算机讨论问题。”

2.4上学后,我们再学语法

婴幼儿长成了小学生,他要开始上学了。在学校,他开始学习课文,通过课文认字、认词、认成语,写字、写词、写句子,他开始锻炼写作文。不知不觉中,他读了很多书,从童话开始,到小说、散文、诗歌,最后是名著。他开始系统学习语法,主谓宾定状补,不胜枚举。

C语言的学习也没有止步。实际上,C语言程序设计课程只能完成上述2.1~2.3部分的内容,这些部分教会了学生写程序,而不是教会了学生C语言的语法。C语言的语法,可以融于课堂的例子中,通过程序设计和调试,直观地介绍C的语法,通过程序练习和调试,由计算机来告诉学生,怎样符合规则,怎样不符合。对于一般的语法,要求学生自学。C程序中的众多语法,比如C语言从main()函数开始执行、变量定义位置、注释写法、函数命名、参数以及函数返回、变量作用域、运算符的优先级等,多是规则,并不难理解,需要学生记住并掌握,而单调的看书和记忆,效果远不如在程序排错和调试过程中学习。

通过程序实践和例子学习语法,而不是只是在课堂上讲授语法。这样,当学生有了一定的编程能力后,再回过头去研究语法,可以更好地提高对C语言的理解水平。如果在一开始就把重点放在语法上,可能反而无法掌握C程序设计技术。

实际上,C的一些语法细节在实际工作中是不常用的。例如,判断闰年的逻辑表达式:(Year%4==0&&year%100!=0)||year%400==0,其中涉及到运算符、运算表达式以及运算符优先级等问题。若要计算该表达式的值,当然需要记住表达式的优先级顺序等语法知识。但实际工作中,是不鼓励把程序写成那种样子的,实际工作中,要求程序书写清晰明了,简单易懂,强调程序的可读性。因此,上述代码可以写为:

(((year%4==0)&&(year%100!=0))||(year%400==0))

“不仅让计算机能听懂,而且要易于听懂。”

2.5学无止境

经过了中学阶段的学习,孩子已经完全掌握了“汉语”这一门语言,此后能否成为编辑、记者、作家、诗人,则需要更多的学习和锻炼。他需要研读名著,体验生活,笔耕不辍。

C语言也如此。C语言课程结束后,学生可以通过参加课外兴趣小组、各种计算机编程竞赛、后续的专业课学习、毕业设计等,不断锤炼自己用C语言进行程序设计的能力。他可能逐渐接触到C语言课程永远无法讲授的东西,比如socket编程、进程与多线程、并发与竞态、Linux驱动程序、windows驱动程序、研究开源代码等。他成了一名高级程序员、资深程序员、专家,他开始“用word写程序”。

“计算机编程,一个玩具(计算机)的更高级的玩法(写软件)而已。”

3结语

C语言是一门程序设计语言,教学的目标在于让学生“掌握”C语言。所谓掌握,不仅指C的基础知识、语法结构等,最重要的目的是会用C语言写程序。C的其他所有知识,都在程序编写和调试中得到学习和掌握。

本文根据婴幼儿学习语言的特点,提出了C语言的教学思想和教学方法,其主要思想为:教学目的在于教会学生用C语言写程序,让学生在不断实践中提高程序设计的水平;课堂上,主要通过程序讲授编程的方法和技巧,强调C语言的库函数学习及其使用方法,通过程序重点介绍难点和重要语法知识,一般语法由学生自学;强调大量的C程序锻炼,在C语言的编写、调试中,由计算机教会学生编写程序,在编写程序和调试程序中,学习C语言的语法。

致谢:本论文得到了部级教改项目“部级教学团队――计算机基础系列课程教学团队”的支持。

参考文献:

[1]李莉.C语言程序设计的教学改革[J].计算机教育,2009(12):28-29.

[2]李业丽.“C语言程序设计”课程建设的思考[J].计算机教育,2009(12):31-32.

[3]赵金萍.“任务驱动式”的C语言程序设计教学[J].计算机时代,2007(8):25-26.

[4]王冰.C语言程序设计课程教学方法的探讨[C]//王永生.研究型大学建设本科教学改革的研究与实践.北京:北京交通大学出版社,2008:624-628.

teachingmethodsofCprogrammingLanguageLearnedfromBaby’sLanguageLearning

ZHaoShuaifeng,HUShaohai

(SchoolofComputerandinformationtechnology,BeijingJiaotongUniversity,Beijing100044,China)

计算机编程自学教程篇9

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

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

一、教学课程性质的定位

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

20世纪70年代,在B语言的基础上设计出了C语言。其中,UniX操作系统,以及运行这一系统中大部分程序都是用C语言写成的。而被我们广泛使用的微软windows操作系统的核心代码也是用C语言来编写的。1983年形成了C语言的anSi(americannationalStandardsinstitute)标准,1989年anSiC被iSo(internationalStandardsorganization,国际标准化组织)所接受,这就是常说的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++参考大全》[美]HerbertSchidt电子工业出版设

计算机编程自学教程篇10

关键词:多核技术;计算机教学;高职院校

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

多核技术发展迅猛之势已超出人们的预期想象,给计算机软硬件设计理念和方法带来重大变革。作为计算机应用人才培养重要基地的高职院校,如何在多核时代到来之初就开始探索计算机相关课程的革新,适应多核时代对计算机人才的需要,是一个新的挑战。计算机教学观念、计算机教学知识体系就应该根据多核技术发展走势做相应的变化,例如教学观念要从结构化和面向对象编程发展到多线程并行编程,教学课程从编程语言到软件工程,从计算机组成到芯片设计,都可以引入多核技术。本文就教学观念和编程语言类课程的影响进行了有益的探讨。

1高职院校计算机专业课程体系的现状

20多年间,中国职业教育已经成为世界上规模最大、人数最多、进步最快的职业教育体系:目前高职在校生人数在大学生中所占比例高达53%,总人数是1998年的6倍多。从1980年起步时期的区区13所,到2005年底的1091所,全国仅独立设置的高职高专学校数量就增长了80多倍,几乎所有的高职院校都有计算机专业或涉及计算机教育。如此之大规模,计算机教育必然给高职的教育质量带来相应的高影响力和新课题。

由于办学定位上的差别,高职计算机专业的教学自然不同于传统的大学本科计算机专业的教学。高职计算机专业教学应以培养生产或服务一线的技术应用型人才为宗旨,专门性、实践性应当是其课程设置的基本定位,应以工作能力(技术应用能力和职业素质)为主线来设计课程教学体系。其办学特色是坚持根据市场和技术需求变化适时调整对学生的培养目标,特别要注意多核技术带来的技术需求的变化,使得学生具有新技术的适应能力。

2007年7月23日,在新疆举行的“全国高等院校计算机基础教育”2007论坛暨全国高等院校计算机基础教育研究会学术年会上,诞生了《中国高职院校计算机教育课程体系2007》。其英文译名为ChinaVocational-ComputingCurricula,简称CVC2007。封面为蓝色,通常称作高职蓝皮书。它是我国高职院校计算机领域中第一个全面、系统的指导性文件,CVC2007要解决的问题是:高职计算机教

育应当遵循什么指导思想和办学理念;当前面临的形势和需要解决的问题;依据什么原则去构建高职计算机教育的课程体系,并提供了计算机应用技术等七个专业的课程体系参考方案,现在大多数高职院校都按照该蓝本进行相关计算机专业课程体系的设计。

多核时代的到来,多核技术的发展,使得大学计算机的教育面临新的问题:在多核技术的影响下,计算机体系结构、操作系统、编译技术和应用软件的编程模型等都发生了较大的变化,大学计算机的教学需要跟上多核技术的脚步,做出有针对性的调整。国外的高校例如美国麻省理工学院、乔治亚理工学院等已经开始设置多核课程,通过新增课程或修改原有课程的教学内容,以适应多核计算技术带来的变化。对国内的普通高校来说,教育部已联合英特尔公司推出了“教育部―英特尔精品课程”,投入和支持一系列与多核课程相关的精品课程建设项目,推动了我国高校引入多核内容进行课程教学与建设。目前高职院校的相应工作比较滞后,CVC2007还未明确涉及多核技术,需要进行相应的修改和补充,以达到培养的学生具备在主流计算机硬件上进行多核技术应用和开发的能力,增强学生的就业能力和创业能力。因此,将多核技术纳入到高职院校的课程体系中具有相当的重要性和紧迫性。

2多核带来的影响

所谓双核处理器,就是在一块CpU基板上集成两个处理器核心,并通过总线等互连技术,将各处理器核心连接起来。多核并不是一个新概念,现在的多核基本上指的是Cmp(Chipmultiprocessors,单芯片多处理器)类型,其实在RiSC处理器领域早已实现。多核与单核的区别在于,前者可以让程序真正地“同时”执行,而不是多个进程轮流使用CpU,从而给用户造成“多个程序正在同时执行”的假象。以前,通常是依赖CpU时钟频率的提升来提高CpU的性能。然而普通单核心处理器的频率难于进一步提升,性能也无法有质的飞跃。由于时钟频率高,功率消耗大,温度升也高,机器易发生故障和老化,英特尔公司在3.8GHz的产品以后只得宣布停止4GHz的产品计划。

因此,处理器全面转向多核体系,CpU内部开始出现了两个、四个甚至更多的内核。

由于是底层的计算平台正在发生变化,因此it领域从业人员,不仅仅是开发者,包括需求分析人员、设计者、程序员和测试者,都在工作时要考虑到并行带来的影响。作为高职院校的计算机教育工作者,要考虑到技术变化所带来的技术需求的变化,以适应高职院校培养人才的需求。为此,本文仅就多核对计算机专业的教学观念和编程语言课程的影响进行了初步探讨。

2.1并行设计思想的引入

多核的流行和普及,使程序中可以有多个线程真正地“同时”运行,也就是并行执行。如果说第一代是过程化和结构化编程,第二代是面向对象编程,那么现在到了第三代多线程并行编程。能不能把多线程并行化的工作完全交给操作系统和编译器呢?这是一个充满诱惑力的前景。我们认为并行化的工作现在无法自动实现,未来也只能在一定程度上有所缓解,而不可能全部交由机器完成。因此,在教学观念上,需要建立并行设计的思想和掌握并行编程模式,需要增设课程或在相关课程中加入Foster的pCam并行设计方法学和多种的并行编程模式。面对多核,需要建立新的思维方式,就像当年从过程化编程过渡到面向对象编程时所做的那样。

2.2编程语言课程的影响

高职院校在教学计划中大多都安排C和Java语言这两门课,过去主要是体现的是单线程串行程序设计模式、结构化与面向对象的设计思想,现在面对多核处理器,需要在并行观念的基础上进行并行编程,因此需要对C和Java语言课进行内容的调整和补充。C和Java语言都具有良好的并行程序设计支持的功能,可以在课程中适当地进行补充。如C语言的openmp和mpi库分别支持共享存储和分布存储编程模式,其多线程库也支持多线程并行。Java有很好的多线程编程功能,其代号为tiger的Java5的java.util.concurrent包的出现,可以使用低层机器指令取代锁,精化了互斥访问的粒度,提高了系统的可伸缩性和活性。

设计一个好的并行编程应用系统是困难的,设计者不仅仅要了解语言的并行功能部分,重要的是还要掌握和理解并行设计思想。设计者要面对的一个挑战是任务划分和数据分解,要尽可能地让每个任务在执行时只使用自己的数据。如果不同的线程要共享数据,问题将迅速变得复杂,同时并行程序的测试与调试也会更加困难。不久前,当有人问C#之父andersHejlsberg“未来几年内语言的发展方向在何处”时,anders表示“要处理好多核的问题,并提供一个更好的并发模型”。erlang语言最近也受到越来越多的关注,这说明人们迫切需要一个强大而又充分简单的工具来解决并发编程的挑战。

3应对的措施和改革

由于学生就业有“滞后性”的特点,而教学设计必须具有“前瞻性”,这样才能适应由于技术变化带来的人才市场需求变化。因此,多核相关课程教学的开展和引入多核技术是现实的必然,而且是早行动早受益。开展多核技术的教学需要在教材、教学内容、教学计划等方面进行相应的调整,更重要的是教师培训必须先行一步。

3.1教师培训

教师是多核技术传授的关键,只有教师自己掌握了多核技术的相关知识,才能组织好对学生的培养和教学工作。目前与多核相关的一些并行课程,也只有在国内少数高校才开设,高职院校的教师普遍缺乏这方面的知识,我们的教师应尽快地接受必要的培训,与时俱进,更新知识,只有教师早行动,学生才能早受益。多核技术的教师培训也可以采用送出去和请进来相结合的办法,送教师到相关院校学习和参加英特尔公司的大学课程计划培训班,也可以请一些专家教授到学院进行专题讲座。另外,通过组织多核技术的研究小组,使教师迅速掌握多核技术领域的最新技术和研究前沿。

3.2课程和教材改革

多核课程的开设,可以使学生对多核计算技术与应用有一个全面深入的认识,完善学生的知识结构,以更好适应未来的计算机技术及其应用的发展与革新。将多核技术引入计算机专业教学课程体系可以有两种方式:一种为单独开设课程,一种为改造现有课程。单独开设课程,需要高水平的教师及适合高职院校的优秀教材,这种方式现阶段较难实行;对现有课程的改造和扩充比较切实可行,我们可以首先对C和Java编程语言课进行示范,将并行设计思想融合到这些课程中。另外,此前教育部联合英特尔公司推出了“教育部―英特尔精品课程”,支持了一系列与多核课程相关的精品课程建设项目,我们可以引入和借鉴这类多核课程及教材。

3.3实验环境建立

建立多核技术课程的实验环境是必备和必需的。目前的台式机和笔记本都是双核以上的多核环境,开展多核计算硬件条件基本不成问题;软件方面像openmp、mpi、pthread等都有一些开源资源,可以实现共享式存储计算和分布式存储计算。对于某些系统环境需要进行购置和添加,如intel的多核计算环境,包括C编译器、数学库、测试和分析工具等。

4结束语

目前多核计算机系统已普及,需要我们高职院校的多核技术教育及时跟上发展潮流,为学生提供最前沿的信息和知识,适时地为社会培养出满足市场技术需求的人才。希望通过我们的多核课程,学生能了解流行的多核硬件平台,掌握多核编程和程序评测、调优技能,具有扎实的动手实践能力,为将来在无处不在的多核应用领域工作打好扎实的基础。

参考文献:

[1]中国高等职业院校计算机教育改革课题研究组.中国高职院校计算机教育课程体系2007[m].北京:中国铁道出版社,2007.