计算机函数入门教学范文

时间:2023-12-05 17:55:07

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

计算机函数入门教学

篇1

关键词:计算机技术基础;农业院校;课时;探讨

中图分类号:TP3-4

1 课程教学目标

《计算机技术基础》是高等学校非计算机专业的一门公共课程,根据教育部高教司的有关要求规定,这门课程是在第一层次即《计算机文化基础》以后的第二层次的课程,要求学生具有一种高级语言编程和上机调试程序的能力。课程的教学的目标:在使用计算机的基础上,掌握一门计算机程序设计语言,编制一些常用程序,具有一定的程序开发能力;具有一定水平的硬件知识,能够自我组织、安装或开发小规模硬件系统;具有熟悉、消化、使用与所从事专业关系密切的最新软件的能力;具有自我学习能力,能不断吸取计算机科技发展新成果,紧跟信息科学发展步伐的能力。

本课程的教学改革围绕教学目标不断进行,近年来,根据我校教学改革的总体要求,课程设置包括课时都进行了不同程度调整,突出核心或主干课程的重要性。随着计算机及信息技术的发展普及,学生在入学前接触计算机的机会大大增加,对计算机的了解、使用情况较以往已大不相同,所以,计算机公共课课时进行了压缩,《计算机技术基础》由60课时(理论30课时)压缩至48课时(理论24课时),相应的课程内容就要做调整。24课时的理论课如何设置,如何达到相应的教学要求,我们在教学中进行了不断的探索。

2 课程内容设置

我校《计算机技术基础》课程采用Visual Basic为主要平台,讲授基本的windows桌面应用,主要教学内容有两方面,一是基本算法编程,二是VB基本界面、功能编程,其中以基本算法编程为核心。根据本次教学改革要求,将主要内容按顺序划分为如下模块:

2.1 基本程序设计

这一部分包含3个教学章节,讲授10课时,主要内容有:

第一章,概述(2课时),具体内容包括硬件和软件;计算机工作原理(存储程序);软件开发工具及程序设计语言(概念、分类等);VB概述(发展、特点等);明确面向对象程序设计的基本概念和 vb事件驱动程序的突出特点;VB集成开发环境概览,,明确VB三种工作状态,明确VB应用程序组成部分和文件类型。

第二章,VB基本语言(3课时),具体内容包括VB数据类型;常量和变量;VB表达式;常用数学函数;四则运算类程序设计。

第三章 顺序结构(5课时),具体内容包括赋值语句;Inputbox函数;Msgbox函数;Print方法;常用内部函数;顺序结构程序设计;窗体、标签(Caption属性)、文本框(text属性)和命令按钮简介;Windows风格的顺序结构程序设计。

这一部分学习完成后要求学生掌握3方面主要内容:1. 基本计算;2. Windows基本界面,重点解决Windows风格的输入输出;3. 常用内部函数。这部分内容完成后要求学生对顺序结构的程序设计能够完全掌握,会编程进行基本的运算。

2.2 分支程序设计

教学章节为第四章,分支,讲授3课时。讲授内容为:单行结构If语句;简单块结构If语句(不带Elseif的);一般块结构If语句;条件语句的嵌套。本章中Select case语句因课时原因不讲。

这部分内容要重点强调流程图,掌握分支的形态和含义。

2.3 循环程序设计

教学章节为第五章,循环,讲授8课时。讲授内容为:循环的概念;While语句;Do语句;For语句;多重循环。本章涉及各种常用算法,是本课程的核心内容。

2.4 数组

教学章节为第六章,数组,讲授2课时。因课时关系重点讲一维数组,二维数组简单介绍。本章要重点讲授的内容为排序算法。

2.5 常用控件

教学章节为第七章,常用控件,讲授1课时。重点讲授用文本框解决多行输出和Timer控件。

通过这样设置教学内容,在较短的课时内让学生对VB进行较完整的入门学习。

3 教学探讨

上述的课程设置经过教学实践证明,课程设置紧凑,要求教师充分利用课堂时间,同时也要充分利用上机实验时间补充说明,在较短的课时内可以让学生对VB进行较完整的入门学习。

在教学中,要适应新的教学内容和安排,注意如下问题:

3.1 尽快入门的问题

农林专业的学生其专业课程和理工类课程差别较大,固有的学习习惯和方式在计算机等课程的学习中会遇到问题,因此要帮助他们掌握相应的知识和技能,尽快入门,尽快培养兴趣。教学的内容组织非常关键,有些教科书在一开始就会罗列出很多内容,这些内容会让初学者望而却步,产生畏难情绪,作为教师就是要让学生有选择地掌握重点内容,迅速入门,这样才能调动学生的学习积极性。

3.2 掌握基本概念和技能

VB的内容十分庞大,吸引人的地方也很多,但是,基本的内容、基本的算法是要学习掌握的核心内容,这些内容要扎扎实实地掌握,作为程序设计的入门课程,如何正确描述和实现算法是学习的关键,不少学生虽然语句也学了,但一写格式就错,编程时总有偏差和感到困难,这都是基本功不扎实的表现,本课程24课时的理论内容都学好了,24课时的上机实践都认真练习了,VB学习就算入门了,以后的学习可以凭自己兴趣展开。

3.3 教学手段方法的改进

随着教学条件的不断改善,计算机教学在许多高校已完全采用多媒体等手段,充分利用多媒体手段,做好课件,体现细节是重要的改革内容。在教学方法上,要强调理论和实践的结合,理论课讲清基本概念和方法,实验课加强实践。计算机的操作命令、语言语法不需要推导,概念也不复杂,但必须通过上机操作才能掌握。所以尽管理论课课时减少,但实验课时仍相应匹配,占总学时一半,实验进度与理论进度同步。

4 网络三维虚拟校园的应用分析

在网络三维虚拟校园正式建立之后,其应用层面较广,且其面向的使用用户范围也较广,包括学生、教师、外来拜访者在内的各类人员都可以通过该系统对校园做出全方面定位了解。具体来说,该系统可以应用于以下几大方面:

(1)基本的地图显示:使用者可以通过系统观看到整体校园的地图面貌,并且可以通过按键操作实现对地图的任意放大、缩小、平移等操作,使用户自己能够极为方便地查看校园的整体平面图与细节图,以及三维景观图。

(2)测量功能:尽管网络三维虚拟校园是按照一定的比例将原实景进行缩放面描述,但是用户在使用过程中也可以通过在图中画一折线或多边形,使系统自动计算其长度和面积,且其数据处于一定的精确范围之内。

(3)地图导航功能:导航功能是网络三维虚拟校园系统的基本功能之一,用户可以通过点击地图上任一图元查看了解校园内任意单元的属性信息,并且可以通过路线查询进行地图导航,通过达到观光与探路的功能。

(4)鹰眼功能:该系统同时能够实现鹰眼功能,既保证客户能够通过系统操作对整体校园的实景进行浏览,就好像借助老鹰的眼睛在校园上空盘旋探测,对校园内的每一处建筑物做出详细的属性信息了解。

5 结束语

短课时《计算机技术基础》教学已正常展开,它对任课教师提出了较高要求,为提高教学质量,教师要精心备课,精心设计每一个教学环节,不断督促学生学习,就目前情况看,教学效果基本令人满意。

参考文献:

[1]邓睿.浅谈高校计算机基础教学存在问题及对策研究[J].计算机光盘软件与应用,2012(20):260-261.

篇2

关键词:C语言;计算机

一、首先要学好数学这门基础课

IT 界有一句比较实在的话“数学是计算机之母”。在 C 语言的学习过程中,一般有大量的算法和数据结构需要去了解,由此可见数学在计算机学习中的重要地位,同理,在 C 语言的学习过程中,数学思想的应用会让人有豁然开朗之感,一些简单的运算问题的解决其实就是在数学领域的,编写程序是为了让计算机可以代替人操作运算过程,从而减少人力。

二.、明确学习C语言的目的

我们的学习目的不是只为了学习C语言,而是为了能够掌握程序设计的方法,具有程序设计的基本理念,为以后的计算机应用打下基础。在学习中很多学生认为这门课程既难学、又看不到任何成果, 不如 Java 等语言很快就能编写出有漂亮图形界面的程序。 但C 语言有助于对计算机编程底层原理的理解,对调整知识结构和能力结构,提高自己的综合素质都有很大帮助。

三、语言入门

刚开始接触计算机知识,处于一个计算机技术的启蒙阶段.在这个启蒙阶段,最重要的就是入门。当大家都满怀信心的去学习那些被各大高校都当作计算机入门教材的C 语言的时候,发现太多的“不明白”,因此《C语言程序设计》入门课是至关重要的。因为学生都是初次接触C语言,C 语言对他们来说是神秘的,首先在学习之前要充分了解相关领域的知识,明确学习目的及学习重要性,激发学生的学习好奇心和欲望。

四、了解C语言的发展历史,使自己对C语言产生一种似曾相识的感觉

C语言是国际上广泛流行的计算机语言,既可以用来写系统软件,也可以用来写应用软件,特别对操作系统和系统实用程序以及需要对硬件进行操作的场合,C语言明显地占优势。比如网络编程语言PHP的绝大部分内容与C语言相同,如果学过C语言,那么再学PHP就会非常轻松。

五、把好实践关,重视每次上机试验

C语言是一门实践性很强的课程,既要掌握概念,又要动手编程、上机调试运行。养成上机前分析题目,决定算法与数据结构,并编出程序源代码的好习惯,这样在上机时,就会有的放矢,上机时输入程序并完成语法检查,再运行程序,检查运行结果,同时详细记录下在程序调试过程中所遇到的问题及解决办法。编程千万不可遇难而退,这个时候是决定你水平提高的关键,一定要坚持到底。坚持就能成功。上机过程中主要精力放在调式程序上。实习结束后随堂完成实验报告,逐步积累调试程序的经验。培养自己良好的编程习惯。明确一点“C 语言不是看会的,也不是听会的,而是亲自动手实践练会的”。

六、强调问题学习,培养自己的创造性思维

目前许多学生普遍缺乏问题意识,则学习就失去了快速前进的动力。每次学习都要带着问题去学,直到把问题解决了,知识也就掌握了。科学并非始于观察,而是始于科学问题,正是问题激发人们去观察、去思考,从而启动了科学探索的创造机制激活了科学家的创新思路。

七、牢牢把握住C语言的知识要点

C语言内容十分丰富,各知识点具有非常大的连贯性,常常是牵一发而动全身,这往往使得学生在入门阶段容易产生畏难情绪。眼高手低是每一个刚学 C 语言的人都会出现的一种情况。由于 C 语言灵活、强大,初学者要全面地掌握它非常吃力,因此在学习 C 语言的过程中,一定要熟练掌握 C 语言的流程控制语句、数组、函数、指针等基础知识。可以把学习的重点放在函数的设计框架、参数设计、返回值设计等关键问题上。

八、学习过程中引入软件工程的基本思想

为使自己有良好的编程思维,培养自己在程序设计中从软件工程角度去系统分析问题的良好习惯。

总之,计算机语言是各高校普遍设置的一门计算机课程,也是培养大学生计算机能力的一门基础课程,是各专业学生进行计算机编程以及从事计算机研究的基础类课程,意义十分重大。计算机语言的种类很多,各种语言的区别只是语法规则和具体的实现方式不同,好多方面都是相通的,所以对于计算机语言的学习关键在于精而不在于多。C语言是计算机程序设计中一种广泛使用的基本语言工具,学习 C语言是学生形成编程思维,是为将来进行计算机软件开发设计打下基础的重要过程。

【参考文献】

[1]李少华.《C语言程序设计》教学中的几点体会,长江大学学报(社会科学版).2010,(10).

篇3

关键词: EWB 计算机仿真 电子技术

电子技术基础是职业学校电工电子类各专业最为重要的专业基础课程之一,也是一门实践性很强的课程。在教学过程中,不少学生对看不见摸不着的电子现象的相关知识缺乏感性的认识,其中一个重要的原因在于实验设备的不足;另一个重要的原因在于讲授理论课难以进行同步的实验;同时,对于复杂的原理、现象缺少相关的多媒体辅助教学平台,用传统教学方法难以讲解明白;再者就是授课时间不够充足,学生动手机会不多。近几年来,笔者在教学中尝试运用EWB仿真软件进行辅助教学,使抽象的理论直观化、形象化,使实验与理论得到了有机结合,教师教得轻松,学生也学得愉快,达到了事半功倍的效果。

一、EWB简介

EWB是加拿大Interactive Image Technologies公司推出的一个专门用于电子电路仿真和设计的EDA工具软件,是计算机仿真技术在电子技术中的应用。EWB软件提供了上万种真实精度的电子元器件模型,标准的电子元器件符号、外形和操作方法与实际电子仪器十分相似的虚拟仪器(万用表、函数信号发生器、示波器、数字信号发生器、逻辑分析仪等)以及稳态分析、瞬态分析、噪声分析、失真分析等十多种对电路进行仿真分析的手段。它具有如下四个特点:

1.采用直观的图形界面创建电路,可在计算机屏幕上模拟仿真实验室的工作台,绘制电路图需要的元器件和电路需要的测试仪器均可直接从屏幕上选取。

2.EWB具有完整的混合模拟与数字模拟功能,可任意在系统中集成数字及模拟元器件。EWB能自动进行信号转换。在输出信号的观察上,EWB具备即时显示的功能。

3.EWB软件带有丰富的元器件库,可提供多种电路分析方法。

4.EWB具有虚拟的仪表设备,包含函数信号发生器、万用电表、示波器、逻辑分析仪等,可具体的模拟实际的测量情况。利用EWB提供的虚拟仪器可以用比在实验室中更灵活的方式进行电路实验,仿真电路的实际运行情况,使学生熟悉常用电子仪器的测量方法。

二、EWB在电子技术课程教学中的应用

下面以分压式工作点稳定电路为例,介绍EWB在电子技术课程中的应用。在本例中我们主要对该电路的直流工作点和交流电路进行分析。

1.绘制原理图(如图一所示)

2.静态工作点分析

其静态工作点的估算为

按图一连接好电路,运用“Simulate/Analysis”菜单中的“DC Operating Point”功能选项分析直流工作点,结果如图二所示,UCEQ=5.1V(节点2减去节点3的电压),UBQ=2.9V(节点4的电压)。与理论分析的数值相符。

3.交流分析

运用“Simulate/Analysis”菜单中的“AC Analysis”功能选项进行交流分析,得到如图三所示结果,即在工作点稳定电路中小信号作用下的频率响应,包括幅频特性和相频特性。

除了以上两种分析,EWB仿真系统还可以进行瞬态分析、参数扫描分析、温度分析等。

三、结语

总之,基于EWB的电子电路课堂教学大大丰富了电子电路课堂教学方法,拓展了教学内容的广度和深度,为学生创造了更多的动口、动脑、动手的机会,使学生的学习状态由被动变为主动,学习积极性大大提高,同时它也因更贴近现代科技、更具有时代气息而受到学生的欢迎。

参考文献:

[1]钟文耀,段玉生,何丽静.EWB电路设计入门与应用.北京清华大学出版社,2002.

[2]李克庆,张俊燕.计算机辅助教学体系初探[J].中国冶金教育,2001.

[3]郑步生,吴渭.Multisim2001电路设计及仿真入门与应用.电子工业出版社,2002.

篇4

关键词:C语言;建构主义;在线评测系统;计算机专业

1研究背景

高级程序设计语言是计算机专业的专业基础课,在计算机教学中占有重要地位,很多学校都将C程序设计作为计算机专业的程序设计入门课程。该课程具有较强的理论性和实践性,课程的目标是使学生学会基本程序逻辑的表达,培养其问题求解的计算思维,使学生建立良好的编程习惯,练好程序设计的基本功,为学习后续专业课程打好基础。

常规的教学情况是,教师以语法结构为主线,穿插说明语法问题,并具体举例。教学形式是以教师为主体的“教授法”,单向地向学生灌输知识。学生被动地“囫囵吞枣”,他们普遍认为程序设计难学,教学内容枯燥乏味,缺乏主动探索问题的兴趣,实践动手能力严重滞后,缺乏创新思想,考试得高分却写不出程序。

我们经过观察、总结和研究,改革了C程序设计的理论教学和实践教学。尝试运用建构主义的学习理论,以学生已有的知识结构作为基础,科学组织和架构教学内容,以建构主义的任务驱动为基础,引入基于ACM模式的在线评测系统,将之运用于实践教学。从近两年来的教学测评反馈信息看,取得了良好的教学效果。

2在建构主义指导下组织教学内容

在皮亚杰“认知结构说”基础上发展起来的建构主义认为,学习是一个积极主动的建构过程。在这个过程中,知识、内容等不能被训练、被吸收,而只能被建构,学习者不是被动地接受外在信息,而是根据先前的认知结构主动和有选择地知觉外在信息,建构当前事物的意义。学是与一定的社会文化背景即“情境”相联系,学习者在一定的情境,即社会性背景下,借助其他人(包括教师和学习伙伴)的帮助,利用必要的学习材料,通过意义建构的方式而获得知识[1-2]。在C语言程序设计教学中,我们对教学内容进行了大胆改革,用经验“构建”有趣且具有实际应用背景的问题,引导学生运用C语言表达自己的求解问题想法,以学生为中心,帮助学生树立“算法”思想。

2.1淡化语法规则,注重算法

我们面对的情况是,C语言设计的概念复杂,规则繁多,而另一方面,绝大部分学生的C语言是零基础。需要讲授的知识可分为C语言语法和程序设计两部分内容。许多学完程序设计的学生,死记硬背下语法规则的条条框框,或是只能写出几个打印由星号组成的矩形类的“玩具”程序,而对计算机科学的基础与灵魂――算法却一无所知。他们不知道怎样让计算机解决具体问题,甚至不能敏感地意识到哪些问题适合用计算机处理[3],这不能不说是程序设计课程的失败。这继而导致学生程序设计基本技能的缺失,而在学习数据结构、算法设计等课程时就遇到困难或难以学精。

而在教学探索中,对于语言语法知识,我们只讲实际应用中用到的核心部分,其他语法内容则通过引导学生自学、在线答疑等方法补充完善。我们认为,在语法上耗费太多的课时会让学生觉得枯燥无味,学生死记语法应付了本门课程考试,但是没有达到程序设计课程的既定教学目标。我们把重点放到应用和算法上,让学生从应用和算法中学习语法,而不是反过来。我们让学生尽早地接触结构化程序设计,尽快适应计算机的“机器思维”(也称“计算思维”)。

面对各类具体问题,快速找到计算机求解此问题的方法,并且用C语言表达出来,对于初学者来说,是一种全新的思维方式,确实让很多没有接触过程序的学生无所适从。课堂上所选用的实例必须来源于现实生活,与学生的日常生活经验息息相关。教师的重要任务是设计合适的实例,为学生编程任务提供真实的情境,通过设置问题情境把学生引入门,让学生应用经验和前面的知识分析问题、解决问题。学生可以独自思考,也可以小组讨论,最后使用C语言将算法表达成可运行的正确程序。这样的教学过程不再是“填鸭式”地从流程图到写代码地满堂灌,不再让学生被动地被教师牵着鼻子走,而是通过学生自己的主动建构主动地获取新知识。

2.2精心安排教学内容和算法实例

教学内容的科学组织是提高教学质量的关键,我们在组织教学内容时强调理论和实践的结合。以建构主义为指导,我们有选择地组织和架构教学内容,合理安排教学内容的层次结构及算法实例。学生在以往的学习和日常生活中,必然已经形成了许多概念,通过适当的解释和推理,更易于形成新的知识。所以,在教授过程中,教师要注意把学生现有的知识当做新知识的生长点,引导学生从原有的知识经验中生长出新的知识经验[2]。

因此,我们将C语言的课堂教学内容按顺序分成9个部分,每个部分都组织相应的算法实例跟进,让程序设计和算法思想齐头并进。具体内容如下:

1) 第1部分:编程入门与if判断的用法。通过main函数和输入输出函数,给学生一个C程序简单框架的认识。输入输出函数让学生能够体会字符界面下数据的输入输出,然后介绍if条件语句,提出相应的算法实现,如2个数如何比大小、如何求最大值等。

2) 第2部分:循环与数组。以前面的例子为基础提出问题,即3个数求最大值,4个数求最大值……直到100个数求最大值。机器最擅长做的事情就是“重复”,自然引出for循环结构。把题目中的求最大值改成数据排序,机器的存储――数组的使用自然而然就引出了。

3) 第3部分:多分支和多重循环。这一部分内容建立在前面内容的基础上。通过使用大量实例,灵活地将顺序结构、选择结构和循环结构与一维数组等内容融会贯通,介绍一些常用算法,比如冒泡排序、选择排序等。在第1部分和第2部分没有涉及到的switch、while等结构,也可以在此时引导学生自学,同时具体运用。

4) 第4部分:用二维数组处理批量数据。由数字照片的像素引入,介绍矩阵运算中的转置、水平翻转、垂直翻转、加法、减法、乘法等基本运算的实现。

5) 第5部分:分工合作的模块化设计――函数及递归。引入多个函数构成C程序的例子。比如判断某年至某年间有多少闰年,判断是否闰年可以用函数实现,再进一步,输入年份和月份,输出类似Windows自带的日历,年、月、日和星期几对应的输出等。递归涉及的算法有菲波拉契数列、河内塔游戏等。

6) 第6部分:文本的处理――字符串。字符串的存储与字符串处理的介绍,通过大整数的加减、密码加密、解密等内容结合在一起。

7) 第7部分:指针。包括指针变量、数组名、数组的动态分配。用数组和字符串处理相关的很多算法都可以用指针实现,同时可以比较其异同。

8) 第8部分:构件化的基础――结构体。典型的问题有电话簿、链表等。

9) 第9部分:数据的持久化――文件。主要是对文本文件和二进制文件的基本操作。

在内容层次上的算法实例仅仅是一个简要的介绍,具体安排与课时和学生的掌握情况相关,一些零散的知识点穿插在算法实例的讲解中。课堂介绍固然重要,但教师应引导学生更多地提出问题,让学生自己课外花时间弄清楚各种语法知识。课堂时间总是有限的,教师应引导学生利用课外时间自己看书、实践和查资料,补充课堂没有介绍的内容和细节,解决遇到的问题,提高自学能力。

在教学过程中,针对某个知识点,教师可以采用问题驱动法和讨论法开展教学,使学生建立程序设计思想。教师创设问题情境,起到组织者、指导者、帮助者和促进者的作用,利用情境、会话和协作等学习环境要素,让学生用自己已有的知识结构去过滤和解释新的C语言程序设计知识,将其复制、吸纳或改善到自己的认知结构中。比如,从“超级女生”节目获得的PK经验可以运用于算法,学生学习2个数比大小、求3个数的最大值就很简单。这个过程体现了学生的观察、思考和吸收过程[3]。编程的时候,if就是中文“如果”的英文单词,把要表达的意思用英文“建构”,把算法转变成源代码也并不复杂。这样,学生的学习成为一个积极主动的自主操作过程,学生有选择地接受外在的信息,形成新知识,大大提高了学习兴趣和学习主观性[4]。

3基于评测系统的C语言程序实践教学设计

C语言程序设计是一门实践性很强的课程,只有多练习,多动手写程序才能学好,因此实践教学至关重要。我们将ACM程序设计竞赛中的评测系统引入到C程序设计实践教学中。ACM竞赛的评测系统方法成熟,许多高校,如北京大学、清华大学等都开发了自己的OJ(Online Judge)系统。在教学实践中,笔者采用北京大学的POJ搭建了在线评测系统,改进C程序设计课教学。

3.1引入评测系统到实践教学的优势

在程序设计课程实践教学的传统方式中,教师按照实验教材布置相应的上机题,提前将实验过程中可能遇到的问题进行讲解,对解题思路加以提示,之后学生独自上机编程,遇到问题请教师分别解答。这种方式暴露出很多问题:教师不能全面掌握学生做题的数量和效果,仅仅对个别学生留有印象;学生之间交流不多,各做各的;教师不能面对面回答每一个学生提出的问题;教师之前的提示在学生尚未思考之前,只能让学生机械记住而不能理解,实验中的集中讲解不能适应每个学生的不同进度,不能达到好的效果。久而久之,会使学生在惰性和畏难情绪中丧失学习兴趣,教师的重复工作量很大。

与传统的教学方式相比,将评测系统引入到实践教学中具有很大优势,具体表现如下。

1) 评测系统在服务器端运行提交的程序,将结果与标准答案进行字符比较,通过严格的数据测试进行评判,由机器来评判对错[5],这是人工评判远不能及的,既显公正又对学生编程思维的严谨程度提出高要求。

2) 增强学生之间的讨论和交流氛围,学生之间也可以看到排名,形成一种你追我赶的学习氛围[6]。

3) 减少了教师在实践教学中的重复工作量。根据学生提交的次数和排名及源代码,教师可以查看学生的整体情况,在网上监督学生的作业完成情况,减轻了教师检查任务、批改作业的负担,提高了批改的准确性,可以在讨论区解答存在的问题[7]。

4)“比赛”排名与算法的空间复杂度和时间复杂度相关,可以提高学生对程序运行时间空间复杂度的敏感性。

5)B/S结构提供了开放、自主学习的实验环境。学生通过网络可以轻松访问,不受时间地点约束,无形中增加了课外上机的动力。

3.2基于评测系统的实践教学设计

实验教学的过程是:布置任务组织学生上机实践辅导学生疑难问题实验结束前10分钟简要分析本次实验中存在的问题根据结果分析每次实验的效果,调整下次实验任务。

每次实验前,我们在评测系统中给出本次实验的题目和正确执行的测试数据,将不同难度层次的题目设计为一组实验任务,学生上机就当是一次“练习赛”。比赛在规定时间开始,学生要在2小时内完成3~5题。系统要求每个学生使用自己的用户名和密码登录,针对每一道题在本机的VC环境中调试运行,无误后在线提交自己的程序代码,服务器根据运行情况给出Accepted等结果。学生可以在几秒钟内知道是对是错,错在哪里[8],系统支持多次提交。系统对参加“比赛”的用户即时地进行排名,提交正确的任务个数越多、用时越少的学生,排名越靠前。

我们将评测系统引入到C程序设计实验教学中,激发了学生的学习热情和潜力。利用好评测系统,为C程序设计教学服务的关键是精心设计实验任务,在实际运用中,我们采取了如下措施。

1) 将传统的实验内容改编为ACM题目[6]。改编既要保留待考察的知识点,又要增加题目的趣味性,测试数据必须全面、准确。通过具体问题描述,学生自主选择合理的算法解题,加深对基本知识的掌握水平,真正做到学以致用。

2) 多个任务的难易要分配得当。任务过于容易,学生得不到锻炼,任务过难,没有或只有少数学生能完成任务,学生的自信心和兴趣受到打击。不同难度层次的实验任务,能够满足不同水平层次学生的需求。

3) 任务的考察点要和理论课讲解的算法紧密相关。让学生在模仿的前提下变通,“复制”和“同化”知识。

4结语

在C语言程序设计课的教学改革中,我们轻语法规则,强调算法和计算思维,在建构主义指导下安排教学内容的层次结构及算法实例,利用在线评测系统引导激励学生动手编程,将以教师为中心、单方面灌输、学生被动接受知识,转变为激发学生兴趣、学生主动获取知识,让学生在“你追我赶的竞赛”中提高编程能力。本教学改革在湖南农业大学信息科学技术学院、东方科技学院2009级计算机、信息工程、电子商务专业共12个班级的教学实践中取得了很好的教学效果。

参考文献:

[1] 许晓东. 基于建构主义的计算机任务驱动式教学法[J]. 重庆工学院学报,2005,19(2):178-180.

[2] 陆蓓. 建构主义指导下的C语言程序设计教学[J]. 杭州电子科技大学学报:社会科学版,2006(4):64-67.

[3] 李文新,郭炜,余华山. 程序设计导引及在线实践[M]. 北京:清华大学出版社,2007:5-6.

[4] 何克抗. 建构主义的教学模式、教学方法与教学设计[J]. 北京师范大学学报:社会科学版,1997(5):74-81.

[5] 郭嵩山,王磊,张子臻. ACM/ICPC与创新IT人才的培养[J]. 实验室研究与探索,2007,26(12):181-185.

[6] 武建华. 基于ACM模式的数据结构实践教学改革与探索[J]. 计算机教育,2007(12):114-116.

[7] 李文新,梅宏,陈徐宗. 北京大学计算机学科的教学体系改革[J]. 中国大学教学,2008(4):14-16.

[8] 汪小林,罗英伟,李文新,等. 北京大学“计算概论”课程的建设与改革[J]. 计算机教育,2009(20):45-49.

Exploration of Teaching for C Programming

XIAO Xiao, HE Xiping

(Information Science and Technology College of Hunan Agricultural University, Changsha 410128, China)

篇5

关键词:C语言;教学

0 引言

C语言是国内外广泛使用的一种计算机语言,C语言功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。因此,C语言不仅是计算机专业学生的一门重要课程,也是高校中非计算机专业学生学习计算机知识的一门重要课程。

作者的C语言课都是在机房里进行的,学生可以人手一机。在C语言的教学过程中,精讲多练,讲练结合,依据学生的能力,采用以学生为主体逐步引导、启发学生。即教师在课堂上起引导的作用,让学生在机学习,边学边练,不断发现问题,解决问题,循序渐进,逐步提高。这种方法打破了课堂教学和实验教学的严格界线,在C语言的教学实践中取得了良好的效果。

1 指针用法

指针通常指向一片存储空间,而空间可采用静态分配或动态分配。静态分配是指在编写C程序时已确定了存储空间。如使用全局变量,static char a[size],则编译器为变量a在程序运行时的数据区内固定分配size字节的空间;如函数内定义一个局部变量charb[size],则在执行函数时,局部变量b在栈上分配size字节的存储空间,函数调用结束时将自动释放局部数组变量b的存储空间。

动态分配是指调用库函数malloc(size)在堆上分配size个字节的连续空间,调用结束后返回一个指向分配好的存储空间的指针,编程时必须考虑到在使用完该存储空间后调用对应的函数free( )来释放掉。

在C编程时,一定要合理使用指针,否则很容易在执行时出现各种错误。以下列出常见的几个错误:

(1)在C程序中定义了一个指针变量,但没有对其进行初始化,将该指针变量称为“野指针”。如果此后对该指针变量所指的存储空间进行操作,程序会出现严重的错误,因为,在定义指针变量后,指针变量的值是不确定的,即指针随机指向某个内存地址,此时的指针所指的内存直接赋值操作,将该单元中原有的数据覆盖,使该数据丢失,若指针指向的是系统的数据区中,会导致系统运行的异常甚至死机。因此,C编程时要及时把指针变量赋值,使指针有正确的指向。

(2)如用语句p = malloc(size)来分配空间,应对分配后的参数p进行检查,如p为NULL则表示分配不到存储空间,此时不能对p指向的空间操作;即使为p分配了空间,也要注意对该指针操作时不能超出其空间范围。使用完后,一定要释放该空间,否则可能引起存储空间的耗尽。

(3)栈溢出。栈是在调用一个子函数时用来保存和恢复现场,以及传递参数和存放局部变量,但在执行子函数时,如果其中的局部变量指针出现使用错误,则会发生栈溢出。例如在子函数中,有下列代码:

char p[8];

strcpy(p,/Notice: This is a test pro-gram!0);

由于栈中为局部变量p只分配了8个字节空间,而strcpy()函数将覆盖p指向的连续32个字节空间(包括字符串结束符-\ 0.),可能将栈中存放的函数返回地址等内容重写了,所以子函数执行完后就无法返回到原来的函数继续运行了。

(4)堆溢出。堆的使用与所在运行平台的操作系统和编译器有关,堆溢出也相对复杂。如程序为:

char *p;

p = (char*)malloc(8);

strcpy(p,/No-tice: This is a test program!0);

则执行strcpy()时将覆盖了紧跟在指针p指向的32个字节的内容,引起堆溢出,程序运行无法正确。

(5)void的用法。void在定义某个函数时,表示该函数无返回值,但库函数void malloc(size)除外,它并不表示malloc(size)无返回值[5],而表示函数的返回值可以转换成任何类型的地址值(如char *,int *等)。void不能用来定义数值变量,但可以用void来定义指针变量,它的真实含义是可以将任何数据类型的地址赋给指针变量。

(6)区分数组和指针变量在使用过程中的不同,指针可以通过加减数值来移动它所指的位置,如p+=5;而数组名是不能移动的,如char k[20]; k++;对k的操作是错误的。

(7)指针移动时挪动的位移与指针所定义的类型相关,如a和b定义为:char *a;int *b;后续的语句:a+=10;b+=10;则表示a向后移动了10个字节,而b向后移动了10个整型长度,即40个字节。指针变量在使用时要与定义的类型相一致,char c[10];int *d;d=c;此后对d的操作很可能造成混乱。

2 课堂教学中注意培养良好的编程习惯

(1)入门阶段。分析和演示运行简单的C程序,和学生一起对程序进行简单修改,再演示运行,让学生对C程序产生感性的认识,激发学生的学习兴趣和热情。这时需要注意在编写C程序过程中的一些特定格式和语法要求,帮助学生养成良好的编程习惯。

(2)基础阶段。这时的学生应该已经学习了算法、变量、表达式、语句、程序结构等C程序基础知识。这一阶段中,我会经常提出一些简单的问题,放手让学生讨论,逐步深入理解问题,逐步完善流程图,然后把流程图翻译成标准的C程序,并进行试运行和调试。

这一阶段中,可以以教材为线索,扩展介绍C语言的语法知识,但不能停留在语法上,可以根据任务和项目的需要插入介绍一些系统函数,并适时地将所学知识应用到项目和任务当中,让学生学以致用。

(3)综合阶段。为了让学生熟练使用语法知识,还需要布置一些较长的程序让学生阅读分解,尝试修改语句和程序结构。这一阶段中,我会经常提出一些相对复杂的问题,放手让学生讨论,逐步深入理解问题,逐步完善流程图,然后把流程图翻译成标准的C程序,然后对流程图和程序反复并进行修改、运行和调试。

这一阶段中,要鼓励学生大胆创新,创造性的运用书上的知识。同时,和学生强调编程的功夫在编程之外,养成学生良好的编程习惯,为学生以后的发展打下基础。

(4)提升阶段。我会根据不同层次的学生提出不同的设计要求,因材施教,尽量使每一个学生都能将所学到的程序设计方法和相关语法综合应用。同时,告诉学生,要达到能用C语言编写较大的应用程序,并不是仅在一个学期的学习过程中就能完成的,在以后的实践中,要继续学习。

在C语言的教学中,采用适度灵活的教学方法,理论讲授和上机实践紧密结合,语法与实例紧密结合,可以激发学生的学习兴趣,增强学生的求知欲,降低课程难度,会达到良好的教学效果。当然,具体教学方式、方法的选择,不同的老师可以根据实际需要而定。

参考文献

[1] 范华,秦茂玲,张俊.透视C程序设计语言[J].计算机技术与发展,2008,18(6):64 -661

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

篇6

关键词:计算机应用基础;课程教学设计

中图分类号:G642文献标识码:A文章编号:1009-3044(2012)03-0620-02

Analysis on Computer Application Based Course Teaching Design

CHANG Juan

(Linfen College of Shanxi Normal University, Linfen 041000,China)

Abstract: Based oncomputer application basepublic basic course analysis, it expounded the course teaching design ideas in five aspects: the nature and tasks of the curriculum, the teaching content of the arrangement, the design of course objectives, teaching media settings, teaching process and learning suggestions.

Key words: computer application base; course teaching design

《计算机应用基础》课程是全国各个大、中专院校都开设的一课计算机基础课程。根据课程大纲要求,教学过程是要以学生的主动学习为主、教师的辅导为辅两者相结合的原则,实现由封闭教学向开放教育过渡的转变,以教师为中心向以学生为中心的转变,突出开放教育的特点,利用现代多媒体教育手段进行教学。学生在教师指导下,根据计算机应用教学计划规定的培养目标,利用学校提供的课本教材、机房设备等教学资源进行自主学习。教师通过面授辅导、多媒体教学等教学手段为学生学习提供服务。

1课程的性质和任务

《计算机应用基础》是大、中院校学生重要的公共基础课程,它是为培养四个现代化建设需要的、能够适应未来计算机使用要求的大专层次应用型人才服务的。

本课程是讲授计算机文化知识和计算机基本使用方法的入门课程,内容侧重于计算机的基础知识、基本概念和基本操作技能,并兼顾实用软件的使用和计算机应用领域的前沿知识,为学生熟练使用计算机和进一步学习计算机有关知识打下基础。

通过本课程的学习,学生要求掌握计算机的基本概念,学会至少一种输入法,学会操作电脑及简单的维护;熟练掌握Office套装软件中的Word2003、Excel2003、PowerPoint2003的使用及上网冲浪知识。在教学内容的选取上打破传统的教学模式,力求以就业为导向,项目任务为驱动,以职业能力为核心,将知识传授、素质培养、能力提高、课程实训,即教、学、练、训融为一体化进行教学,以“必需”“够用”“会用”的基本概念和分析方法,舍去复杂、非实用的理论分析,为学生今后的学习和就业打下基础。

本课程是专科各专业的公共基础课,分两学期开设,课内78学时。其中:课堂讲解18学时,上机实习48学时,定期辅导12学时。

2教学内容

紧扣计算机技术的发展趋势,以传统教学内容为基础,重点介绍计算机基本知识和基础操作、Windows XP操作系统的基本操作、Word2003、Excel2003、PowerPoint2003办公软件的操作、国际互联网应用能力的培养等。目的是培养学生规范、高效率、高质量地综合应用办公软件能力,将“能力培养”作为课程的最终目标。

3课程目标设计

3.1能力目标

1)具有计算机系统基本知识及使用微型计算机的初步能力;

2)具有运用Windows操作系统的能力,学会管理文件和文件夹;

3)具有利用Word进行文字处理能力;

4)具有利用Excel进行电子表格及数据处理能力;

5)具有利用PowerPoint制作演示文稿及其处理能力;

6)具有上网操作能力;

7)具有使用部分常用工具软件的能力。

3.2知识目标

1)掌握计算机基础知识及一种汉字输入法;

2)掌握Windows XP操作系统的界面操作及文件和文件夹的各种管理操作;3)掌握Word文档的文字的输入和基本的编辑与排版、表格的建立及编辑;

4)掌握Excel工作簿的建立及编辑、公式及常用函数的使用、数据查找、排序、筛选和数据的分类汇总;5)掌握新建演示文稿的基本操作及动画设置;

6)掌握计算机网络的基本概念和因特网的简单使用;7)掌握常用工具软件的使用。

4课程教学媒体设置及内容具体的安排

本课程内容及教学课时安排如下:

本课程教学媒体包括文字教材、多媒体课件和模拟考试环境软件等。

1)文字教材包括教科书《计算机应用基础》。

2)多媒体课件由代课教师自己制作。

3)模拟考试环境软件与文字教材相配套,向学生提供,其作用一是为了便于学生随时检验自己对所学内容的理解和掌握情况,增强其学习的兴趣和信心;二是模拟考试的题目形式与无纸化考试的题目形式相近,为学生适应无纸化考试打基础。

5教学过程及学习建议

本课程的教学主要依靠已有的教学媒体进行,知识性的内容主要通过自学完成;操作技能必须通过上机实习完成;多媒体教学及模拟考试环境软件的使用应贯穿学习过程的始终;课堂上课将讲解章节的重点、难点、要点;定期辅导讲解普遍存在的问题和集中答疑。

学生在学习本课程前,应首先了解教学大纲内容,其次了解教学媒体的功能,再制定自己的学习计划。在学习过程中,应根据文字教材中提供的内容,再配合要使用方法和学习建议,采取下列步骤循序渐进地学习:

1)阅读和预习学习内容;

2)观看多媒体教学课件;

3)完成思考题和作业题;

4)上机实验;

5)集中辅导和答疑;

6)使用模拟考试环境软件自测学习效果;

7)通过自测结果发现问题,返回上述相关的步骤解决问题。

由于本课程特别注重对学生自学能力和实际操作技能的培养,因此,上机实验在本课程的教学效果中起决定性作用,否则将可能无法通过考试。

《计算机应用基础》是计算机的入门课程,在教学中存在着:内容多、比较杂、更新快、学时紧;学生程度不一,教与学的效果不理想等问题。因此,我们在教学内容、教学方法和教学手段上,必须突出职业技能培养、学有所为的特点。

参考文献:

[1]李伟艺,王惠兰.开放教育《计算机应用基础》课程教学设计[J].山西广播电视大学,2009(4):17-18.

[2]柳青.计算机应用基础[M].北京:高等教育出版社,2006.

[3]冯乃光.《计算机应用基础》课程实施意见[Z].

篇7

C语言课程是计算机学科的一门基础主干课,也是其他相关专业的必修课,是一门实践性很强的课程。C语言的学习对于程序开发入门人员的程序设计逻辑思维能力的培养和训练有着深远的意义和影响,但是,C语言的学习也会成为部分程序开发人员最初的障碍,为了帮助广大C语言爱好者进行实践能力的提高,接下来将使用实例―窗口菜单制作,结合C语言结构化、模块化程序设计的方法和实践教学案例,进一步阐述程序设计逻辑思维的训练方法与解决实际问题的技巧。

采用C语言实现窗口菜单制作,将需要解决以下四方面的问题:

一是窗口菜单具有的功能:窗口菜单的功能取决于应用程序本身的功能。

二是窗口菜单是在那种模式下使用:窗口菜单在何种模式下使用将以应用程序运行的环境为依据,即文本模式和图形模式的选择。

三是用户采用那种输入设备:计算机硬件组成中的常用输入设备有键盘和鼠标,这也是程序开发人员在程序开发过程中结合应用程序本向的功能和用户的需求要着重考虑和具体实现的用户接口。友好的用户界面可以为用户带来较大的方便,同时,也是用户评价应用程序性能的标准之一。

四是窗口菜单的组成:一个应用程序总是以一个窗口的形式出现。在窗口中有标题栏、菜单栏、工具栏、窗口显示区、状态栏等,但是在本案例中仅涉及菜单栏的设计与实现。

针对以上窗口菜单制作的问题将给出以下解决方案:应用程序是用户界面基于文本模式和图形模式的窗口与菜单技术:文本模式下键盘操作的窗口菜单和图形模式下使用鼠标操作的窗口菜单,以下案例的开发工具是Win-TC。

一、文本模式下键盘操作的窗口菜单

首先,绘制用户界面的窗体和下拉菜单的边框。使用gotoxy(x,y)将光标定位至指定位置,通过左上角、水平直线、右上角、垂直线、左下角、右下角对应的ASCII值218、196、179、192、217,结合格式输出printf(“%c”,ASCII)画出窗体和下拉菜单的边框,注意水平线和垂直线还要与循环一起配合使用。

其次,使用结构体建立主菜单和各个下拉菜单的菜单项。例如设计的主菜单有文件、编辑、帮助三个主菜单,文件主菜单的下拉菜单项为新建、打开、保存、另存为、退出,编辑主菜单的下拉菜单项为复制、剪切、粘贴、删除,帮助主菜单的下拉菜单项为帮助主题、关于。根据以上窗口菜单项,则将会设计出以下的结构体:

struct Menu{

char mainMenuName[10];//主菜单的字名

char childMenuName[1-][10];//下拉菜单项名字

}menu[3];

再次,设置各个菜单项的文本和背景颜色。使用textcolor(bcolor)来设计菜单项的文本颜色,使用textbackground(bcolor)函数设置菜单项的背景颜色,其中之一bcolor的取值为[0,15]之间的整数。

最后,接收用户的按键并响应。对用户选择的菜单项进行高亮显示,在选中某菜单项后,再按回车键就可以执行相应的菜单命令。

1.接收用户的按键:定义按键变量int key,通过bioskey(0)的值进行判断是否有按键按下,若有键被按下bioskey(1)的值为非0的,使用key=bioskey(0)进行接收。对常用的文本模式下窗口菜单按键进行宏定义,如上键、下键、左键、右键、回车键,具体定义如下:

#define UP 0x4800

#define DOWN 0x5000

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define ENTER 0x1c0d

2.响应用户的按键:将key作为响应用户选择的入口,与预定义的LEFT、DOWN、RIGHT、LEFT、ENTER进行比较,确定用户的选择,从而执行不同的操作。具体实现如下:

key=bioskey(0);

switch(key)

{

case LEFT: //主菜单项的水平切换 即移到左边选项

break;

case RIGHT: //主菜单项的水平切换 即移到右选项

break;

case UP: //下拉菜单项的上下移动 即向上移动

break;

case DOWN: //下拉菜单项的上下移动 即向下移动

break;

case ENTER:

break;

}

二、图形模式下使用鼠标操作的窗口菜单

与文本模式下的窗口菜单相比,图形模式下的窗口菜单具有更为美观,且可以使用鼠标进行方便操作的优点,但此处需要使用图形模式下的字模进行汉字的绘制显示。

首先,图形模式初始化。以下代码将图形系统初始化为VGA 640X480 16色工作方式:

detectgraph(&gdriver, &gmode); //自动测试硬件

initgraph(&gdriver, &gmode, "c:\\tc"); // 根据测试结果初始化图形

其次,图形模式下的汉字计算。在Win-TC编辑环境中的“超级工具集”下的“点阵字模工具”可以帮助我们完成点阵字模的计算。在此,可以输入要提取的字模,选择字体,设置字体大小等等。

再次,绘制窗口界面、主菜单、下拉菜单项。

1、绘制窗口界面:使用textbackground(bcolor)设定背景颜色,使用textcolor(bcolor)设定文本颜色,使line(x1, y1, x2, y2)画线,画线前可以使用setcolor(bcolor)设定画线颜色,如果需要,也可以画矩形,并填充矩形内部区域,具有该功能的函数是bar(int left, int top, int right, int bottom),其中left,top 屏幕左上角坐标,right,bottom:屏幕右下角坐标。

2、主菜单与下拉菜单项的绘制:前面已经计算出汉字的点阵字模,此处,需要通过void drawmat(char *mat,int matsize,int x,int y,int color)函数调用刚刚计算好的点阵字模mat,设置好字体颜色color后输出到指定的(x,y)处。

最后,获得鼠标坐标并响应。

对鼠标信息进行宏定义:

#define WAITING 0xff00

#define LEFTPRESS 0xff01

#define LEFTCLICK 0xff10

#define LEFTDRAG 0xff19

#define RIGHTPRESS 0xff02

#define RIGHTCLICK 0xff20

#define RIGHTDRAG 0xff2a

#define MIDDLEPRESS 0xff04

#define MIDDLECLICK 0xff40

定义画鼠标指针的矩阵:可以使用专业工具设计鼠标图形,并将由此生成的鼠标图形对应矩阵保存,并在此处使用即可。

篇8

关键词:嵌入式系统;教学改革;非计算机专业

中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2015)01-0226-04

嵌入式计算机技术是21世纪计算机技术两个重要发展方向之一,嵌入式系统代表了“计算”发展的时代方向。根据IDC预测,到2015年,全球智能系统的设备量将达到150亿之巨。无论是在航空航天、汽车电子、消费电子,还是工业控制、轨道交通、国防装备等关键行业,处处都有嵌入式系统的身影。嵌入式技术,成为国民经济发展和社会进步的一项必不可少的重要基础技术[1-3]。

因此,很多高校纷纷开展嵌入式系统的教学和培训工作。由于嵌入式技术在工控、汽车电子等领域的广泛应用,除了计算机专业开设嵌入式方向之外,电子工程、自动化、测试技术等专业也相应开设了嵌入式系统基础教学。然而各教学单位的办学理念、办学条件、教师实力和学生水平良莠不齐,所以嵌入式系统教学模式也应该因地制宜、因材施教。本文展示了对西部某财经高校187名学生进行的问卷调查结果,结合该校的实际情况,从学生和授课教师双向角度考虑,探讨在自动化、电子、测控等非计算机专业嵌入式系统课程的教学方法。

一、非计算机专业嵌入式系统开发学习现状

为了清楚了解当前地方财经院校嵌入式系统教学现状,我们对西部某财经高校187名学生进行了问卷调查,被调查学生覆盖了自动化、电子科学与技术、测试技术、应用物理4个专业。调查内容包括生源特点、嵌入式系统前导课程学习情况、当前嵌入式学习状况等。

(一)生源特点

调配率高、女生偏多是地方财经院校信息学科的一大特点。在我们调查的187名学生中,调配生高占40.64%,女生占比为38.5%。兴趣是学习的最好老师,尤其是90后的当代大学生,无论是难度本就高的嵌入式系统,还是其他专业课,如此高的调配率,对大学教师提出了更高的要求。在工科学习过程中,女生的动手能力等劣势也是不可回避的。

除此之外,由于专业差异,经管文专业学生相比工科学生学业更轻松,兴趣更广泛,思维也更灵活。财经特色鲜明的地方财经院校,工科学生容易受到经管文类学生影响。

(二)前导课程学习情况

嵌入式系统有两个很显著的特点:一是软硬件结合,嵌入式系统都是软硬件协同设计的结果;二是面向应用,嵌入式系统是通过嵌入到具体的产品中提升产品性能,降低产品成本的。嵌入式系统作为课程,既包括比较复杂的硬件组成与工作原理,又包括嵌入式软件设计,同时还涉及嵌入式应用开发中的一些工程经验和领域经验。其先行课程有:C语言程序设计、模拟电路、数字电路、计算机组成原理、操作系统等。

在187名被调查者中,C语言程序设计基础非常薄弱。学完之后还不知道什么是C语言的占10%,大一学的时候懂一点点,大三早就忘记了的达到57.8%;竟然有超过一半的人不知道程序从哪个地方开始执行。知道函数指针用法的学生仅仅占13.9%;能读得懂结构体也只有15%。C语言在嵌入式驱动程序开发和应用程序开发中都占据重要地位,如此糟糕的学习情况为嵌入式教学提出了很大挑战。

在笔者的调查中,还考察了其他前导课程学习情况,学习过操作系统的占29.5%;45%的同学学习过计算机组成原理;学习过微处理器结构的学生占38%。

(三)嵌入式Linux开发基础学习情况

单片机作为自动化、电子科学与技术、测试技术三个专业的基础课,本质上同属于嵌入式系统,因此我们同时考察了单片机和嵌入式linux开发基础两门课程的学习情况。

如图1所示,认为嵌入式linux开发基础很难,几乎学不懂的占15.3%;难,但努力了还是能够学懂的占58.7%;难度一般,和其他专业课差不多的占23.5%;只有2.6%的同学认为嵌入式linux开发基础比较容易学。在单片机的学习过程中,认为很难,几乎学不懂的占29.8%;难,但努力了还是能够学懂的占51.0%;难度一般,和其他专业课差不多的占17%;只有2.2%的同学认为单片机比较容易学。

从图1我们可以看出,同嵌入式linux开发基础相比,单片机的学习情况更差。这与嵌入式linux开发基础授课内容密切相关,在被调查的三个专业中,嵌入式linux开发基础授课内容主要有:ARM处理器概述,linux系统最基本的操作,linux环境下简单的C语言程序编写、编译、调试工具,基本的linux应用程序开发接口函数、字符设备驱动程序开发,嵌入式开发平台的构建。即便如此,仍然有74%的人觉得嵌入式linux开发基础很难。从单片机的学习情况也可以看出,一旦涉及到硬件设计,学习情况将更加糟糕。

(四)课时安排不能满足

当前很多高校都采取了学分制教育模式。学分制的优点自然很多,比如更加灵活、机动和高效等等,但是学分制也造成了大课时量课程的锐减。在这种情况下,嵌入式系统理论课程通常只有32课时,实验课时通常只有16个课时,然而,嵌入式系统涉及的知识面非常广泛,需要讲解和实践的内容较多。这样,就形成了庞大的课程内容和偏少的课时量之间的矛盾。就嵌入式Linux开发基础教学课时期望,在笔者的调查中,38%的学生希望理论课和实验课总课时达到64学时,32%的学生选择了56课时。

二、教学目标和方向定位

在第一节中,我们从对学生特点、嵌入式先导课学习情况等进行了调查分析。正如第一节所言,无论是生源特点还是学习态度,财经院校的工科生都有其鲜明特点,就非计算机专业开课情况来看,嵌入式系统开发先行课要么是学习基础很不扎实,要么是一些先导课没有学习。然而在嵌入式系统开发教学中,非计算机专业与计算机专业教学并没有明显区分,教学定位很模糊。

在实际嵌入式工程开发中,一个嵌入式开发项目常常由硬件设计工程师、系统开发工程师、驱动程序开发工程师、应用程序开发工程师共同协作完成。无论是硬件设计、操作系统管理及内核裁剪,还是驱动程序开发,都足够单独开设一门课程,应用程序开发涉及内容更多。现行教学中,在32~42个学时内,教授的内容几乎涵盖了嵌入式系统开发的各个知识点。这种教学方式让学生难以接受,尤其是对调配生源,其兴趣还没激发,就被一棍子打倒,基本是到了最后老师在讲台上费心讲解,学生在下面呼呼大睡。在我们的调查中,《嵌入式Linux开发基础》学习困难的主要原因调查显示:73%的同学选择了计算机软硬件知识储备不够,对计算机硬件不了解,对计算机编程语言不熟悉,对计算机操作系统不熟悉;15%的同学选择了知识点太多,一下接受不了;8%的同学选择了没有兴趣;只有4%的同学认为能力不足。在“你是否有兴趣继续深入学习嵌入式”调查中,73%的同学选择了如果以后工作需要,会继续学习;12%的同学选择没有兴趣,以后也不会再学习了,只有15%的同学有兴趣,会继续深入学习。

著名嵌入式培训学校成都国嵌的嵌入式学习路线设计如下:嵌入式处理器与裸机程序开发Linux系统管理Linux应用程序开发Linux内核开发基础嵌入式Linux环境搭建Linux驱动程序开发深入学习Linux内核[3]。针对改路线,成都国嵌培训共计设计了十门课程班。在有限的32~42学时内,要想完成如此多的教学内容,明显不可能,借鉴先进培训公司的经验,考虑到调配生源多、女生多的实际情况,综合上述调查分析,笔者认为,其指导思想应建立在“有趣,有用,建立学生自信”基础之上,将学校有限学时的嵌入式系统教学定位于“嵌入式系统体验入门”。

针对嵌入式教学目标,我们对刚刚学习过《嵌入式Linux开发基础》的187名同学进行了问卷调查。结合学生意愿和实际情况,其教学目标优先考虑为:通过本课程的学习,使学生对嵌入式系统的基本结构、嵌入式系统设计所涉及的内容有一个较全面的认识,掌握进行嵌入式系统设计的基本理论和方法,为今后从事嵌入式系统的研究和开发打下良好的基础;次之,熟悉ARM微处理器的结构和特点,基本掌握基于ARM微处理器裸机程序设计,掌握基于嵌入式Linux操作系统应用程序设计的基本方法,了解设备驱动开发基本方法。

三、授课内容与顺序设置

在上一节中,我们基于“有趣,有用,建立学生自信”的指导思想,综合考虑了生源特点以及前导课学习情况,将有限学时的非计算机专业学嵌入式系统教学定位于“嵌入式系统体验入门”。在本节中我们基于上述定位,探讨教学内容设置。

当前非计算机专业嵌入式教学内容存在“大而全”的弊病,几乎覆盖了嵌入式系统所有知识点。面对一群连C语言基础都不具备的同学,老师在讲台上高谈驱动程序开发和多进程多线程,学生能够理解吗?!此情此景,如同鸡同鸭讲,对牛弹琴。是否该补上一到两次C语言编程课?笔者的调查结果中,支持补上C语言课程的达到68%。C语言是嵌入式开发的基础,因此,我们认为,对非计算机专业学生,要根据实际情况考虑补上3个学时左右的C语言课程。

信息类专业,在地方财经院校,很难说得上是主流王牌专业,“二本,非主流”标签,让这些专业学生信心存在先天不足,学习难度较大的嵌入式系统,很容易打击学生的信心,在授课内容和顺序以上,一定要保护好学生的自信心。因此,我们主张在课程学习初始阶段,以激发学生兴趣为主,知其然未必一定要知其所以然。在对嵌入式系统简单概述之后,基于开发板进行快乐体验,如裸机程序体验,以及操作系统安装体验。此过程,学生未必要读懂程序,只是基于写好的程序,在老师指导下,一步一步完成操作,实现基本的GPIO控制,直观上体验嵌入式系统。当前,开设了嵌入式课程的院校,基本都配置了基于ARM的嵌入式实验箱,这也为开展体验式教学提供了很好的平台。

计算机巨头ARM公司最近推出一个快速嵌入式系统原形设计平台――mbed[4],无论是专业人员还是初学者,使用积木式构件,可以快速设计出嵌入式系统。可以在3个学时之内完成经典的GPIO控制实验体验。mbed简单易学,是初学者快乐体验嵌入式系统的好平台。

直观体验嵌入式教学之后,开展对嵌入式处理器与裸机程序开发的深度学习。裸机程序控制案例很多,可以选取几个经典的案例,如GPIO输入输出控制、UMART通信控制、步进电机直流电机控制,基于这些案例,对处理器等硬件平台有着更深入的认识。自动化、电子、测控等专业,在学习嵌入式系统开发之前,都开设了单片机教学,开设上述裸机程序教学,既有利于巩固单片机学习,也有利于过渡到更高级的嵌入式学习。

在实际应用的嵌入式系统中,很多是需要操作系统的,如智能手机等消费电子领域、汽车电子等。当前嵌入式操作系统应用最多最广的非嵌入式Linux莫属。熟悉Linux操作系统管理是非常必要的。基于嵌入式Linux系统,有很多嵌入式应用程序开发,因此在嵌入式体验入门班,有必要奠定基本的嵌入式Linux应用程序开发基础。

表1对上述学习内容学习顺序和学习时间进行更详细配置。要完成上述内容,需要48学时。在非计算机专业,嵌入式系统学习时间一般在48学时左右,要完成嵌入式系统开发高级主题如驱动程序开发、多进程多线程编程,不但学习时间不能满足,由于这些学习主题难度较大,很容易打击学生信心,因此,我们主张只对这些主题基本原理和基本实现作简单概述,留待有兴趣深入学习的同学后续学习。

四、授课模式

(一)理论和实践合二为一

现在的大学本科教育已由精英教育转变成为大众教育,特别是对于地方财经院校这类二本院校的学生,他们普遍兴趣广泛、思维灵活,但却不太习惯理论学习和思考,缺乏恒心和耐力,容易知难而退。对于这些学生,如果采用传统的强调理论化、知识化的传授方法,理论和实验分开教学模式来讲授嵌入式系统课程,学生无法直接感受到嵌入式系统课程的魅力,无法感受到所学知识在实际工作中的地位和作用,因而不能融入到课堂学习中去,体现在课堂上就是老师自说自话,学生我行我事。最后一个学期下来,大部分学生感到一无所获,产生严重的挫败感。从上节课程内容设置来看,适合老师一边动手示范,学生一边学习,学生一边做一边学,在做中学。在我们的调查中,81%的同学认为理论与实验课合二为一,效果会更好。现实中的实验条件也足够支撑理论和实践合二为一教学模式。一个教学班一般一个星期开设嵌入式课程5个学时,一个拥有40台实验箱的嵌入式系统实验室,一天可以支撑两个班级教学,一个星期可以容纳10个班级学习,我校每学年总计有8~10个班级开设嵌入式系统教学,即便是同一学期同时开设这些课程,也能够支撑将理论和实验合二为一的教学模式。

(二)案例驱动

以案例为基础的教学法,根据课堂教学目标和教学内容的需要,通过设置具体教学案例,引导学生参与分析、讨论、实践等,让学生在具体的问题情景中积极思考、主动探索,培养学生分析问题和解决问题的综合能力,这被称之为案例驱动模式[1]。调查结果显示,77%的学生认为,案例驱动嵌入式系统教学可行,且有利于嵌入式系统工程能力的培养。为了解决嵌入式系统教学中存在的问题,其中一个很重要的做法就是在现有教材的基础上,适量引入活泼生动的教学案例和相关的工程应用。通过这些教学案例,提高学生的学习兴趣,让他们主动参与到学习过程中;化解课程的教学难点,减少学生学习课程时的挫折感;强调所学知识的工程应用,培养学生的实践动手能力和创新能力;贯通课程的知识点,建立嵌入式系统整体概念,培养综合运用所学知识的能力。

(三)充分利用云服务降低嵌入式学习的复杂性

嵌入式教学中一个难点就是需要安装配置的软件比较多,如Linux操作系统安装,虚拟机配置,嵌入式程序开发环境的安装与配置,嵌入式程序烧写软件。对初学者来说,如此多的软件安装和配置,一时很难掌握,很容易让学生产生挫败感,进而放弃对嵌入式系统开发的学习。

ARM公司最近推出的mbed快速嵌入式系统原形设计平台[4],可有效帮助学生解决此问题。该平台只需一块mbed开发板,一台可以上因特网的计算机,用户只需用C或者C++,充分利用mbed库函数,快速开发出嵌入式程序,然后通过远程已经配置好的交叉编译环境进行编译,然后下载到目标板上。mbed既是一块开发板,也可以当作一个U盘,下载程序非常简单。初学者可以很快上手体验到嵌入式系统的魅力。

在操作系统学习方面,无需在本地机上安装操作系统,已有很好的基于云计算平台提供linux操作系统学习平台,Nitrous.IO[5]就是一个非常不错的平台,学生只需要登录其平台,注册一帐号,就可以使用其系统。

五、结语

嵌入式人才的需求量大,嵌入式技术正快速发展,地方财经院校非计算机专业应根据自身特点和定位灵活调整嵌人式系统的教学内容,发挥自身优势,培养出社会需求的嵌入式技术应用人才。嵌入式系统课程的教学改革是一项长期而系统的工程,要逐步改善教学条件,提高教师素质,改进教学方法,不断探索与实践,提高学生的学习兴趣,培养学生的应用能力、创新能力,造就学生的就业优势。

参考文献:

[1]李文生,邓春健,吕D,案例驱动的嵌入式系统教学改革探索[J].计算机教育,2011,(2).

[2]王小妮,嵌入式软件设计课程研究与探索[J].中国电力教育,2014,(8).

[3]国嵌.嵌入式体验入门班培训教材[BD/OL].(2440版). [2011-03-07].

http:///jiaocai_view.asp?id=330.

篇9

[关键词]线性代数;CAI;教学改革

[DOI]10.13939/ki.zgsc.2016.31.244

1选题背景

线性代数作为一门重要的工科专业必修数学课程,是多门后续课程的基础课,在培养大学生的计算能力、抽象思维能力和逻辑推导能力等方面发挥着重要的作用。随着科技的迅速发展,仅研究单个变量之间的关系已不能满足解决实际问题的需要,还需进一步研究多个变量之间的关系,然而涉及多个变量关系的各种实际问题大多可以线性化,伴随计算机技术的发展,线性化问题可以通过线性代数这一工具解决。因此,今天线性代数已经在图像处理、计算机辅助设计、经济学等领域中起着重要的理论基础作用。然而从一般高校线性代数教学实际来看,从教学内容和方法上都注重理论体系完整,强调线性代数的基本定义、定理、性质及其证明,反而对线性代数的应用不够重视。因此,有必要探索新的教学模式,引导学生认识到线性代数在工程中的应用性,逐步提高学生的线性代数应用能力和计算能力,进而提高学生的就业能力和创业能力。

目前,线性代数的教学模式改革已被很多国家所关注。美国大学数学教育从1990年就开始了一次大的改革,成立了线性代数课程研究组(Linear Algebra Curriculum Study Group,LACSG)。1992年美国科学基金会又资助了一个ATLAST(Augment the Teaching of Linear Algebra using Software Tools)计划,即用软件工具(MATLAB)增强线性代数教学,强调了计算机对线性代数的重要性。到今天,国外所有线性代数教材都用了数学软件,并且充实了大量的应用实例,但国产的几乎所有教材却还都是20年前的老面孔。

在我国,线性代数课中不谈计算机、教线性代数的老师几乎不使用计算机,已经成为我国线性代数教育界与发达国家的明显差距。于是我国的线性代数课程出现了这样一种奇怪的状况――理论抽象愈来愈深,而很少应用于实际计算,它成了一门学生感到抽象、枯燥的课程。由于缺乏感性的认识和实际应用的推动,后续课程又往往怕麻烦而避开矩阵方程,教出来的学生当然是理论上害怕矩阵、实践中不会用矩阵算题的。因此,线性代数应用能力的培养必然是线性代数课程体系改革的重点内容,是教育改革的必然趋势。

2实践教学改革工作

2.1分析需求,确定任务

要保证高的教学水平,必须研究课程内容该如何满足专业课的需要。我们在进行这项工作时,以量大面广的机械、电子、计算机专业为对象,通过分析其后续课程在矩阵建模和计算方面的需求,以确定线性代数课程的任务。我们找到了这几个专业大学三年级前能用到线性方程的十多门课程:高等数学、化学、电路、理论力学、材料力学、数字信号处理、计算方法、物理、传热学、计算机图形学、信号与系统、机械振动等。但在实际教材及教学过程中,这些课程基本上都不会用矩阵进行计算,原因就在于目前线性代数所教的内容与后续课程的需求脱节。

根据以上分析,教改中我们将课程的实践目标定位为:学完线性代数课程以后,学生应该会做不低于6 阶的复数矩阵运算,会解6元以上的代数方程组,会解6阶三元以上的超定方程组,这是我们为线性代数制订的课程要求。怎样在不增加太多学时的前提下达到这个要求,唯一的方法就是引入计算机和软件工具。

2.2教学资源的准备

因现有线性代数任课教师的计算机水平参差不齐,所以我们先后为教改小组的教师们配发了《线性代数实践及MATLAB入门》、《工程线性代数(MATLAB版)》等教材,并利用暑假时间对教师进行培训,只有先提高了教师的计算机水平,能够熟练运用软件工具解决各类线性代数问题,才能进一步提高学生建模应用和解题计算的能力。学生方面,我们分别选取2013级、2014级计算机专业、2015级电气工程自动化专业作为实验班进行教学改革实践。

2.3课堂教学改革实践

在教学过程中主要采用的策略是:在重视线性代数基本理论掌握的同时,在教学过程中专门安排一定课时讲解Matlab工具的使用,侧重Matlab计算思维方式的训练,让传统教学与科学工程计算相互融合。采取的主要措施如下:

2.3.1确定目标,依次教学

由于线性代数是大一第二学期开设,新生对计算机工程计算的思维并不具备,因此在上第一节课时就具体介绍线性代数教学的主要任务及需要具备的工具条件,并在课程教学中,根据课程内容进度,基本每章都安排2学时讲解相关 Matlab 工具的具体使用并上机操作。

2.3.2注重理论衔接,强化应用思维

由于面对新生,在回忆高中教学内容基础上,依次引进行列式与矩阵内容,分析高中阶段的解法,现在课程的解决方法及 Matlab 的工程解法,在对比学习中缩短各阶段学习的思维跳跃。

2.3.3强化理论基础,突出应用培训

理论是解决问题的基础,没有坚实的理论基础,在实用中是无法实现突破的,因此在线性代数教学中仔细分析相应定义、定理及具体示例的推导过程,但弱化理论证明,如求矩阵的逆运算和秩比较复杂,而在 Matlab 中,矩阵的逆运算只需用函数“inv”来实现,矩阵的秩只需用函数“rank”就可实现,让复杂烦琐的任务交给计算机处理,大大简化了线性代数的计算过程的复杂度。因此在课堂训练中,对于同一题目,大多由两组同学进行解答,一组在黑板上用传统方法进行演算,另一组在讲台上用电脑通过投影仪利用Matlab工具进行解答,然后老师再分析这两种方案的各自特点。

2.3.4拓展思维,积极创新

学习基础理论的目的是为解决具体应用,因此在讲授线性代数过程中,也不忘记拓展学生思维,因为Matlab除了能解决矩阵问题,还有更多应用,如图像处理、数据分类与聚集仿真、小波分析与模式识别等算法的解决,这些都可以通过程序设计解决。

2.4课后教学改革实践

在注重提高学生应用能力和计算能力的同时,也不能忽视对基本理论的掌握,为此,我们引入了北京信息工程学院课题组开发的线性代数课程的CAI软件:《线性代数练习题库管理系统》(下文简称LAMES)。该系统以学生通过计算机自己进行课下练习为核心,系统为用户提供了1200多道6种类型三种不同难度的练习题,覆盖面较广,对每道题都提供了多级帮助、参考解答和答案,系统还对教师提供课件编辑、打印试卷及对学生练习结果进行评价和统计的辅助教学功能。它为学生提供了一个良好的练习环境,给教学提供了一个得力的助手。

LAMES系统由练习子系统、编辑子系统、统计子系统及打印子系统四个模块组成。在练习子系统中用户可以根据需要选择章、类型、难度、题量、每题得分,并可随机给出一份练习题;在编辑子系统中用户可以方便地对题库和试卷进行管理;统计子系统主要用于统计成绩、题库信息、成绩排序;打印子系统可根据用户需求组合和打印试卷。

将CAI软件引入教学改革实践具有以下优点:

第一,实现大面积因材施教,线性代数CAI软件可以对每个学生的学习策略作出及时判断和反应,并可对不同程度的学生给出具体帮助。使学生真正成为教学主体,教学不再是被动的灌输。线性代数CAI软件提供良好的学习和练习环境,让学生自己主动练习,从而调动了他们的积极性和主动性,提高了学习效率。

第二,线性代数CAI软件可以减轻教师的重复性劳动(复习性辅导、上习题课、批改作业等),从而使教师把更多的精力用于更有创造性的活动中。

3应用与评价

此次教学改革实践起始于2011年,实践对象为2013级、2014级计算机专业、2015级电气工程自动化专业学生。对各年级实验班学生的问卷调查结果显示:通过改革后的教学模式,76.14%的学生激发了学习线性代数的兴趣;63.64%的学生认为提高了个人计算能力;75%的学生认为提高了个人自主学习能力。

而从近几年学生课程考试成绩、校教学督导组课堂及教学检查情况通报、教务处期中教学检查通报、学生对教学的反馈意见、后继课程的评价可以看到,通过教学环节的优化、课程资源的建设及教学内容、教学方法、教学手段的改革,线性代数课的教学效果有了非常大的提高,受到了各级领导及全校师生的一致认可。

4拓展空间及发展前景

在线性代数中教会了学生用软件工具解题,后续其他课程中就有了进行推广的基础。当然后续课程的老师也要再学习,其教程也要进行改造。所以提高大学生数学应用能力和科学计算能力是一项很大的系统工程,需要领导机关和广大教师长期的、持之以恒的努力,而线性代数课程的改革则是其中关键的、必不可少的第一步。

参考文献:

[1]陈怀琛,龚杰民.线性代数实践及MATLAB入门[M].北京:电子工业出版社,2005.

[2]陈怀琛,高淑萍,杨威.工程线性代数(MATLAB版)[M].北京:电子工业出版社,2007.

[3]张颖.MATLAB在线性代数教学中的若干应用[J].数学学习与研究,2016(9).

篇10

C++语言是在C语言基础上发展而来的一门面向对象的高级语言。教无定法,教学有法。对于计算机专业大学生的C++程序设计语言教学方法,必须结合当前大学生基础和实际情况,进行教学方法改革和教学模式创新,提高教学质量和效果,使得计算机专业大学生不但能够掌握面向对象的理论知识,而且具有一定的可视化编程与调试能力,实现理论与实践相结合,达到工程应用型的实用人才水平。如何在有限的学时内使得大学生能够找到科学的创新学习方法[4],尽快掌握C++语言基本理论和具备编程能力,是每位任课教师都需要面临的难题。

二、教学模式创新

为了培养面向工程应用的C++程序设计人才,在知识、能力、应用、创新等各方面全面培养大学生,本文提出“双主互动为纲、两个创新、两个学习、两个支持、四个课堂”的教学模式,使得学生能够达到掌握理论知识和具备编程能力的工程应用水平。教学模式创新的基本框架如图1所示。

本课题组的教学模式采用双主互动教学为纲,即基于师生互动的教师主导学习和学生自主学习。两个创新是指对教学内容和教学方法分别进行创新。教学内容创新是指教师对教学内容进行梳理分解,突出重点,并及时将新内容、新科研成果、新概念、新技术等内容补充进来,改善课程知识结构,以适应社会对计算机编程人才的需求。教学方法创新是指采用互动式、全方位的教学方法,进行理论与实践相结合、教学与科研相结合、课内与课外相结合。两个学习是指将学生分成多个小组进行讨论学习、对C++的开发环境进行学习,使得学生面向学以致用的培养环境。两个支持是指教师要采用各种手段和方法对学生的学习进行指导支持,包括面授支持、电话支持、e-mail和QQ等网络支持。四个课堂是指理论教学课堂、上机实践课堂、课程设计课堂和其它课余时间的课堂。

三、采用自然语言启发式教学方法,提高学生理解能力

C++语言是一门计算机程序设计语言。C++语言教材从前到后系统性特别强,前后章节之间环环相扣,联系紧密。由于面向对象的很多新的概念比较抽象,如果教师在教学中仅仅把教材上的语法知识照本宣科地讲给学生听,会导致下面大部分学生听不懂,学生会很容易感到枯燥乏味和厌倦疲劳,从而产生排斥和厌学情绪。这种抵抗情绪一旦从开始就产生,则将影响后续整个学期的教学效果。由于从头到尾都听不懂,老师在课堂上提出的问题学生也无法进行互动,这种灌输式的教学方法效果非常差。而教师要根据课堂实际情况,采用互动式教学方法,培养学生的主动学习能力,才能得到良好的教学效果。

1.第一次课程教学中,明确C++语言课程的重要性

目前C++语言是大多数电子、信息、计算机相关专业的非常重要的程序设计课程,也是这些大学生后续专业课学习、毕业设计、以后上研究生或参加工作进行计算机软件和IT开发的主要编程语言,广泛应用于软件设计和开发中。要让大学生有危机意识,在大学生就业如此严峻的情况下,学好C++语言,能够提高大学生以后在就业竞争中的筹码。

2.讲课过程中,对C++语言中的很多概念,结合自然语言进行讲解

C++语言作为一门计算机语言,它和人类的自然语言相比,既有区别,又有联系。在讲解一些关键概念时,采用一些浅显的自然语言的例子,提高学生的理解能力。本文作者在讲述一些关键概念时,将这些概念和自然语言结合进行循序渐进启发式讲解,激发学生的学习兴趣,起到了非常好的效果。下面举几个例子。

(1)引用是C++语言中第一个新的概念。引用类似于自然语言中的别名或者绰号,是正名的别名,没有正名就没有别名。例如唐太宗就是李世民的引用。李世民是正名,唐太宗是别名。正名和别名属于一个变量,共用同一片内存空间。引用主要用作函数的参数传递,形实结合后不会产生临时的变量,节省了内存空间

(2)类和对象是C++语言区别于C语言中普通数据类型和变量的概念。类是具有相同属性和行为的一组对象的集合,它为属于这个类的所有对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。类和对象的关系就像模具和铸件的关系一样,类就相当于模具,对象就相当于铸件。一个模具可以生产出成千上万个铸件。

(3)友元是C++语言中另一个新的概念。在数据共享与保护中,友元类似于自然语言中的朋友,但是友元和自然语言中的朋友既有联系又有区别。人类的朋友关系通常是双向的、可以传递的,但是C++中的友元关系是单向的、不能传递的。

3.引导学生合理安排课程的学习时间,培养学生的学习兴趣

教师可以把学生分成若干个小组并布置一些编程作业,培养他们的团队协作意识,并共享小组编程成果,使得他们对自己编制的程序能够运行和产生正确的结果具有自豪感,提高学生的学习兴趣。由每一个小组各自给全班同学讲授和演示自己的算法、编程思路、运行结果,既能够锻炼学生的编程与演讲能力,又能够在课堂中产生良好的互动。

4.讲课过程中尽量做到幽默风趣,灵活运用教学手段

教师在上课时,要做到风趣幽默、声音洪亮、带人真诚、平易近人、知识渊博、通俗易懂,才能产生良好的教学效果。教师要灵活运用多种教学手段,尽量采用多媒体教学,在PPT幻灯片中多做一些动画效果,或者以Flas演示程序的动态运行过程。教师在C++语言教学过程中要根据课堂中学生的反应,随机应变,结合我国传统文化与最新国内外时事,让学生潜移默化地学习一些难以理解的语法,则能达到事半功倍的效果。

四、对一些难以区分的概念采用表格形式进行对比和总结

C++语言是在C语言基础上发展起来的面向对象的高级语言,全面兼容C,但是又增加了很多新的较为复杂的语法知识点。对于一些学生难以理解和掌握的语法知识点,如果教师不帮助学生及时进行总结和举一反三,按照大学生初学的水平很难真正达到掌握和编程应用的水平。因此,教师可以在讲完某些知识点后采用表格的形式进行对比和总结。例如,C++中引用和指针的区别总结表,普通指针、指向常量的指针和常指针三种指针所指向的内容和指针本身能否改变对比总结表,对基类中具有不同访问属性的成员经过不同方式继承后在派生类中的访问权限的比较和总结表,运算符重载时重载为类的成员函数和友元函数、前置、后置自增、自减运算符参数个数总结表。

五、熟悉Visual C++编程环境,具备图形界面编程能力

目前,Visual C++ 6.0是比较经典的开发环境。即使掌握了C++基础知识,仍然难以高效掌握使用Visual C++的编译器。为了培养实用型软件开发人才,教师还应该进行Visual C++编译器的入门教学,培养学生掌握如下知识:

1.能够使用Visual C++开发环境进行界面设计;

2.能够创建简单的基于MFC的应用程序;

3.能够使用类、函数和消息映射机制;

4.能够利用开发环境有效创建对话框、按钮和菜单等资源。

当然,对于Visual C++的学习,一本好的教材也至关重要,现在的书店和图书馆各种Visual C++的学习教材五花八门,不泛互相抄袭、错误百出、误人子弟的教材。如何从这些书籍的海洋中找到合适的入门教材,对于作为初学者的大学生来说有点难为他们。本文作者也买过不少Visual C++学习的书籍,其中不少书就没有任何学习价值,既浪费钱,又浪费时间。作为教师,有责任和义务为学生挑选一本优秀的、很容易入门的教材。本文作者和周围很多从事Visual C++语言开发的朋友们都认为Jon Bates主编的《实用Visual C++ 6.0教程》是一本非常不错的教材。本人在每个学期给学生教学时,都会将这本教材的电子版发给同学们,而且从他们的反馈来说,效果确实不错。

六、理论与实践相结合,提高程序编程与调试能力

理论必须与实践相结合,才能得到验证,否则只是纸上谈兵。作为一门计算机语言,C++程序设计的实践性操作特点决定了上机实践是课程学习中的重要环节。授之以鱼,不如授之以渔。帮助学生编程序或调试程序,不如教会学生编程序或调试程序。因此,在教学中,教师可以从如下几个方面进行考虑:

1.上课时教师提前给同学们将上机编译器环境、各种单步调试、断点调试的方法传授给学生,并布置好上机操作的题目,这样学生在上机前就会有充分的准备,做到有的放矢。

2.针对性地给学生布置一些具有趣味性的程序设计题目,让学生通过查资料、上网和请教老师等多种方式编程调试,培养学生解决问题的能力,让学生感到有成就感,提高学生的学习兴趣。

3.对学生的上机存在的问题进行总结,对于一些普遍存在的问题要在课堂上统一进行讲解。并且也要对对自己的教学方法和教学模式进行实时总结和改进,形成闭环。

按照本文作者研究的教学方法,经过一个学期的理论教学与上机实践学习,在学期期末考试前的一个月对2010级计算机科学与技术专业1班全班52个学生划分为13个小组布置了课程设计项目。每4人一个小组,由每个小组自己推选出1个组长、1个副组长和组员。组长负责课程设计项目的总体实施和分工,副组长协助,组员配合。课程设计的考核是每个小组交一份打印课程设计报告,包括项目题目、小组成员、程序设计结构、流程图、源程序、实验运行结果。每个小组推举一名学生在讲台上进行10分钟的PPT演讲,老师和学生进行5分钟左右的提问。考核成绩是由老师根据课程设计报告、演讲PPT内容、回答问题效果等项目进行打分。经过一个学期的C++理论学习和一个月的课程设计,全部小组都按时递交了课程设计报告和进行了汇报演讲,其中不少学生讲的非常精彩,这对于他们也是一种不可多得的实战锻炼。学生普遍反映通过理论与实践结合的学习开阔了视野,提高了工程应用能力,培养了团队协作能力,增强了学习信心,达到了前所未有的良好效果。

七、结论

本文作者根据多年来的教学体会,提出将满堂灌式的教学方法转变为以学生为主体、以活跃式课堂为形式、以课程实际相结合的多模式创新教学方法,真正实现教师为主导、学生为主体的互动式高效教学创新模式。

参考文献:

[1]郑莉. C++语言程序设计[M].北京:清华大学出版社,2010.

[2]钱能. C++程序设计教程[M].北京:清华大学出版社,2009.

[3]谭浩强. C++面向对象程序设计[M].北京:清华大学出版社,2006.

[4]王卫军.教师信息化教学能力发展策略研究述[J].电化教育研究,2012, 229(5):103-109.