计算机编程自学教程(6篇)
计算机编程自学教程篇1
计算机编程是计算机基础课程的核心,是大学生必须学习和了解的计算机课程。目前学校开始的编程课程主要有:C语言、JAVA,C++,PHP语言等。这些语言是计算机编程课的必修课程,只有学会了这些基本的语言,才能进一步学习更加复杂的语言和更集成的软件开发平台。因此大学的计算机课几乎都有编程的课程,同时也是必修的课程。然而大部分的学生在学习计算机语言的时候却面临很多问题。
1.1程序语言主要是英语,不容易理解
几乎所以的计算机语言都是英语,大部分英语单词不是常用的词语,造成学生在学习计算机程序的过程中,必须先求学网翻译程序中的词语,才能理解程序中命令和语句的意思。有的就是查找字典了,也翻译不准词语的意思,因为大部分计算机语言中的词语意思是专业英语,只在计算机中代表特定的意思,而在其他语境中却代表另外的意思。
1.2计算机程序语法和结构严格,不容易掌握
计算机语法和结构比较严格,所有的变量必须先声明,语句结构有严格的顺序和组成部分,缺少任何一个标点就可能会造成错误或者程序执行不了。所以学生要记住大量的语法结构和特殊符号,要不然根本理解不了程序,更不可能写出程序。
1.3计算机程序逻辑性强,程序不容易设计
在编程过程中,往往为了解决一个问题要运用很多语句和命令来解决问题。但计算机语言是逻辑性很强的语言,在程设计的过程中学生往往不知如何下手,不知道用什么方法来解决问题。就算知道用什么方法解决问题,但在解决问题的过程中,往往缺少相关命令或者考虑不够全,造成程序编写错误,或者根本到不到预期效果。
2易语言的特点和易语言用于编程教学的优势
2.1易语言的特点
易语言是主要以汉语作为命令和程序代码一种计算机编程语言。由于易语言是全中文支持模式,编程者无需很高的英语水平,就可以学习和掌握易语言。易语言跟其他大部分开发语言一样,它拥有专门的、可视化的、集成化的开发环境,用户可以利用它进行程序编写、界面设计、编译调试等一体化的操作。汉语命令和代码的快速录入与识别是易语言的最大特点,同时易语言的语法结构按照汉语的语义特点进行设计,特别是程序定义模块采用便于理解的表格形式,用户无须记住程序的定义方式和使用格式,直接填表即可。利用易语言编程,告别了其他编程语言繁琐的定义和严格的格式,不用在意变量的使用范围,符合学生的思维方式和特点,使学生更容易明白算法和语句结构,更深层次理解编程的本质。另外易语言提供的参数提示和引导技术,不用用户记住命令和语法,只需要按照中文的意思输入拼音即可获得命令提示和参数引导。对于初学者来说,易语言的学习就是打开编程之门的钥匙,对学习其他编程语言也是有极大帮助的。
2.2易语言用于计算机编程教学的优势
2.2.1易语言有利于提高学生学习编程的兴趣
目前高校的计算机编程课一般都是国外的开发的语言,学生不仅对语句与命令难以理解,而且要记住大量的语法与结构。许多学生看编程的书籍像是看天书一样,大部分学生一提起编程课就感觉是乏味和无趣,对其失去了兴趣。因此计算机编程课变成了大学中最无聊的课。易语言是以中文为基础的开发语言,语句和命令按照我们的表达方式来命名,同时,语法结构也按照我们的思维习惯和表达方式来设计,符合我们心理特点。另外它也是可视化的、集成化的编程语言,利于学生理解与操作。所以能提高学生的兴趣,使计算机编程的学习变的比较容易。
2.2.2有利于学生培养编程思维意识
程序编写的本质就是运用逻辑思维解决问题,要学好编程课程其关键点在于培养学生的逻辑思维意识,提高学生的计算思维意识,使得学生养成一种编程思维和思想。易语言是窗体设计和代码编写相结合来实现程序编写的,支持可视化的操作,窗体和组件的属性都是中文形式。包括支持库、程序、编辑菜单栏都是中文语句。用户可以直接用中文输入命令和语句,也可以按照命令函数提示格式输入语句。它独有的帮助功能能够提示代码流程,可以方便用户理解程序所表达的意思。对没有接触编程语言的学生来说,可以快速上手,并可以在很短的时间内开发出小游戏和软件。
2.2.3易语言有利于减轻教师的授课压力
计算机编程不仅对学生来说是枯燥和乏味的,对教师授课来说也是有压力的。教师在讲课的过程中,往往需要反复讲解才能让学生了解特有的名词和语句,但由于学生没有计算机编程思维,又没有非常切合生活的实例,所以学生还是一知半解。其结果是教师费了很大的力,学生还没有学好。讲授计算机编程课的教师有很大的压力,因为不能用常用的语言来解释特定的命令和结构,同时在课堂上又要给学生讲解英文单词。大部分的程序都是英文,就算有时候讲解完也不能让学生完全明白其中意思,因为单词的意思往往也不能说明它在程序中的特殊意义。易语言的简单易学,可以让学生对程序的执行流程、语句结构等有一定的认识,教师也不用再翻译英文单词,降低了教师讲课压力。
3易语言应用于大学计算机编程课程的改革内容
3.1课程设计的改革
3.1.1采用灵活多样的课程设计形式
作为必修课程开展教学,针对广大非计算机专业学生,作为计算机基础课程中的必修课进行开设,由于非专业学生对计算机语言的应用能力不用太强。开设易语言课程,让其对计算机编程课有一个大概的了解和认识,培养一种计算机编程的意识。作为计算计算选修课开设,由于易语言在现实应用中还不很不广泛,大部分软件开发都还是应用的是常用的编程语言。针对计算机专业课的学生,需要利用编程语言来设计软件并在以后的工作中,利用语言来开发程序,易语言只能作为一个了解的语言,而不能利用易语言来实际操作和编程,所以可以作为选修课程来学习。也可以作为第二课堂来学习,在课余时间教师可以利用第二课堂,对易语言有兴趣和喜欢编程的学生进行讲解。有些学生喜欢编写小游戏或小软件,喜欢钻研计算机编程问题,可以开阔学生的视野,让他们学习易语言,并开发相关的软件和系统,提高学生的学习兴趣。
3.1.2分层次、分学科教学
由于易语言简单易学,可以在学生中开展分层次、分学科的方法进行教学。由于学生计算机水平的参差不齐,如果让有些计算机水平比较好的学生学习易语言,可能有些简单。易语言应用于实践的范围还不广泛,当前开发软件的主流还是国外的编程语言。所以对这些同学而言,学习易语言就可能浪费了时间。可以预先对学生的计算机水平进行测试,然后分层次教学。另外要分学科教学,针对学生学科的不同,来确定是否开始易语言和其他语言,让课程充分符合学生的水平,提高教学的效果和课程开设的科学性。
3.2授课方式的改革
3.2.1以易语言为先其他语言为后的教学方式
易语言中文可视化的环境和编写程序的特点,可以将其作为编程课程的第一门课,让学生对计算机编程语言中的程序集、子程序、变量、模块和定义有一个初步的了解和认识,让学生明白计算机编程语言的特点和本质理解计算机编程中循环和判断的运行规律;掌握软件开发和系统搭建的基本原理。只有这样才能对计算机编程有了初步的了解,提高学生的学习兴趣,才能为学习其他编程语言打下基础。要以易语言为先,其他语言为后的教学方式改革计算机编程教学。
3.2.2开展自学与提问相结合的教学方式
计算机课程是一门理论与实践紧密结合的课程,特别是计算机编程课。学生对于那些难懂的术语和命令往往一筹莫展,也容易忘记。另外,只讲解理论学生从直观上很难理解,最终结果只会让学生对计算机课程失去兴趣,因此要理论与实践相结合。易语言的特点和优点,让学生自己很容易上手,易语言课程的讲授可以直接在机房中开展,可以开展自学与提问相结合的方式进行教学,教师再针对重点部分进行讲解。
计算机编程自学教程篇2
关键词:C语言;程序设计;教学改革
一、背景
随着科学技术的不断发展,计算机科学与其他学科的联系越来越紧密。C语言具有功能强大、表达能力丰富、使用灵活便捷、应用范围广、目标程序执行效率高、可移植等优点[1],因此很多高校将其作为计算机程序设计类课程的基础课。该课程对于培养高校学生的逻辑思维能力、编程技能、自主学习能力、分析问题和解决问题的能力都有极大帮助,并对数据库原理及应用、操作系统、单片机应用等后续课程的学习起铺垫作用。但是,由于C语言课程中涉及到的知识点繁多、概念多、重点难点多、规则较为复杂、运用灵活、不易调试、难以调动学生的学习兴趣和积极性,教师教学过程和学生学习过程都感到较为困难。
二、传统C语言教学方法和手段
传统的C语言教学过程中,课任教师作为主要的知识点传授者,大多数侧重于课本上C语言语法知识点的传授和巩固,按照所选教材的章节顺序和章节中例题先后次序进行上课讲解,针对课后习题进行作业的布置。这种按部就班地跟从教科书的授课方式,不易于将学生的实际接收和反馈情况作为授课依据,难以激发学生对该课程的学习兴趣。传统的C语言作业布置模式,让学生针对课堂上的例题和课后的习题进行编程调试,如果学生对课堂上的知识点未完全消化或学生本身非计算机专业,编程基础较差,这种作业布置模式容易使得学生有挫败感,大大降低学生学习本门课程的动力且使得部分学生畏惧上机编程。当然,也有部分学生按照课本的例题程序进行输入、调试和修改后,可实现例题中所要求的功能,带给学生一定的成就感和满足感,但也容易让学生误以为自己对C语言编程完全掌握了,而实际上,学生面对灵活多变的编程题,缺乏自我思考和灵活应用知识要点的能力。以往,传统的C语言授课方式多数是将理论课和上机实践课分开。通常先安排理论课,再安排少于理论课课时的上机课。这种传统模式容易将理论知识点和上机操作分离,学生经过理论授课后若不及时上机复习和巩固,待下一次上机操作时,容易将知识点遗忘,且不利于学生课堂上及时地理解书本中抽象的概念。而单一的上机课,学生专注于完成编程题目,或是将编程题当作此次上课的目的,单纯地为交作业而编程,临下课时,部分学生甚至为交差而拷贝、抄袭他人的程序,这种上机实践效果不利于学生将理论知识点和实践结合。
三、传统教学模式存在的问题
“C语言程序设计”作为高校相关专业的基础课程,多数高校的教学计划将本门课安排在大一或大二的第一学期,采用传统的课堂教学、课后上机编程的传统教学模式,在实际教学过程中会出现以下几个问题:(1)学生自身的计算机基础参差不齐,部分学生在初、高中阶段接受的计算机基础教学和操作训练不足,导致学生突兀地进入程序编程阶段,传统的教学模式难以让学生从零基础良好地过渡到自主编程状态,容易导致学生产生挫败感。(2)传统的C语言教学模式是一种学生被动接受知识的模式,而C语言实践性较强、重视学生分析问题能力培养,传统教学模式难以调动学生学习和编程的积极性,学生缺乏独立编写程序、解决问题的能力,难以培养学生的自主创新能力。(3)对后续相关课程的影响。在后续的面向对象的程序设计、单片机应用、MATLAB语言及应用等课程的实验及教学设计,对C语言基本知识有较高的要求,若C语言掌握得不好,会严重影响这些后续课程的学习和掌握。(4)学生自身对课程的重视度不足[2]。一些学生认为自己不是计算机专业,将来就业可能不会涉足“程序员”岗位和软件开发方面的工作,对课程的认识仅仅局限于C语言编程是计算机专业才应该熟练掌握的技能。C语言的学习实际上是通过一门具体的计算机语言系统地培养学生的逻辑思维能力。
四、对C语言教学改革的几点建议
1.作为授课教师,需要明确教学内容和目的定位。在C语言课程的第一节课,老师应当清晰地告诉学生这门课的学习目的是通过学习C语言,了解基本的算法,掌握正确的编程思想和方法,培养思考问题和解决问题的能力,提高计算机应用水平,为后续相关课程奠定坚实的基础。教学内容应该针对学生的专业,利用各种多媒体手段,选择趣味性、交互性和内容充实性的教学内容,制作适合学生在课堂上集中注意力学习的课件,帮助学生在配备教科书的学习过程中,通过教师讲授加深对所学知识的理解和掌握[3]。2.激发学生的学习热情,培养学生兴趣和自信心。兴趣是最好的老师。教师的授课应当易于学生的接受和理解,具有一定的启发性,引导学生在听课的过程中,自主思考和编程。教师应当注重课堂气氛的保持,让学生在有限的授课时间内尽可能地集中注意力,被教学内容所吸引,使教和学的师生双方都能获得极大的满足。在进行课堂教学内容的设计过程中,教师应围绕教学大纲的要求,设置一些学生熟悉的、简单的实际问题,让学生利用所学知识进行编程计算和实现。理论教学过程中,及时地发现学生的薄弱点,进行强化,师生共同参与整个教学环节。3.改进传统的教学方式。理论课和上机实践课可以同时进行,将授课课堂搬到机房,学生第一节课可以学理论课,教师在授课过程中,将一些实际编程案例通过软件界面实时再现和实现其功能。第二节课学生上机,学生可以及时地将上节课的理论知识点进行巩固和验证,并可以通过编程,发现自己的不足,任课老师第一时间向学生答疑解惑,对程序进行点评和调试。4.重视实践内容的教学。C语言这门课实践性很强,具有一定的逻辑性,应当削弱语法知识的传授,重视实践内容的教学,让学生从实际的案例编程中加深和强化理论知识点。一个完整的程序开发过程要经过需求分析、算法确定、程序设计、程序设计和调试环节。在布置上机实践作业之前,授课教师务必对本次上机内容进行思考和设计,寓知识点于编程题中,对算法有个总体的把握,允许学生将课堂无法编程完成的作业带到课下,课堂仅对其程序设计流程图或NS图进行检查和把关,实践内容从易到难,循序渐进。此外,上机实践课,可将学生进行分组,针对某一编程题,进行小组讨论和协作编程,共同完成实践教学的内容。针对上机编程题目,学生可以利用计算机网络,将一些感兴趣的问题带入课堂,通过老师讲解,学生小组讨论,利用所学编程知识实现功能,既能增强学生的学习兴趣,又培养了学生的自学能力。
计算机编程自学教程篇3
关键词: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电子工业出版设
计算机编程自学教程篇4
论文关键词:编译原理;能力培养;教学
从当前的就业情况看,计算机专业的学生在软硬件知识和应用能力上的优势逐渐弱化,在与具备特定行业、应用领域和专业背景的学生竞争就业时,面临的压力越来越大,而在已就业的学生中又少有人从事编译系统的研究和开发工作。所以,“编译原理”作为计算机科学与技术专业的“经典”核心课程的存在价值受到质疑。其实,本科教育解决的是培养学生基本专业能力、可持续发展能力这些本质性的问题,因此,我们要从如何结合专业课程完成学生专业能力的培养与素质的提高这样的角度来看问题。
在大学里,学习一门课程,不能简单、肤浅地看成是对这门课程所含内容的研究、设计和开发,而是关注是否在有限的时间内最有利于学生专业能力的培养。计算机是一门技术性、工程性和应用性很强的学科,有其自身的基础理论支撑体系。“编译原理”课程本身以计算机专业基础知识为载体,含有问题求解的典型思想、技术和方法,整个课程的内容对培养学生的计算思维,程序设计与实现,算法设计与分析,计算机系统的认识、开发和利用等学科基本能力都非常重要。并且,编译技术在计算机体系结构设计、提高软件开发效率与质量的工具开发等方面有着重要的应用。因此,“编译原理”课程不但有存在的价值,而且对于计算机专业学生的能力培养和素质提高有着极其重要的作用和意义。
作为计算机专业的教育工作者,应该结合当前计算机的发展状况,重新认识“编译原理”课程的重要性,并根据当前的教育和就业形势,积极研究、改进“编译原理”课程的教学和实验方法,提高教学效果和质量。
一、明确“编译原理”课程对学生能力培养和素质提高的重要性
从课程体系总体设计看,“编译原理”课程的主要教学目标之一是使学生在系统的级别上重新认识算法和程序,提升学生的系统能力。它是计算机专业课程中最难学的课程,既涉及形式语言和自动机等抽象理论,又是数据结构、程序设计语言、算法和软件设计等知识的综合体现,有效培养了计算机专业学生应具有的计算思维,算法设计与分析,程序设计与实现(硬件和软件实现),系统的认知、分析、开发与应用等四大基本能力。
计算学科问题求解的基本思路是“问题-形式化描述-计算机化”,以抽象、理论、设计为其学科形态。“编译原理”课程中要求学生掌握的包括程序变换基本概念、问题描述和处理方法(自顶向下、自底向上、逐步求精、递归求解,目标驱动,问题分析、问题的抽象与形式化描述,算法设计与实现,系统构建、模块化)等知识、思想和方法,有利于学生养成“问题、形式化描述、计算机化”问题求解的习惯,实现从“实例计算”到“类计算”和“模型计算”的跨越。这其中既有明确的、便于抽象的问题,又有较成熟的理论,而且在限定规模下又容易实现(设计),涉及的是一个比较适当的抽象层面上的数据变换,所以该课程是计算机专业本科生的重要专业技术基础课程。
二、“编译原理”课程“教”与“学”的新思考
目前,在“编译原理”课程教学中,“教”与“学”两方面的问题都很突出:一些抽象的重要理论使学生学习的畏难情绪严重,加上有些人认为毕业后很少有机会参与设计与实现编译系统,使得该课程的“教”与“学”的热情偏低,而适用于新型体系结构及新一代计算机系统的编译器的需求和大量应用,也给“编译原理”课程内容的充实与更新提出更高要求。
作为教师,要让学生深刻认识到:“编译原理”是许多课程知识的集成与实践,能进一步加深对许多专业基础课程知识的理解;编译程序所使用的原理、方法和技术有利于领悟计算机理论的精髓,在非编译系统的实际应用中也发挥着很大作用;学习编译对今后从事应用软件,语言开发平台、编译系统甚至操作系统的开发等工作非常有益。
实践证明,如果首先让学生认识到课程内容的重要性,再辅之以合适的教学方法和教学手段,是不难取得好的教学效果的。根据笔者的“编译原理”课程教学经验,认为对于该课程的设置和教学可以从以下几个角度来开展。
1.科学设置课程
对于“编译原理”课程的设置问题,可以根据本科院校自身办学宗旨,从普通高校本科、重点高校本科和研究生阶段教育三个层次来考虑教学目标和培养要求等因素,在总学时的限制下,实现总目标的最佳课程。因此,可以考虑以下2种模式。
(1)课程分解模式。分为:“编译技术”(必修),介绍为满足基本应用而需要学生掌握的基础知识、方法和技术,以达到语言转换和实现理论基础介绍的目的;“编译理论”(选修),主要偏重于介绍形式化等原理性的深层次内容,方便有进一步深造需要的学生学习。
(2)内容分解模式。不单独设置一门“编译原理”课程,根据深浅和涉及到的具体问题,将与其他课程相关的内容分解到不同的课程中去,使学生在相关课程的学习中逐步掌握相关知识。这和前者比有一定难度:一是课程难分解,课程内容分解后与其他课程内容的重新整合在短时期内难做到科学分解与组织;二是增加了其他课程授课教师的工作量与难度。
2.优化教学内容
教师还要坚持教学与科研相结合,将最新的教改和科研成果引入教学,将经典编译理论与现代编译技术有机地结合起来。例如,可以将嵌入式编译器、分布并行编译器、多核编译器以及适应新体系结构及新一代计算机系统编译器的研究及其研究结果迅速充实到“编译原理”课程中。此外,还可以向学生介绍编译技术在人工智能、并行计算、自然语言处理等领域里的具体应用,为后续课程做好铺垫。
3.用实例演示来形象化抽象理论
学生学习“编译原理”课程的最大困难是其较为抽象,要获得好的教学效果,就要将抽象理论形象化。改革教学方法,提倡互动式、研讨式和案例式等教学方法。一方面,可以通过实例类比,例如,用自然语言的翻译过程来类比编译程序执行高级程序设计语言的翻译过程。另一方面,教师可以借助多媒体手段,把抽象的原理用动画、图像等形象化的方式展示,便于学生的理解。同时,还可以向学生推荐网上优秀的“编译原理”课程教学网站、电子书等资源,拓宽学生视野,培养和激发学生学习兴趣。
4.把握联系,启发学生积极思维
在教学过程中,充分考虑“编译原理”课程与数据结构、计算机组成原理、操作系统、算法分析与设计等先修课程之间的内在联系,不断深入和强化,以加强课程的系统性,培养学生的全局观。同时还要把握编译过程各个功能阶段的内在联系与规律,有目的地设计问题,有意义地提出问题,通过问题把编译原理中的理论难点、抽象概念引导出来。
三、重视实验,建立行之有效的实验教学方法
设计和组织良好的实践教学环节可以使“编译原理”课程获得良好的教学效果。现在很多高校都增加了实验学时,并独立计算实验成绩。我们在借鉴兄弟院校和国外经验的基础上,摸索出验证性实验加综合设计性实验的2阶段实验教学模式,各高校可根据自己的教学目标和培养要求来选择实施。
1.验证性实验
这类实验主要是为配合配合课堂授课内容,由教师按编译原理授课顺序,提供同步的若干验证性实验题目,让学生逐个完成相关子模块,逐步扩大完善整个编译程序。这样循序渐进地完成实验,不仅增加了学生的成就感和自信心,而且使他们养成扎实的作风,使学练互动,激发学生学习兴趣和积极性。而作为教师,则要做好组织、监督和解惑工作,帮助学生掌握编译系统主要技术、算法的理解和设计,引导学生从整体上把握编译系统的结构和各子系统之间的协调工作。
2.综合设计性实验
一定规模的综合设计性实验训练是保证实践教学效果必不可少的环节。我们可以让学生以小组(由4~5名成员)为单位结合软件工程课程实验的环节完成一个规模适度的编译程序开发。在实际操作时,可根据验证性实验阶段的情况,把学生分成不同层次的小组,由他们选择适合自己水平的不同的实验题目。每组遵循完整的编译器开发方式,融入软件工程的思想,由大家推举的组长分工、协调完成任务。这样,不仅能让每个学生体验从分析设计、编码测试到交付维护的软件开发全过程,还提高了他们的工程和团队意识以及开发大型软件的协调结构设计能力。实验结束时,教师要求学生以演示系统、答辩的方式公布实验成果,以便公正评分。
四、结论
计算机编程自学教程篇5
关键词:多核技术;计算机教学;高职院校
中图分类号: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.
计算机编程自学教程篇6
关键词:信息的编程加工;讲解演示法
中图分类号: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)小结:只要能设计出算法,程序设计就不神秘了。
四、总结提升