前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的程序设计语言主题范文,仅供参考,欢迎阅读并收藏。
关键词:多媒体教学 板书教学 高效性 特殊性 程序设计语言
当前多媒体教学已经成为高校普遍的课堂教学方式,PPT等广泛地代替了手写板书。尤其是对于程序设计语言类(如C语言、FORTRAN语言等)课程,因其自身特点几乎统一采用多媒体教学,且在各级学校对新教师必须采取板书教学的规定也将该类课程排除在外。然而,板书仍然是不可或缺的重要教学形式,在程序设计语言课中如何适时、适量、适形地采用板书教学,使其与多媒体教学相得益彰,以取得更优的教学效果?结合本人的教学经验,以C语言教学实践为例浅析该类课程的板书教学的理论与方法。
1.多媒体教学在程序设计语言课中的优越性
1.1程序设计语言课程主要以大量实际程序实例来分析基本语法规则、程序设计方法及相关算法,由此在PPT上显示或者直接打开程序语言软件操作,都可直观、形象、高效的将应用实例代码演示出来,降低了教师工作量、提高了教学效率。
1.2利用投影仪演示程序可直接在课堂上进行代码编写、调试,由此可便可辅助教师有意设计错误,先让学生看代码找错误,再运行程序查看错误信息。这种直观具体教学方式可更好地培养学生程序调试能力。
1.3利用多媒体可以扩大课堂信息量,可将复杂的算法及程序设计思路以较为直观的动画形式演示,提高了教学的趣味性和可读性,辅助学生理解知识要点,同时激发学生的学习兴趣、学习积极性,活跃课堂气氛。
多媒体在程序设计语言课中的这些优势是板书教学无法替代的。
2.多媒体教学在程序设计语言课中的局限性
多媒体教学具有以上直观、形象、高效特点,但全程采用多媒体教学,也存在一定局限性,主要表现如下:
2.1多媒体课件教学在使用时重技术,轻情感,缺少人文关怀
在多媒体课件教学中,教师忽视课内教学的反馈,忽视学生与教师、学生与学生之间的情感交流,教师在鼠标、讲台之间不停忙碌,师生之间缺少必要的交流与互动,良好的教学效果难以实现。
2.2在程序设计语言课的授课过程中,前后的内容是互相关联的,对新知识的理解和掌握常常需要以前面的内容为基础
例如:在后期函数、结构体等章节的教学过程中,随着演示程序的复杂化,会不断应用到前面学到的基本数据结构、程序控制语句等知识点,如果不利用板书,只是口头回忆前面的讲授内容,学生的接受效果会差一些,尤其对前面内容掌握不好的学生来说,就更加吃力。
2.3 “眼过千遍,不如手过一遍”
教师在播放课件时,画面来回跳转,学生的思路跳跃式行进,连贯的思维过程常常会被打断,难以及时做好笔记。程序设计语言的一些代码、程序和算法等知识点是要求学生必须掌握的,但在多媒体教学时,学生一般想拷贝老师制作好的PPT而不再做课堂笔记,导致上课时注意力不集中、没听懂,影响学生的听课效果。
3.板书教学在程序设计语言课程中的特殊性
与其他课程相比,程序设计语言类课程因其自身特点几乎统一采用多媒体教学,板书在此类课程中的应用也具有一定的特殊性。
3.1授课方式灵活性
区别与常规技术课程,程序设计语言是以程序代码及程序设计流程为主要授课载体,授课过程会不可避免的涉及到大量程序代码和设计逻辑,板书的应用就显示出灵活性,它既可以以逻辑提纲式点拨、引导学生编程思路;也可逐条书写重点程序代码,加深学生对层序结构及程序语句的领悟。
3.2授课过程互动性
程序设计语言类课程由于其自身特点,每节课均会涉及大量复杂的程序设计逻辑,需要高度精力投入,然而枯燥的程序代码往往容易诱发学生注意力分散,跟不上进度,尤其是在多媒体教学中,更是如此。而板书教学,可自由灵活控制授课进度,随意书写关键点,适时的制造包袱,不断地进行互动,提高学生听课积极性和注意力。
3.3授课容量局限性
毕竟程序设计代码是程序设计语言类课程的主体,尤其课程进行到后期,每节课需要书写大量程序示例,如果单靠板书就会出现若书写过多就耽误授课进度,若授课过少就会影响学生对前后知识的连贯学习,因此板书在此类课程授课中具有内容容量的局限性。
4.程序设计语言课板书教学方法浅析
现以程序设计语言C为例,浅析板书在该课程中的应用方法。
4.1全板书授课
该种授课方式适合基本概况、算法、数据类型、运算符与表达式的教学。
该些章节是这门课程的前三章,是学生刚刚接触该门课程的开头,且其知识点琐碎,相关性差,暂无大批程序语句出现。授课过程可按照进度将所有知识点总结提炼,形成框架,且在授课过程中注重在提纲之外在空闲板面进行知识点举例。
比如在正反码的书写过程中,可将书写的步骤写在板面左边知识点大纲上,在板书右边书写相应的二进制数字代码,这样不仅可帮助学生掌握重点,也可促进学生对该知识点的深入领悟。
4.2板书为纲辅助图片投影或简单ppt投影
该种授课方式适合程序结构语言控制部分章节。
该些章节是这门课的关键中间环节,需要学生注意力集中,领悟控制语句对程序运行顺序的控制规律。授课过程可将关键的核心控制语句及控制定义以提纲形式书写在板面上,并在空白处辅助简单程序的书写和讲解,其后为更好的让学生理解、掌握,可将一起讨论写好的程序投影出来,这样在后续讲解过程中可随时回顾。
比如在if选择语句嵌套的讲解中,可在提纲部分书写关键的嵌套语句和程序运行方式,且在书写每一条关键语句时候都在板书上书写一个具体实例,以帮助学生理解,书写完每一个示例都将其投影出来并保持住,直至该知识点讲授完毕,再一起回顾书写的知识点提纲、投影的示例代码(也是书写过的),这样既可把握住学生兴趣,也可促进知识点的整体把握。
4.3以板书为纲辅助ppt程序书写及实际程序演示
该种方法适合后续数组、函数、指针等复杂的程序设计章节学习。
该些章节既涉及到新知识的学习,又需要前面知识点的支撑,是一个复杂、综合的学习过程。授课过程中先将需要学习的新知识点以提纲形式随着讲解进度将关键知识点书写上,配合ppt将程序逐步演示出来,同时穿插关键语句的板书书写讲解,最后将书写的程序实际演示运行结果,以此可即可帮助学生把握知识点主体框架,又可清楚程序全貌,同时还能掌握关键点的书写规律,提高学习效果。
比如在讲授二维数组的规定输出时候,可将二维数组的控制规律以提纲形式书写在板书上,配合板书图形分析,进而用ppt逐步演示程序书写过程,并对控制数组输出地关键语句在板书上逐条讲解书写,最后在实际软件中演示运行结果,而后可适当变化输出要求,一块讨论书写关键语句,此时就可将讨论出的语句直接书写在电脑程序代码上,运行显示结果。如此即可帮助学生透彻的掌握重点,又可有力激发学生兴趣,提高学生注意力。
5.结论
在当今信息化时代,教师在开展教学工作时,应当重视多媒体教学方式,尤其是程序设计语言类课程,但还应当充分发挥板书教学的优点,正确的认识板书教学的高效性和特殊性,适时针对讲授内容开展灵活多变的板书与多媒体相结合的教学方式,各取所长,优势互补,才能取得更好的教学效果。
参考文献:
[1]李远辉.课堂板书及其在多媒体教学中的运用[J].科技咨询,2010,(24):203.
[2]李蓓.程序设计语言课教学方法的探讨[J].计算机与网络,2010:185-188.
关键词:程序设计语言课程;教学方法;能力培养;每天一例
中图分类号:G64 文献标识码:B
文章编号:1672-5913 (2007) 21-0031-03
前言
程序设计语言课程已经成为高等院校的基础课程。它不但是计算机专业学生的必修课程,而且是非计算机专业的必修课程。学好本课程,有利于学生深入地理解和掌握计算机技术,更好地使用计算机。
本文是我在从事程序设计语言教学过程中的经验教训和心得体会的总结。目的是引发一些思考和讨论,从而在程序设计语言课程教学上探索出更有效的手段和方法。
我讲授的是C语言,授课对象是非计算机专业的学生。教材选用的是谭浩强教授编著的《C程序设计(第三版)》。本文给出的观点和方法不限于C语言教学范畴,尽管部分例子采用了C语言编写的程序代码。这些观点和方法可以推广应用至各类程序设计语言课程教学中。
我的观点和方法概括如下:
衡量课程学得好坏的标准有两条:(1) 会读程序;(2) 能写程序解决问题。
课程内容须少而精。
课堂教学要多交待背景、多举例和多提问。
强调课后复习,采取措施进行督促。
强化实践环节,及时解决学生们遇到的问题。
获取反馈,跟踪学生的课程学习状况。
1衡量标准
计算机程序设计课程学得好与坏,就看这个学生能否做到两件事:读程序和写程序。“会读程序”是前提,会写程序并且写出好程序是最终目的。诚如谭浩强教授所言:衡量这门课学习的好坏,不是看你“知不知道”,而是“会不会干”。
会读程序不是一件容易的事。应该要求学生读“透”程序――把程序语句背后的含义读出来。举个例子来说,程序清单1的功能是把一个二维数组行和列互换,存到另一个二维数组中。
程序清单1:
#include
void main() {
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int b[3][2], i, j;
printf("数组a: \n");
for(i=0; i
for(j=0; j
printf("%5d", a[i][j]);
b[j][i] = a[i][j];
}
printf("\n");
}
printf("数组b: \n");
for(i=0; i
for(j=0; j
printf("%5d", b[i][j]);
printf("\n");
}
}
上述程序是简单的。读透它不仅仅是给出程序运行结果,而应该读出语句背后的含义。例如以下程序段的含义是把数组a的一行转换成数组b的一列。由此,我们也可以读出变量i代表的是数组a的行号,数组b的列号。行号/列号正是变量i背后的含义。
程序清单2:
for(j=0; j
printf("%5d", a[i][j]);
b[j][i] = a[i][j];
}
能写程序解决问题是更高一层的要求。这一能力必须通过不断的练习来获得。这主要依靠课程实践环节。需要注意的是,写程序前须要求学生复习知识点和多读程序示例,否则学生在上机编程中会遇到相当多的低级错误,效率大打折扣。
2课程内容
课程内容要少而精。课程应当聚焦于基础概念和核心知识点,不宜贪多。讲一门程序设计语言,只要提供学生进一步自学的基础就可以了。
相信很多人认同这个观点,只是操作起来就走样。课程设计者也许是想多塞些知识给学生,或者在他/她眼里任何一个知识点都是那么重要。殊不知这带来以下问题:(1)教师赶进度,减少对隐藏在背后的知识的详细讲解。在“课堂教学方法”一节会提到,这些背后的知识是掌握某些课程知识的前提。(2)学生消化不了。不但多塞的内容掌握不了,连基本的都学得不扎实。(3)给学生造成课程“难”的印象。一旦提不起兴趣,积极性和主动性就得不到发挥。这一后果比少学一点更严重。
授课者应该思考向学生提供什么。举例来讲,C语言课程不见得要逐一讲授众多字符串操作函数和文件操作函数的用法,而应该是举例讲解,进而归结出库函数的使用方法。重要的是掌握在阅读函数原型和有关说明后能够正确使用函数的能力,而不是熟记大量函数的用法。逐一讲解函数的用法既耗时又不能解决根本。
课程内容少而精是合理的。对以后从事计算机专业的学生而言,安排内容再多也不足以应付将来的工作岗位的知识需求。对以后不从事计算机专业的学生而言,内容多了反而是浪费。课程内容多了,学生疲于吞吃新知识,无心也无力形成对计算机程序设计语言的深层次理解,无法做到融会贯通。而融会贯通、学以致用才是课程的真谛。
就《C程序设计(第三版)》而言,如果安排的学时数是48,那么内容应当作较大幅的删减。
3课堂教学方法
课堂教学要多交待背景。其中有的是知识背景,而有的是应用背景。比如,课程开始有必要交待程序编制过程,由此学生们能够认识到源程序和二进制指令的关系。而了解内存的结构模型对于理解变量地址和指针等概念是必需的。更早的课程应该讲解过相关知识,不过在课程开始作一简要回顾还是值得的。介绍应用背景可以引起学生们的思考。比如讲解链表时,恰当的应用背景明显有助于理解。我在课堂上使用的实例是超市货品管理软件维护的库存不足货品列表――一个动态变化的集合。首先分析指出采用静态数组或动态数组来维护库存不足货品列表所存在的问题,接着告诉学生链表是解决问题的好办法。在这一场景下,链表结点、插入操作、删除操作和遍历操作等都是有具体含义的。待全部知识内容讲解完毕,回头再总结问题是如何解决的。如此能够避免抽象和枯燥,使学生更容易接受相关知识,甚至学以致用。
现在有一个不好的倾向,就是教材或课堂过于重视抽象化的知识,忽视应用背景。数据结构的教材是这一倾向的代表。这对入门阶段的学生来讲是不适宜的,因为学生难以走进所涉及的抽象世界,最终表现为不知道在讲什么。所以在课堂上应当交待背景以化抽象为具体,而后通过归纳从具体走向抽象。
对程序设计语言课而言,在课堂上多举例,也就是多展示源程序的示例是好做法。有些概念或知识点,用文字费力描述也达不到效果,用示例代码就容易说清楚。
课堂上应当多提问,随机抽取学生回答问题。这一方面能够促使学生集中注意力;另一方面能够活跃课堂气氛。随机抽取学生回答问题能够提供一些反馈信息,而且大部分学生是不会主动站起来回答的,除非被授课者叫到。
4课后复习
应该要求学生们课后及时复习,巩固每一次课所学的知识内容。因为一旦积累了问题,到后面可能连课都听不懂。不及时复习又会影响到上机实践的效率和效果。
光倡议是不起作用的。我在第一次课就提出了要求,可是学生们动静不大。有必要采取措施来督促学生们做好课后复习工作。我采用的办法是在一次课的前5到10分钟内随机挑选两位学生上讲台讲解与上一次课程内容相关的示例程序。这一措施实施后,收效比较明显。
另一个值得考虑的举措是把班级分组,8到10人一组。每一组推选一名组长,职责是在课余以及上机实验过程中为本组同学解答疑问。期末评分上给予组长适当奖励。
5课程实践
每一位授课者都知道程序设计语言课离不开上机实践。课程进行同时也会安排上机练习时间。要保证既有效率又有效果,须注意以下几点。
制定合适的上机实验计划。实验计划宜与课堂教学进度同步,即把实验任务分成多个组,每一个组分别针对主要的知识体(如分支语句、循环语句和函数)。一个任务组包含由浅至深的程序题。
程序题的难度不宜过高。上机实验的中心目标是掌握程序设计语言的使用。程序题难度主要在于算法复杂程度。难度过高的题目导致学生们花费大量时间去寻求解题思路。这与中心目标不符。提高寻求解题思路的能力应当是其他课程的任务,对程序设计语言课程而言是次要的。当然,程序题也要有一定的挑战性,以及趣味性。
课堂上应该讲解算法是什么和如何写算法。尽管算法不是课程的中心内容,不过学生们在上机实验过程中遇到的大部分问题归因于算法。只要帮助学生理清算法,问题通常迎刃而解。因此,应当利用恰当比例的时间开展必要的算法训练。
督促学生养成良好的编程习惯。这主要涉及两方面。一方面是“先算法后编程”,可以不把算法描述成文,但在心里必须清楚明了。另一方面是注意编程风格,值得强调重点是缩进和取名。可以考虑利用网络论坛公开展示学生写的好程序。
6学习状况跟踪
我在教学过程中获得了一条教训:切忌自我感觉良好。我感觉良好的原因在于:(1)自信能够把课程内容讲清楚;(2)课堂上学生反应颇佳,向大家发出的提问都能得到较满意的答案。这种良好感觉在一次小测验后完全消失。我认识到,我以前的良好感觉是建立在主观性的反馈之上的,甚至加上了自己的倾向。准确了解学生学习状况离不开客观性的反馈。值得借鉴的具体做法是:
向随机挑选的学生提问,并禁止其他同学的“协助”。
批改适当比例的作业。
一两次认真组织的小测验。小测验可以是笔试也可以是机试。这也能让学生了解自己的学习状况。
7总结
本文是我在C语言教学过程中所获得的经验教训和心得体会的总结。它不是一种教学方法的系统论述,而是一些零碎的观点和方法的讨论。我想再一次强调的一个观点是“课程内容须少而精”。课程设计者应当掌握好“度”。就我个人来看,目前课程内容过多是普遍现象,造成学生囫囵吞枣地学习,为考试记忆知识,无法达到融会贯通。这不正是造成“考完了就还给老师”这一状况的原因吗?
收稿日期:2007-06-26
关键词:课程改革;项目教学;准职业人
中图分类号:G642文献标识码:A文章编号:1009-3044(2011)15-3638-02
Computer Programming Language of the Curriculum Reform
ZHU Geng-shen
(Linhai Secondary Vocational and Technical Schools, Linhai 317000, China)
Abstract: Improve their computer knowledge and practical ability for students to become quasi-professional personnel, vocational schools is the fundamental task of computer teaching.I will Beida Jade Bird programming language "JavaScript" curriculum used in teaching the theory and practice of computer operations, the design of the materials lead me to think about curriculum reform in vocational computer.Beida Jade Bird programming language a "project-oriented" curriculum design, curriculum projects all around the complete step by step, the students in the learning process, but also completed a practical project development, the design is not only recognized the studentsknow the law can fully mobilize the students interest in learning, improve their self-learning ability and the ability to solve practical problems, training of students and better able to adapt to current market demand for skilled software professionals.
Key words: curriculum reform; project teaching; quasi-professional person
目前中职计算机课程体系及课程内容设计存在着许多问题。在我国中职计算机教育中, 专业课程开设不大合理,教材内容设计不与实际应用相结合,程序设计课程教学内容要么过于简单和笼统,要么过于复杂和高深,导致许多中职学生对编程学习产生严重的抵抗情绪,出现厌学、弃学现象,所学的部分程序设计知识和操作技能,对学生毕业后进入社会后所从事的职业没有任何用处,而真正许多实用性强、专业性强的课程和计算机应用软件却又没有学到。因此,我们必须从以下几方面对中职计算机课程体系及课程内容进程大力改革。
1 明确学生的培养目标
原来中职学生的培养目标,主要以掌握教材统一指定的理论知识与基本技能为主,学生是否毕业以统考、会考成绩决定。毕业后,因培养目标、课程内容、操作技能不能与实际所需对口,导致很多学生难以找到适合自己的工作岗位。
从现在中职的培养目标及定位来说,中职学生应该是社会所需要的拥有一般化专业知识与中级或以上实践操作技能的准职业人,而不是像大学本科生一样,拥有很深厚的理论知识与专业技能。这就意味着中职计算机专业的学生,他们毕业后能在专业对口的普通岗位上找到适合自己的工作,而不是去搞科研或编写大型的计算机软件。如:机关、企事业中计算机网络的管理、信息处理的多媒体设计制作、广告影像行业的图形图像处理、设计行业的计算机辅助设计、办公自动化中的设备应用和公文处理等,都缺少有一定技术水平的准职业人才。因此,在改革中职计算机专业的课程体系与课程内容之前,不能盲目开展,应做好充分的调查分析工作,从计算机专业细化的开设方向到实际应用,必须紧贴现实生活,最大可能的保持与信息技术发展趋势、社会的用人需求同步。
北大青鸟在开设《JavaScript》课程之前,做了大量的企业调研与社会用人需求分析。调研结果显示,中国近几年互联网行业的高速发展,使越来越多的企业认识到网站运营以及网站推广的重要性,很多企业目前需要掌握一定的系统维护知识、网页设计制作知识和网站维护相关知识的复合型技术人才。进一步分析了解这些岗位应具备的IT技能,从而设计出适应于中职学生的计算机课程体系,使学生所学知识具有很强的实用性,保证学生能够在就业市场中具备竞争力,能够满足社会对人才的需求。结合目前中职学生的学习特点,将北大青鸟计算机专业学生的目标定位在培养网站运营人员,并对网站运营岗位从计算机技术层面划分为三部分:除互联网公司外的所有企业的网站维护员(涉及到JavaScript知识);网站制作公司的网页设计师(涉及到JavaScript知识);中小企业网络维护人员。
2 注重激发学生的学习积极性、培养学生的学习兴趣
兴趣是学习的内在动力,是学生自学最好的老师。原来的中职教程在内容设置方面,以理论居多,许多内容均滞后于时代的发展,涉及生活实际的知识、技能较少,涉及到实际项目的内容更少;理论作业偏多,实际操作较少;内容排版呆板,例图、效果图很少。
论文摘要:提高学生计算机知识水平和实践动手能力,让学生成为社会的准职业人才,是中职学校计算机教学的根本任务。将北大青鸟程序设计语言《JavaScript》课程应用于计算机理论教学与实践操作,其教材的设计引发我对中职计算机课改的深思。北大青鸟程序设计语言采用“以项目为导向”的课程设计方法,课程内容全部围绕完整的项目逐步进行,学生在学习过程中,同时也完成了实用性的项目开发,其设计不仅符合学生的认知规律,能够充分调动学生的学习兴趣,提高学生的自学能力和解决实际问题的能力,培养的学生也更能适应当前市场对技能型软件人才的需求。
目前中职计算机课程体系及课程内容设计存在着许多问题。在我国中职计算机教育中, 专业课程开设不大合理,教材内容设计不与实际应用相结合,程序设计课程教学内容要么过于简单和笼统,要么过于复杂和高深,导致许多中职学生对编程学习产生严重的抵抗情绪,出现厌学、弃学现象,所学的部分程序设计知识和操作技能,对学生毕业后进入社会后所从事的职业没有任何用处,而真正许多实用性强、专业性强的课程和计算机应用软件却又没有学到。因此,我们必须从以下几方面对中职计算机课程体系及课程内容进程大力改革。
1 明确学生的培养目标
原来中职学生的培养目标,主要以掌握教材统一指定的理论知识与基本技能为主,学生是否毕业以统考、会考成绩决定。毕业后,因培养目标、课程内容、操作技能不能与实际所需对口,导致很多学生难以找到适合自己的工作岗位。
从现在中职的培养目标及定位来说,中职学生应该是社会所需要的拥有一般化专业知识与中级或以上实践操作技能的准职业人,而不是像大学本科生一样,拥有很深厚的理论知识与专业技能。这就意味着中职计算机专业的学生,他们毕业后能在专业对口的普通岗位上找到适合自己的工作,而不是去搞科研或编写大型的计算机软件。如:机关、企事业中计算机网络的管理、信息处理的多媒体设计制作、广告影像行业的图形图像处理、设计行业的计算机辅助设计、办公自动化中的设备应用和公文处理等,都缺少有一定技术水平的准职业人才。因此,在改革中职计算机专业的课程体系与课程内容之前,不能盲目开展,应做好充分的调查分析工作,从计算机专业细化的开设方向到实际应用,必须紧贴现实生活,最大可能的保持与信息技术发展趋势、社会的用人需求同步。
北大青鸟在开设《JavaScript》课程之前,做了大量的企业调研与社会用人需求分析。调研结果显示,中国近几年互联网行业的高速发展,使越来越多的企业认识到网站运营以及网站推广的重要性,很多企业目前需要掌握一定的系统维护知识、网页设计制作知识和网站维护相关知识的复合型技术人才。进一步分析了解这些岗位应具备的IT技能,从而设计出适应于中职学生的计算机课程体系,使学生所学知识具有很强的实用性,保证学生能够在就业市场中具备竞争力,能够满足社会对人才的需求。结合目前中职学生的学习特点,将北大青鸟计算机专业学生的目标定位在培养网站运营人员,并对网站运营岗位从计算机技术层面划分为三部分:除互联网公司外的所有企业的网站维护员(涉及到JavaScript知识);网站制作公司的网页设计师(涉及到JavaScript知识);中小企业网络维护人员。
2 注重激发学生的学习积极性、培养学生的学习兴趣
兴趣是学习的内在动力,是学生自学最好的老师。原来的中职教程在内容设置方面,以理论居多,许多内容均滞后于时代的发展,涉及生活实际的知识、技能较少,涉及到实际项目的内容更少;理论作业偏多,实际操作较少;内容排版呆板,例图、效果图很少。
中职教育的对象多是学习上的后进生,学习主动意识和学习能力较低,接受新方法能力不强,在学习如果遇到较大困难或受到较大挫折,会打击其学习的自信心与积极性,很可能放弃对专业课程的学习。我们在设置课程内容时,先设计内容的趣味性与生活实用性,让学生快乐地学习专业理论知识与技能操作,通过设计来源于实际的案例或项目,让学生掌握实用的知识技能。
北大青鸟在设计课程内容时,非常注重理论与案例、项目的设计与联系。以《JavaScript》为例,教材内容围绕一个完整的现实项目进行合理设计。在该教材中,每一章节的标题名称,从学生第一感观上就能激发其学习兴趣。如:第1章 制作页面日期和排行榜的显示特效;第2章 制作随鼠标改变背景的特效;第3章 制作页面窗口特效 ……。在每章的各小节中均设计一个理论演示案例,同时针对每个演示案例,安排相应的理论知识点,对超出本演示案例的其他理论知识,不予考虑。如:1.1制作演示案例1-第一个嵌入JavaScript脚本的网页;1.2制作演示案例2-显示日期;1.3制作演示案例3-显示星期几……。在每章节的后面,设计了上机练部分,以巩固学生的理论,提高学生的实际操作技能。如第1章上机实练部分为:实练案例1-随机显示图片广告;实练案例2-评比星级商铺;实练案例3-北京奥运会倒计时……。在上机实练部分的后面,设计了作业。作业层次分明、由易到难,针对学生自身掌握的知识技能情况的不同,对完成作业的要求也不同。无论是理论案例,实练案例还是课后作业,均配有效果图与分步操作图文讲述,在兴趣的带动下,学生通过自学就能完成简单的学习任务。整个教材内容中的每个理论案例、上机实练案例、课后作业,设计安排合理,难易适度,更重要的是我们学生在现实生活中,可以很具体地看到它们应用于网站页面的制作设计,很大程度上激发了学生的求知欲与学习兴趣。本人将该教材应用于中职计算机软件班,计算机网络班的教学,两年来学生的学习兴趣浓,知识技能掌握好。
3 注重学生实践知识、技能的培养,将学生培养成社会所需的准职业人
中职学生的就业现状:许多的中职毕业生到单位工作,因原来所学知识与实际脱节,90%学生得从头开始学习相应的知识与技能,给用人单位带来时间、金钱上的极大浪费,甚至于失去就业的机会。
信息社会发展速度,社会对IT人才也不断提出新的要求。我们在开设课程前应该研究企业、 用人单位对IT人才的需求现状,分析对从业人员的技术要求,对计算机课程内容进行合理设计。在中职教学中我们提倡项目教学法,那么教材中所使用的项目一定要有很强的实用性,且与实际相结合。在课程设计中应以项目为导向,让学生在学习过程中边学习边做项目,在做项目的过程中掌握相关知识及项目的开发过程,从而培养学生的动手能力和积累实践经验,以适应实际工作的需要。
北大青鸟对IT用人需求进行了大量的调查研究,选择具有实用价值、与信息技术发展趋势相符的项目去开设相应课程。其课程体系采用“以项目为导向”的课程设计方法,课程内容全部围绕着完整的项目逐步进行,学生在学习过程中,也同时完成了实用性项目开发。在《JavaScript》课程中,每一章节所使用的理论演示案例、上机实练案例、课后作业,均是一个大项目中的某一组成部分。每一个案例是从整个项目分割出来的小项目,而且有一定的先后顺序与难易梯度,由浅入深、循序渐进,先通过案例介绍基础知识和基本操作,给学生打好基础,然后通过大量的项目演练提高学生的熟练度和项目能力,充分调动学生学习兴趣和学习积极性,直至学生掌握必备的专业知识和技能,达到培养目标,让学生成为社会所需的准职业人。实际应用中,因为每个案例的制作,均涉及到项目中的某项内容,通过章节内容的逐步学习,学生将掌握整个项目内容所涉及到的理论知识与操作技能,理所当然能完成整个项目的制作。另外,由于所开设的项目具有实用价值,学生毕业后可以拿自己做好的项目去企业、用人单位去应聘,减少很多的应聘环节,毫无疑问这样的学生具有很强的市场竞争力,很容易就找到与之专业对口的工作。本人将该教材应用到中职计算机软件班与计算机网络班,几乎所有学生均能掌握所学的知识与技能,制作完成相应的项目。
4 大力改进教学法
由于教材内容以项目为导向进行的课程设计,所以我们应对教学方法进行改进。在多年的北大青鸟《JavaScript》教学中,本人总结如下经验(以作借鉴):
1) 在每门课程的开始,由教师先讲解课程目标,然后介绍在课程中要完成的项目;2) 为了让学生能够了解项目的具体功能,让学生自己操作或是运行项目;3) 在后序的课程中,教师讲解项目所涉及的知识、技能点;4) 以小组为单位,让学生分阶段上机进行项目开发与作业的完成,期间老师辅导答疑;5) 在课程教、学、做完成之后,即可完成整个项目;6)小组互评与老师点评相结合,总结提高;7) 完成好的项目让学生保存好,做为实习、找工作、就业的宝贵材料之一。
培养学生自学能力与团结合协作的精神。IT行业及其应用技术发展迅猛,课堂上传授的知识不可能解决学生在工作中遇到的所有问题。因此,培养学生的自学能力就显得尤为重要。课程体系应始终贯穿这一思想,使学生意识到自学的重要性,并且教会学生如何去学习。在《JavaScript》实际教学中,指导学生进行项目开发时,每当遇到问题时,总是积极鼓励学生自行寻找解决方案,从而提高学生的学习自信心和成就感,培养自学能力,使学生终生受益。同时,通过对学生进行一些小的团队训练,强调沟通能力和团队合作精神在项目开发和实际工作中的重要性,提高学生的社交能力、沟通能力和团队合作精神。
信息技术的发展可以说是日新月异,教育也应顺应时代的变化,培养社会所需人才。所以,从中职教育的根本任务为出发点,为把中职学生培养成为社会所需的准职业人,我们急需对中职计算机程序设计课程的内容进行改革更新。
参考文献:
[1] 娄毓满.适应课程改革发展趋势 提高教师教学实践能力[J].安顺师范高等专科学校学报:综合版,2006(2).
[2] 贺平.项目教学法的实践探索[J].中国职业技术教育,2006(22).
关键词:MOOC;课程设计;概念图;学习目标;主动;评价
1、MOOC的兴起
2012年是大规模网络公开课程(MassiveOpen Online Course,MOOC)元年,MOOC开始在美国兴起,全球知名大学纷纷加入到MOOC浪潮中,中国的知名高校也不例外。与早期功能单一的在线教育不同,MOOC几乎可以完成传统大学的一切,包括教师按进度授课、学生完成作业及考试乃至为学生颁发相应证书或文凭等。
这种颠覆式的革命使人们越来越意识到MOOC将对传统的大学教育产生巨大冲击。在什么都全球化的今天,MOOC也将教育推上了全球化的舞台,这种变化带来的好处显而易见,最明显的一个特征是打破了教育壁垒,令教育资源平等化。这意味着在世界的任何一个角落,只要有网络就可以接受世界上最好大学的课程教育。
国内的教育家已经认识到MOOC带来的巨大挑战与机遇,国内大学也已经迅速行动起来,努力避免沦为少数国内外一流大学的机构。作为大学教师,我们已经深切感受到前所未有的紧迫感,并开始思考如何在MOOC革命的冲击下设计和变革课程体系。
尽管MOOC不仅有视频辅导材料还有互动评估系统,大规模地冲击着校园教育,但是质疑的声音仍然不绝于耳:有人提出这种MOOC的数字化教育并非等同于个性化学习,会导致教育的单一化、一致化和标准化,培养出的是思想僵化并只追求肤浅、通用知识的学生;还有人提出MOOC方式会让学生缺乏压力和动力,因为学生可以多次选修一门课程,直到通过为止。然而,所有的这些质疑都可以通过校园教育完成和弥补。“精品”的教学内容和“明星”式的教师、个性化的教学和及时的互动是MOOC背景下的必然趋势。新兴的教学模式和教学理念大量涌现,如研讨型教学、翻转课堂、先解决问题后解释、传授学习方法和思维方法等。
计算机程序设计语言课程如C语言课程,是一门受众面广、实用性强的课程,由于每个知识点相对简单和完整,因此它也是适合采用MOOC教学的计算机类课程之一。在新模式和理念的指导下,我们以程序设计语言特别是C语言为案例,对MOOC环境下课程的设计进行一些初步探索和尝试。
2、课程设计与实施
为了达到更好的教学效果,我们需要进行充分的课程设计,为教师和学生制订课程安排,对使用课程资料的整个活动过程进行描述。课程设计在教学过程中需要不断修正和改进,设计的内容包括活动或反馈的要点、指导或讨论的时间、调动热情的方法等。
教学过程应该包含几个阶段一直是教育工作者不断研究和总结的问题,目前比较公认的是BOPPPS模型,该模型将教学过程划分为引入(Bridge-in)、目标(0bjective)、预评价(Pre.assessment)、参与学习(Participatory learning)、后评价(Post-assessment)和小结(Summary)6个部分,简称为BOPPPS。
为了更好地实施BOPPPS模型,我们围绕授课对象进行课程设计,需要考虑概念图、学习目标、主动学习以及评价4个要素。其中,概念图帮助构建BOPPPS模型中的引入(B),建立课程之间的关系;学习目标与BOPPPS模型中的目标(0)紧密相关;主动学习是为了更好地实施参与学习(P);最后的评价体现在BOPPPS模型中的预评价(P)、后评价(P)和小结(S)。
可见,概念图、学习目标、主动学习和评价4个要素贯穿课程实施过程中BOPPPS模型的始终,是增强教学效果和提高教学水平的重要保证。
3、适应MOOC的c语言课程设计
3.1 概念图
概念图是进行课程设计的基础,反映课程中各个知识点之间的组织关系。构建概念图使得教师在进行课程设计时,能够更好地梳理课程脉络,突出重点内容,从而指导课程的进度安排。
教师在构建概念图时,首先需要挑选课程内容中的关键知识点,形成概念并将其罗列出来,接着以层次、网络等方式将这些概念关联起来,形成概念图。在课程教学过程中,需要不断地对这些概念进行必要的评价和修改,并形成新的概念图。对同一课程而言,不同教师有不同的内容组织方法和教学方法,因此会有不同的概念图。即使是同一教师,随着认识的深入和时间的推移,也会令概念图随之变化。
对c语言课程而言,课程的关键概念或知识点比较明确,如语句、控制结构、顺序结构、选择结构、循环结构、函数、递归函数、数组、指针、引用、结构、if-else、switch、for、while等,需要先将其罗列出来。概念有不同的层次和范围,即概念之间有隶属或关联关系,因此需要梳理这些概念之间的关系并建立概念图,我们以控制结构章节的概念子图为例。控制结构概念图如图1所示。
容易看出,在控制结构这一章中,知识点以层次式结构组织。当然,概念图不都是层次式结构,根据不同的理解能够构建出不同结构的概念图,教师在授课过程中可以根据学生的反馈进行调整和修改。
3.2 学习目标
学习目标确定了期望学习者通过课程学习在一定条件下可观察或可量化的新的知识、技能及情感。制订这种定量化的学习目标还有利于后期的课程设计评价。
课程的学习目标通常能够划分为不同的层次。2005年,Bloom按照人的认知层次将学习目标由低到高逐渐划分为记忆(remembering)、理解(understanding)、应用(applying)、分析(analyzing)、评估(evaluating)、创新(creating)6个层次。Bloom建议针对课程内容,在上述6个层次中定量地制订相应的学习目标,提高可操作性。
学习目标有一定的表述规范,1962年,Mager提出制订学习目标应包含3个要素:成效(学生能够完成什么)、条件(何时/何地学生能够完成)和标准(学生能够做到的程度)。上述3个要素必须具体、可度量、明确而清晰,为的是便于教师实施和操作。
结合Bloom和Mager的理论,科学的方法应是在Bloom的不同层次用Mager规范描述和制订学习目标。以控制结构章节为例制订的学习目标见表l,其中认知层次的学习目标成效是学生能够罗列出控制结构的常用语句,条件是当问到控制结构章节内容时,标准是语句罗列的完整程度以及正确与否。在明确了不同层次的学习目标后,教师和学生可以根据不同层次的需要分别制订各自的主动学习方案。
3.3 主动学习
1978年,诺贝尔经济学奖得主赫伯特西蒙说过,“实践与思考是学生学到知识的途径,也是唯一的途径”,这一点对于c语言课程尤为重要。学生想要具备相关领域中的计算机应用开发能力以及利用计算机分析和解决问题的意识,必须主动学习并动手实践。当学生学会自己对问题进行解释,而不是被动地听教师讲解时,学习效果会好很多。
主动学习是指学生在课堂上主动参与与课程相关的活动,而不仅仅是被动地看、听和记笔记。主动学习过程是以学生为主体的教学过程,是以激发学生的兴趣为目标,强调实践和思考的教学方式。学生更多的是通过自主阅读、书写、讨论、实验等方式达到学习目的。
课堂上的互动是教师在授课过程中促使学生主动学习的主要方式之一。课程中互动环节的设计符合大脑工作规律,John Medina博士针对人类大脑进行了一系列研究,他在注意力方面指出两条规律和两个限制:情感刺激规律和要点层次式规律以及单任务和10分钟限制。因此,互动不仅能够充分调动学生的课堂情绪,而且能够将课堂划分成多个短时(10分钟)的子单元,更好地提高教学效率。互动的方式很多,如可以回答问题、画概念图、作研讨报告、讨论、辩论、案例教学、头脑风暴、课堂练习、问卷调查等,其主旨就是要让学生与教师互动,达到激发兴趣并主动参与的目的。
我们提出一种新的教学模式,旨在设计课堂教学与MOOC相结合的主动学习方案,因此提出“翻转课堂”的学习模式:学生在课下通过MOOC视频学习新的知识或内容,课堂上进行讨论、练习或评述等。在具体操作时,教师需要给出具体的讨论内容和课程进度并将学生编配分组。考虑到人脑注意力的10分钟规律,我们将50分钟的课程划分成5个阶段,平均以10分钟为一个阶段进入不同的教学流程。每进入一个阶段,相当于对大脑进行一次新的刺激,以引起新的兴奋点和注意力。
具体来讲,学生可以在下一次上课之前自行观看MOOC视频和预习书本内容。第一节课的5个阶段如下:(1)由学生讲心得,可以画出概念图;(2)由其他组的学生对其进行讲评;(3)全体学生参与讨论,互相提问并回答;(4)教师根据讨论结果进行总结和讲评;(5)再由另一组学生讲评上次布置的作业,然后教师布置新的作业。第二节课主要以实际动手练习为主,教师布置课堂练习并进行实践性指导,学生可以随时提问,由教师或教辅人员进行一对一指导,在课程的最后10分钟,教师进行实践讲评和答疑。需要特别强调的是,每次的课堂表现都计人课程的平时成绩中。
3.4 评价
评价是课程实施过程中阶段性的量化考核,用以反映前一阶段的教学效果。前期对于学习目标的量化,就是为了能够准确而有效地进行评价¨们,因此教学评价与制订的学习目标是紧密结合的。不同于传统考试,评价的方式和目的更加多样化。评价能够为学生在学习过程中提供反馈,也能够为教师获得学生对教学方法的反馈。这些反馈能够帮助教师及时调整课程内容和进度,为顺利完成教学目标提供支持。
根据要评价的对象,如课程实施、实验安排等,罗列出对象的不同评价条目;根据不同的学习目标和授课对象分别划分出高、中、低3个等级,还可以引人Bloom分类法,注明评价条目的所属层次,绘制出表格,以此给出具体而明确的评价结果。例如,可以将表1中不同层次的学习目标按照高、中、低3个层次打分,从而完成这一学习目标的评价,控制结构学习效果评价见表2。当然,教师可以评价学生,学生也可以评价教师,教师根据不同的目的,均可以制订评价方案以及时获取反馈。
综上所述,在MOOC背景下,笔者针对C语言课程的概念图、学习目标、主动学习和评价4个要素进行课程设计初探,给出了具体的设计方案、实施办法及量化指标,为未来c语言课程更好地适应MOOC变革提供准备。
4、结语
关键词:程序设计;多元综合评价体系;课业评价
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2015)40-0197-02
一、引言
随着信息技术的不断发展,计算机已经渗透到社会的各个领域,成为关系到人类学习、生活、工作等各个方面的必需品。而后,社会对高校计算机专业的培养提出了更高的要求。程序设计语言作为计算机专业学生必须掌握的基本技术,其培养质量的优劣直接影响着该专业学生的基本素质及能力。然而,受制于传统的评价方式,如今程序设计语言课程教学培养出来的学生越来越多的存在着“高分低能”的现象。如何针对程序设计语言课程性质,设立科学、有效的评价方式,综合评价学生学习、应用开发语言的能力,更加充分、有效地调动学生的学习积极性成为了一个非常重要的研究课题。
本文针对这一问题展开研究,进行课业评价改革,提出并构建了面向程序设计语言课程的多元综合评价体系,并以《网络程序设计》为例,展开应用研究。
二、教学模型的构建
课业评价是教学活动中的一个非常重要的环节,用以检验学生的学习效果。如图1(a)所示,在传统的教学模式中,课业评价是教学过程中的最后一个环节。另外,作为必修课或者专业选修课,程序设计语言课程通常采用闭卷笔试的方式考核学生的学习情况。显然,这种考核方式对教学过程监控不足,可能造成考前突击、高分低能等现象。同时,对程序设计语言这种实践性要求非常强的课程,这种一张考卷定乾坤的考核方式存在评价范围狭小,评价主体、评价方式、评价功能单一等问题,难以准确、合理地评价学生的学习、应用能力,难以充分、有效地调动学生学习、使用程序设计语言的积极性。
理想状况下,课业评价不应该作为一种目的,而应该作为教学环节中的一个手段:既是对课堂教学效果的检验,也是对课堂教学的促进。为此,针对程序设计语言类课程,我们构建了一个螺旋式的教学模型,如图1(b)所示:课业评价与课前预习、课堂教学、课后练习四个教学环节彼此关联,共同构成了该模型的一个周期;而这四个阶段又不断迭代,相互促进,形成了一个又一个不断深入的教学周期。在这一教学模型之下,我们构建面向程序设计语言课程的多元综合评价体系。
三、评价体系的构建目标
以螺旋式教学模型为基础,提出并构建学生课业多元综合评价体系,并将其应用于《网络程序设计》课程的教学及考核中。该评价体系在教学过程中实时融入案例,通过案例培养学生综合应用所学知识的能力;同时,在考核中,采用项目考核为主,综合实验、作业、考勤、基础问答形成一种多元综合的评价体系。这种评价体系的改革能够更加准确、合理地评价学生的学习、应用能力,能够更加充分、有效地调动学生的学习积极性,对促进相应课程的学习具有明显的改善作用。具体来讲,相对于传统评价方式,该评价体系需做到以下几个转变:(1)由原来的单一强调学生学习的结果转向关注学习过程;(2)从评价具体的、独立的知识单元转变为整体能力评价;(3)从零散的实施积累转变为强调综合应用;(4)从一次性评价到定期评价转变;(5)从单一评价到多维度评价;(6)从强调个人评价到重视小组评价转变。
四、多元综合课业评价体系
学生课业多元综合评价是一种摒弃传统单一卷面考试,采用多元化评价方式、评价主体综合评价学生各个阶段、各个方面课业水平及其能力的评价方法。具体来讲,针对程序设计语言课程的特点,多元综合课业评价体系的改革包括以下几个方面。
1.评价内容多元化:(1)学习态度;(2)基础技能的掌握;(3)基础知识的应用提高;(4)综合设计、开发能力;(5)项目分工及协作能力;(6)项目讲解及汇报能力。
2.评价方式多元化:采用项目考核为主,实验、作业、基础问答的多元评价体系。
3.考核指标多元化:(1)平时成绩;(2)项目中期汇报;(3)项目结题汇报;(4)基础考评。
4.考核依据多元化:通过实验、作业、平时考勤评价平时成绩;通过功能实现、代码质量、材料准备、讲解四个方面考核项目;通过基础题目抽答的方式完成基础考评。
这其中,项目的评价较为复杂,为求其科学性、合理性,需从评价方式、评价范围、打分标准各个方面严格要求。
评价方式:以组为单位完成综合课程设计及汇报。
评价范围:考量学习、应用程序设计语言相关知识的能力。
评分标准:从功能实现、代码质量、材料准备、讲解多个方面综合评定。
具体来讲,以上各项指标均需依据相应的程序设计语言课程来设定。
五、应用研究――以《网络程序设计》为例
以《网络程序设计》为例,让我校2012级软件工程专业学生参与,对多元综合评价体系进行了应用测试。
(一)多元综合评价体系改革的实施
《网络程序设计》的多元综合评价体系改革的实施方案如表1所示。
在项目考评中,评分从功能实现、代码质量、材料准备、讲解多个方面来进行综合评定。
1.功能实现:50分。打分标准:其中功能完整实现给38分,有效应用关键技术可加分。
2.代码质量:10分。
3.材料准备:20分。打分标准:根据材料内容的完整性、结构的清晰性,文档和程序演示相结合的情况打分;优秀18分及以上,良好16~18分,中等13~16分,比较差10~13分,差0~10分。
4.讲解:20分。打分标准:根据材料讲解的清晰性,回答问题的情况综合打分;优秀18分及以上,良好16~18分,中等13~16分,比较差10~13分,差0~10分。
(二)改革效果及分析
因初次实验,改革效果未达到最优,但是已经初步取得了一些效果:通过平时检查、项目汇报的方式提高了学生学习的主动性和成就感;将检查、考核分布于学期的各个阶段,能够更好地督促其学习。本学期,但凡坚持下来的学生,无论是传统意义上的好学生还是学困生,均通过课程设计、个人汇报的方式学到了很多的技能,教学效果较传统方式更优。具体来讲,形成了以下改革成果。
1.该方案实施后,所有学生均可完成简单网站的设计、实现;大部分学生可以完成中等网站的设计、实现;少数优秀学生已经能够独立地完成较为复杂网站的设计、实现。与传统试卷评价方式相比较,真正做到了学有所用,学有所获,而不是简单的停留在记住了多少语法,背诵了多少概念。
2.在课业评价的过程中,形成了与之配套的教学进程计划、教案、实验教学计划、实验指导书、电子课件、案例库、多元课业综合评价方案及评价标准,为后期该门课程的深入改革提供了基础支撑。
总体而言,多元综合课业评价体系改革的实施效果较为明显,值得进一步推广。
六、结语
一、运用任务驱动教学法于程序设计语言教学,在“任务”的设置上要适当
所谓适当的“任务”,是建立在对学生的了解之上的,让学生通过适当的努力能较好地完成,在完成任务的过程中,学会学习。在中等职业教学中,程序语言设计相对较难,对学生的思维训练也是多方面的,相对于其他学科也有其独特之处。如果采用传统的教学方法,简单地按照从易到难,从简单到复杂的顺序循序渐进地进行教学,学生处在被动的学习状态中,容易感到厌倦。采用任务驱动教学法,有利于培养学生自主学习、合作精神和探究能力,有利于培养学生的信息素养和综合素质。
根据学生的现状,本人把任务设计成几个有一定联系的几个任务。按进度分别提出:请你给学生编写一个加法练习程序;请你给学生编写一个加法练习程序,正确的显示“OK”,错误的显示“wrong”;请你给学生编写一个加法练习程序,每套10道题,每题正确的加10分,错误的不给分,并计算总分等。
当第一个任务提出时,学生都觉得很简单,但无从下手。本人围绕这个问题先开辟“有意义接受学习空间”,进行必要的教学,学生的学习也显得特别认真。
二、运用任务驱动教学法于程序设计语言教学,在教学形式上以学生为主体
采用任务驱动教学法,在课堂教学中,首先提出一个需要完成的具体任务,与学生共同分析解决该问题所需的知识,方法和步骤,有时先开辟“有意义接受学习空间”,围绕具体任务进行适量的概念教学和举例讲解,或开辟“自主学习空间”以及“协作学习空间”,学生来完成任务,可以独立完成,也可以合作完成。目的是的通过完成任务,掌握学习内容,学会学习,培养综合能力。在这个过程中,教师参与探索和指导,引导学生掌握教学内容,适时在班级交流,发现新思路,推广新思路,鼓励创新。教师进行比较、评讲、归纳,或由计算机执行,学生从中得出结论,引导交流,共同进步。如:
在读语句和写语句教学时,在教学前先提出一个任务,即:“请你给学生编写一个加法练习程序”。围绕这个任务,讨论分析需要解决的问题,程序需要提供的功能,需要通过那些途径来实现:出题显示要用一个写语句;出题要一个随机函数;回答问题要用一个读语句;答案显示也要一个写语句。
然后介绍读语句和写语句的格式及其功能、介绍随机函数。
学生独立阅读课本上的例题;学生独立或合作完成任务。
教师或查看学生在电脑上的执行情况,或参与一些学生的讨论或探讨,发现问题,个别问题的个别回答,带有普遍性问题的在全班回答或讲解。
就在完成本任务的过程中,有的同学提出了正误判断问题,一次练习做多个题目等问题。由学生导引出了后续问题。“请你给学生编写一个加法练习程序,正确的显示‘OK’,错误的显示‘wrong’”。这是条件语句教学时的任务。循环语句教学时,任务是:“请你给学生编写一个加法练习程序,每套10道题,每题正确的加10分,错误的不给分,并计算总分”。数组教学时,提出对自己及班级的成绩进行统计的任务。
以这种方式进行教学,使得学生感觉到编程是一件实用和有趣的事。
采用任务驱动教学法进行教学,教师的教和学生的学都是围绕如何完成一个具体的任务进行的。教师教学思路清晰,学生学习目的明确,学习变成了学生的主动行为,在用的需求下学,学以致用,更容易掌握学习内容。比如在前面提到的条件语句的教学,按任务驱动教学法,不是孤立地介绍有关概念,而是将同学们所关心的正误判别问题加以解决。这样教学,提高学生的主动参与意识。
三、运用任务驱动教学法于程序设计语言教学,在教学内涵上是符合探究式教学模式的
从学习者的角度说,任务驱动教学法是一种学习方法,适用于学习技能型知识,尤其适用于学习信息技术应用方面的知识和技能,也能适合程序设计语言的学习。
任务驱动教学法使学习目标十分明确。在某个学习阶段,紧紧围绕这一既定的目标,学习和运用相关的知识和方法。一个“任务”完成了,一个目标达到了,会产生新的任务,新的目标。例如,在上述第一个任务进行时,就有学生提出了新的问题。随着一个个任务的完成,初学者将逐步消除对编程的畏惧,还不断地体会到成功的喜悦。任务驱动教学法,符合计算机系统的层次性和实用性,提供了由表及里、逐层深入、逐步求精的学习途径,便于学生由浅入深、循序渐进地学好有关的知识和技能;提供了三个学习空间,也鼓励了学生的学习主动性。而且,采用这种方法,伴随着学生的是一个跟着一个的成就感。
从教师的角度说,任务驱动教学法是一种建立在建构主义教学理论基础上的教学方法,符合既发挥教师的主导作用,又体现学生的认知主体作用的“双主模式”,有利于培养学生的自学能力和相对独立地分析问题、解决问题的能力,以及探究精神、合作精神和团队精神。在程序设计语言教学中可以采用这种教学模式。
运用任务驱动教学法,体现了以人的发展为本的观念。尊重学生的主体价值,创造适合学生个性发展的条件,激发全体学生的积极性,使每个学生都学有所得,享受成功的喜悦。这是尊重学生,爱护学生,将学生视为学习和发展主体
关键词:实验教学;竞赛理念;在线评价系统;探索性实验
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2017)16-0254-02
引言
《高级程序设计语言C++》是计算机专业课程中非常重要的一门学科基础课。随着信息技术的发展,该课程不仅成为了许多计算机专业课程的先修课,同时也成为了非计算机专业的必修课。学习好这门课程对于学习其他计算机课程,比如数据结构、软件工程等有非常大的帮助。由于C++语言本身的特点决定了该课程的学习需通过上机编程调试程序,因此实验教学环节在该课程的教学过程中是关键,有效的实验不仅可以巩固理论学习的概念和原理,而且还可以培养学生的实践应用能力和计算思维能力。
目前有不少高校教师和学者对此课程的教学进行了一定的研究和探索,提出了一些可行的方法和措施[1-2],但专门针对课程的实验教学的研究和改革仍需进一步加强。笔者所在高校尽管在近年来针对该课程的教学计划和培养方式进行了一定的改革,在该课程上的实验、实训等相关环节的教学上进行了一定的创新和改革,然而这些环节相互之前仍然没有连续性,教学计划与就业导向、学科发展相互脱离,急需由上至下环节的整合。本文结合近年来的实验课程教学经验,从计算机相关专业的“C++程序设计”课程实验教学实际出发,针对实验教学中存在的问题,探讨如何才能更合理的设计实验课程内容,切实提高实验教学质量,培养学生的面向对象程序设计能力和创新能力,促进学生的全面发展。
一、实验教学过程改革
(一)引入竞赛理念,提高积极性,培养团队协作能力
目前的程序设计语言课程的实验教学基本上是理论验证性实验,无论从实验目的、实验内容、实验方法还是实验步骤都由实验指导大纲提前规定好,学生被动地上机实践,完成教师布置的作业,导致学生的参与积极性不高,常常出现为交作业而交作业的情况,且在一定程度上限制了学生独立思索与能力提高,也不利于挖掘学生的思维能力与想象能力,不利于针对目前就业导向、就业能力需求培养学生的综合素质。目前IT业急需具有一定团队合作能力,协同工作能力的综合性人才。因此将基于ACM的竞赛模式引入实验教学中,让学生组队完成综合试题,从而在一定程度上培养了学生的团队协作能力。
因此,针对这一问题,同时考虑软件工程专业持点,我们采用“竞赛―探索性实验―实训”[3-6]的实验教学流程。将ACM程序设计大赛模式引入C++程序设计课程的实验环节中,利用在线评价系统平台建立试题库,实验穿插学生个人与组队模式完成题目,实时刷新排行榜,此种模式基于在线评价系统的竞赛机制突出学生的主体地位,因而学生在课程实验中能由浅入深地掌握基础理论知识。该在线评价系统对学生开放使用,允许学生登陆系统刷题练习,并记录给同学的刷题量,此种模式一定程度上提高了学生的参与度,激发了学生的热情,也有利于学生综合能力的培养。
(二)引入在线评价系统,依托科研项目,进行探索性实验
除此之外,该模式引入在线评价系统,在竞赛试题中结合科研项目引入一些探索性实验题目[7],从而既能挖掘高水平程序设计人才,又能推动科研项目的进行,从而将学科建设的推动、学生综合能力及团队合作能力的培养结合起来[8,9]。教师还可以在后续教学环节(例如实训环节)针对学生的实验学习情况制定相应的内容,从而让理论教学、实验教学、实训等环节综合起来巩固学生的程序设计能力。
二、实验成绩评价方法改革
该课程实验成绩结合在线评定机制综合考虑学生的实验能力,包括学生的基础能力和拓展能力,考核体系[5,10]如图1所述。
(一)基础能力考核
根据个人帐号在在线评价系统的竞赛记录,教师将个人考勤、个人竞赛排行榜和个人刷题题量总数加权综合计算得出个人的基础能力考核分。学生的考勤体现了学生的学习态度,而学生的个人排行榜和刷题量在一定程度上体现了学生的学习动态,对知识点的掌握程序,因此三者组成了基础能力的综合评价要素。
(二)拓展能力考核
在线评价系统中结合科研项目引入了一些探索性实验题目,这些题目为可选题目,在计划外的实验机动时间内允许学生组队以竞赛方式完成。这种策略既能锻炼学生的团队合作能力,又能挖掘高水平程序设计人才。根据学生在团队竞赛中的团队排行榜、学生在团队中的贡献度(由团队内部互评分数决定)、完成的探索性实验题量三者加权综合计算得出个人的拓展能力考核分。
(三)教学效果
基于竞赛模式的高级程序设计语言C++实验教学在本人所在学院已在2届本科生上实施,实验教学效果已从以下几个方面得到提高。
学生参与实验的主动性得到较大的提升,学生完成规定的竞赛题目后,学生能通过排行榜实时了解自己的学校效果,即在班级中的相对学习效果。
部分学生通过在在线评价系统的刷题训练,加入了学院的ACM集训队,参加国内和国际比赛,取得了一定的成绩。
在线评价系统通过加入探索性实验题目,促进了学生的科研兴趣萌芽,促使一些学生通过SRP项目进入实验室进行科研辅助工作,促进了本学院学科的发展。
三、结束语
实验教学是高等院校应用性人才培养的重要途径和手段。建立基于竞赛模式的高级程序设计语言C++实验教学,旨在引入竞赛理念,结合在线评价系统,加入探索性实验元素,激发学生的创新思维能力,提高学生的团队协作能力和主动意识。最后结合实验考核方式改革,提升了学生的专业素质,进一步促进了学科发展。
参考文献:
[1]魏玉芬,丁艳清,袁玉萍.C++程序设计实验教学方法研究[J].高师理科学刊,2016,(06).
[2]张晓孪.基于实践的C++程序设计实验教学模式探索[J].微型电脑应用,2016,(08).
[3]彭源,田秀霞,张安勤,等.基于ACM竞赛理念的C++程序设计教学模式改革[J].计算机教育,2013,(07):70-73.
[4]祝昌宇,陈广贵.从ACM竞赛谈计算机实验教学改革[J].实验科学与技术,2011,(S1):300-302.
[5]齐文.基于ACM竞赛理念的C程序设计教学改革[J].软件导刊,2011,(11):180-181.
[6]王月海,王ケ觯王景中.竞赛驱动的地方高校电子信息类实践教学体系建设[J].实验技术与管理,2015,(12):190-193.
[7]姚芬,张艳美,彭青,等.探索性实验教学的体会与思考[J].当代医学,2009,(13):154-155.
[8]何丽明,蒋群,闫晓梅,等.实验教学对提高本科生科研素质的探索[J].实验室研究与探索,2016,(08):197-199.
关键词 多线程 考试系统 评分策略
中图分类号:TP399 文献标识码:A
1 系统构成与自动评分整体思路
1.1 系统构成
系统从模块上划分,本系统可以分为几个模块:题库管理模块、试卷管理模块、用户管理模块、系统基础数据管理模块、自动评分模块。系统角色可以分为三类,分别为:管理员、教师、学生。
1.2 自动评分整体思路
系统实现的整体思路为当学生进行作答时,首先,进行存盘操作,具体包括向数据库写入数据与向本地硬盘创建高级程序设计语言源代码文件。接着,采用多线程技术、IDE输入/输出模拟器与I/O流技术编译源程序,这里我们记为编译阶段;再次,调出测试用例进行测试,这里我们记为测试阶段。最后,进入评分阶段。
2 自动评分的策略
2.1 系统总体判题/评分思想
2.1.1实时评分
当学生提交一道题的代码时,服务器马上创建一个线程单独进行判分处理,整个判分处理时间与试题要求中最长运行时间相关。
2.1.2依据5种方式进行评分
(1)按编译是否成功:如果编译成功则可以得到总成绩的20%的成绩,如果编译失败则只能得0分。(2)按测试结果进行评分:在编译通过的情况下,评分线程将进行实时评分,评分后会产生一个临时输出结束,按测试结果评分即测试结果与临时输出结果进行比较,如果相等则说明测试通过,得100分,否则以编译成功计成绩。(3)为按关键字进行评分:首先,提取出源代码及判题关键字,然后,以关键字进行统计,判断源代码中,关键字的出现频率,最后以关键字出现的频率进行评分。(4)按占用内存的多少进行判分:首先,记录下程序运行时大概占用多少内存,接下来再取出对应试题要求程序占用内存大小值,接着,通过比较之间的差值来计算成绩,如果小于试题要求程序占用内存大小值,那么不扣分,否则扣试题总分的2%。(5)按运行时间的长短进行判分:首先,在进行用用例对程序进行测试时,记录下测试的开始时间T1(单位为ms),然后,运行测试程序并进行测试,然后,在测试程序运行结束后,再记录下运行的结束时间T2(单位为ms),最后将运行的结束时间T2减去运行的开始时间T1就得出程序运行的总时间T。在得到程序运行的总时间后,我们从数据库取出该题最大运行时间Tmax,接着比较T与Tmax ,如果前者大于后者,那么我们以通过编译进行评分同时再进行一次关键字进行评分,最后得分为编译通过得分及关键字评分得分的总和。
2.2 判题/评分采用的技术
2.2.1常见评分方式
常用评分方式的过程为,从一个输入文件(input.dat)读入测试数据,然后,将输出结果写入到输出(output.dat)文件。然后,再通过比较预期输入结果与结果输出output.dat文件中的内容来测试是否可以得分或者可以得多少分。
2.2.2潜在的问题
当了解常见评分方式的过程后,我们可以很快找到它的评分漏洞。漏洞在哪里呢?就在比较结果和从输入文件(input.dat)读入测试数据这两个操作中。这是因为输入文件(input.dat)和输出文件(output.dat)可以人为更改。
IDE编译环境想必大家一定都很熟悉,IDE运行环境可以捕获输入、输出、错误流,以达到与用户进行交互及反馈。但它们是怎样实现的呢,我们有没有更快的实现方法呢?很高兴的是Java已经给我们提供了一个Process类。Process类提供了执行应用程序的方法及重定向输入输出错误流的方法,我们利用它可以很方便地实现对IDE输入输出的模拟。通过对输入输出流的重定向我们可以不使用输出文件及输入文件,全部采用输入输出流实现,进而避免了上述潜在问题。
2.3 判题/评分算法
首先,调用编译器对源代码进行编译。当然,对于不同的源文件调用不同的编译器,如Java的默认编译器为javac,C/C++的编译器有Visual Studio C++6.0的cl.exe命令行编译器、Turbor C 3.0编译器。本系统采用的是Visual Studio C++ 6.0的cl.exe编译器。在编译的过程中,我们可以通过重定向后的输出流及错误输出流捕获错误信息。其次,判断编译是否通过。当发生编译错误时,将编译状态变量设置为False,否则设置为True,并进入评分阶段。接着,判断是否为编译型语言。如果为编译型语言再进行连接操作,否则进入测试阶段。然后,判断连接是否通过。如果连接通过则进入测试阶段,否则进入评分阶段。再次,进入了测试阶段。进入测试阶段前,还需要准备测试数据,准备好测试数据后,利用IDE模拟器向重定向的输入流注入数据。向重定向的输入流注入数据后,调用生成的目标程序,进行测试,在测试的过程中要监视测试程序的运行时间及所占用内存的大小,如果耗用时间过长或者占用内存过多都计为未通过测试处理。完成测试后,进入评分阶段。然后,进入评分阶段。具体的评分细节在3.1.1节中已经描述,这里不赘述。最后,返回得分。
参考文献