时间:2022-11-08 09:05:09
导语:在c语言课程设计小结的撰写旅程中,学习并吸收他人佳作的精髓是一条宝贵的路径,好期刊汇集了九篇优秀范文,愿这些内容能够启发您的创作灵感,引领您探索更多的创作可能。
关键词:成果导向;编程算法;多元评量;课程设计
1课程基本情况
高职软件技术专业,《编程算法》课程类型为软件技术专业核心课程,修读方式为必修课,学分/学时为4学分/72学时,上课场所为一体化实训教室。课程的总体设计思想为以“成果导向+行动学习”教学理念为指导,遵循学生认知规律、技能形成规律及技术发展规律,采用成果导向教学模式,并运用五步技能训练法(必备理论、操作准备、引导训练、同步训练、拓展训练)进行学训一体、多元实时评量的课上课下教学活动。在课程设计和实施过程中完成:转———转为现代职业教育教学理念;建———课程体系建设、教师专业建设;改———课程改革、方法改变、课堂改造的成果导向教育教学改革。
2课程描述设计
本课程旨在引领学生运用经典算法处理程序设计问题,掌握C++程序设计技巧,选取合适数据结构、编写有效算法和对算法进行分析和评价(目的)。
3教学活动历程设计
在教学活动历程中按照准备活动、发展活动、整合活动开展教学活动,完成12个教学环节。3.1准备活动:提高沟通整合等能力。教学导航:明确编程算法的教学目标、重点和难点、熟悉教学方法、了解教学环节必备知识:教师根据单元学习成果,对确保改学习成果能够顺利达成的相关理论知识进行讲解。操作准备:提示本单元操作所需的学习资源,分发学习素材、信息单。3.2发展活动:提高问题解决、沟通整合、专业技能、职业素养等能力。引导训练:教师给出操作任务单、算法对应程序的执行结果-即学习成果,学生在教师的引导下进行操作,完成案例,形成操作技能单。引导训练考核评价:对学生操作态度及完成情况进行评价。同步训练:教师给出操作任务单、算法对应程序的执行结果-即学习成果,由学生按照引导训练中所学知识完成算法设计及程序编写,组内成员互相帮助,巩固所学技能。引导训练考核评价:对学生操作态度、小组合作情况及完成情况进行评价。拓展训练:根据本单元学习的内容,学生在网上搜索可用该算法实现的相关案例,并互相研讨,讲解,合作实现。拓展训练考核评价:对学生的任务完成情况、设计创新情况进行评价。代码解读:对单元中所涉及的数据结构或程序代码进行深入解析。问题探究:对编程算法的相关常见问题进行探究。3.3整合活动:提高学习创新能力。单元小结及游戏:对本单元学习内容,学生表现,存在问题等进行总结,完成评量单,并公示单元评量结果。通过游戏进行算法创新思维设计,并放松。单元作业:布置习题,学生课下完成作业单,巩固所学内容。
4教学评量设计
编程算法课程》实施达成性评量体系。采用“五相十维”的的多元化评量方式。在出勤评量、单元评量、期中考核、期末考试、档案评量五个相度开展达成性评量,从学生自评、学生互评、教师点评、出勤表现、课堂表现、互动参与、技能达标、团队协作、语言表达、作业评价十个维度细化评量规准,以纸质评量单为媒介,以电子表格形式在课堂展现,形成评量单结合电子表格的达成性评量。单元学习评量采用多元评量原则,即内容多元、人员多元、形式多元。单元教学设计中的学习评量既可以考察学生知识、能力及素质的变化是否达到预期的教学目标,又可以间接检核教师教学资源和教学手段是否达标,也可以作为今后课程设计改进的参考。
关键词:程序设计;实验教学;协作式教学
中图分类号:G642 文献标识码:B
程序设计是计算机专业学生必须掌握的专业技能,我校对该类课程的教学十分重视,学生的学习兴趣也都很高,但教学效果普遍不太理想。我们结合近年来从事实践教学的经验,就计算机程序设计类课程的实验教学模式的改革做了以下探讨。
1注重教学内容的系统性与科学性
程序设计类课程之间的内容具有一定的连贯性,如目前大多数的院校先在一年级开设C或C++,接下来就是基于C或C++的数据结构和面向对象程序设计,因此我们一定要合理、科学地安排这些课程的实验教学内容。如在C语言课程中除了讲授基本的程序设计的语法使用、程序设计的思想之外,还必须花一定的时间讲解结构和链表,以及逐步灌输面向对象一些思想,为后继C++和数据结构等课程打好基础,注意内容的系统性,避免重复[1,2]。
注意教学内容的不断更新。计算机技术的发展非常迅速,我们应该根据学科发展、经济发展及市场人才的需求来及时地更新教学内容。我院从最初的“Pascal语言程序设计”、“C语言程序设计”到后来采用以C++语言为主要编程语言。如在程序设计基础课程中以C++作为基础语言,在“数据结构”课程中以C++语言代替C语言,在数据库课程中以Visual C++作为前台开发的实验环境。近年来根据社会对计算机专业人才的需求以及程序设计发展的趋势,目前我院计划计算机专业学生以Java作为基础语言课程(软件专业继续开设C++语言课程),并增开基于.net的相关课程。
2实验教学和理论教学有机结合
将实验教学与课堂讲授有机结合起来,进行恰当衔接,可以提高学习效率。首先,教师必须充分准备好实验的内容,及时解决学生实验过程中遇到的问题,同时采纳学生提出的合理化意见并及时改进。其次,在每周一次的教研活动时,同门课程的教师可集体备课,研究教材与实验教学的方法,讨论学生的学习情况,交流心得,研究考
试及评分方法。
理论课教师需兼上实验课,这样可以了解学生的实验课情况,并经常把学生出错的问题和难理解的问题通过课堂再次讲解,同时应与本课程的其他实验课教师沟通交流,便于课堂教学的改进,把理论课与实验课统一组织、计划,避免理论课与实验课脱节。
3注重基本技能的训练,培养学生分析解决问题的能力
(1) 基本技能的训练
程序设计类课程是实践性非常强的课程,通过基本语法知识、基本算法的学习,最后形成一系列的基本技能,包括语法知识的灵活运用、上机调试技巧、编写代码等。因此在实验教学中应有意识地进行这些方面的训练,比如带领学生读一些经典的程序,分析经典的算法并进行模仿,上机调试程序并对运行结果进行评析,对已有程序进行修改实现新的功能。通过以上训练,学生既复习了基本的语法知识,又获得了一定的技巧。
实验教学是教师和学生的共同活动。但是目前一些学生基础比较薄,动手能力和独立工作能力相对也较差,加上或多或少的惰性,因此依赖教师的情况比较严重。为此我们在实验教学中开展了协作式教学方法,增加了学生与教师的互动,培养学生分析解决问题的能力,收到了良好的教学效果。
(2) 开展协作式教学法
学生成立学习小组,每组4~5人,在每次实验课和课余时间,每个小组对教师事先布置的内容进行讨论,并且将讨论内容进行总结。下次实验课上教师要留出一点时间让每组总结讨论结果,必要时教师做简单的总结。教师发现好的设计思路和想法时,应鼓励各小组之间相互学习、相互讨论、集思广益,发挥大家的创造力去将这些好的想法加以实现。充分利用开放的交互网络实现资源共享,如网上答疑、网上聊天、BBS、讨论区,同学们可就学习中遇到的问题展开讨论,任课教师可定期为同学们解答。同时在有限的设备条件下,学校应尽量提供更好的实践环境和实践机会,尽可能地开放实验室,鼓励学生独立工作,培养独立思考的能力和创新精神[3]。
4考试和评分方法的改革
根据计算机程序设计课程实践性强的特点,我们在考核中提高了平时实践和讨论的成绩比例,占到50%甚至更高。平时实践中增加单元考核的内容,并将每次考核的分数按相应比例记入总评分。另外由于开展了讨论教学,因此教师根据学生的情况和小组的考评情况将每次讨论成绩按比例记入总评。在期末的实验考试中,利用开发的实验教学平台进行上机考试,学生随机从试题库中抽取试题(与平时训练的题目类似),然后由系统自动评判。这样即节省了老师批改试题的时间,而且可以减少相互抄袭现象。由于考试题目与平时训练的题目类似,可以促使学生在平时实验中独立分析问题,解答问题。
在每学期末,我们用2周的时间开设课程设计,让学生结合自己的专业或兴趣进行选题,然后自编程序上机调试,完成一个大作业或一个相对完整的系统。通过这一过程可让学生了解并熟悉整个系统的开发过程与操作的步骤。我们认为,通过考试和评分方法的改革能更好地考查学生应用计算机的水平,更好地培养学生把学到的计算机基础知识和基本能力应用到专业实际问题的处理上。
5小结
这几年的教学实践表明,上面介绍的一些整合思路是行之有效的,激发了学生程序设计的兴趣,开发了学生的潜能,提高了学生的编程能力和解决实际问题的能力。这几年我们在大学生ACM竞赛、省市级的程序设计大赛中取得了优异的成绩,有大批的学生通过了国家级程序员、高级程序员资格证书。计算机知识和技术更新非常快,对于培养这类人才的专业课程,特别是程序设计类课程,必须及时更新教学理念,科学进行课程设置,合理安排教学计划,运用网络化教学手段,在教学内容、教学方法和考核方式上进行一系列的更新与整合,以适应新形势下人才培养的需要。
参考文献:
[1] 张敏霞. 程序设计语言课程教学方法改革的探索与实践[J]. 中国高教研究,2004,(2):90.
当前,职业教育越来越受到企业、社会和国家的重视。高职院校亦欲凭借此次机遇加快改革与发展。课程改革是高职院校改革的关键。笔者拟以浙江育英职业技术学院的《C语言程序设计》课程为研究对象,对高职C程序课程在清华大学提供的Tsinsen网络平台上的“示范―模拟”教学改革进行研究。
“示范―模拟”教学策略是教学中常用的一种策略。它主要用于动作技能类的教学以及操作技能的学习。《C语言程序设计》课程是高职院校计算机及相关专业的必修基础理论课。旨在培养学生具有程序设计的基本思想,锻炼学生的逻辑思维能力,为后续课程的学习打下良好的基础。传统的C程序课程教学都是采用“示范―模拟”的教学策略,实施“定向―参与性练习―自主练习―迁移”的过程,教学过程的具体内容如下:(1)定向:通过多媒体教学等多种方式教师在课堂向学生阐述语法、原理、规则等理论,并给出一定量的例题,指导学生如何使用这些理论知识。(2)参与性练习:学生上机练习。教师参与整个学生上机练习过程,边练习,边指导。(3)自主练习:课后给学生一定量的练习作业,要求他们独立完成。(4)迁移:做一个课程设计,目的是使学生掌握C语言程序设计教学中的知识点,了解程序模块化开发等内容。
从以往的教学情况来看,C语言涉及的概念、原理和规则繁多,语句使用灵活,语法限制不太严格。高职高专学生的学习情绪化色彩较强,对感兴趣的东西学习积极性较高,而对于枯燥的学习内容则吸收效率较低。学生学习的主动性、自觉性不足,学习习惯不好。许多学生的学习没有计划性,不考虑各学科之间的关联性,基本是被动上课,课后也以完成作业为主,完成作业大部分也是通过抄袭等方式完成的。对于一年级新生特别是基础相对较弱而又没有学过计算机语言的高职生来说,刚接触C程序设计课程会感到一些茫然,不知如何学习,加之以往高年级学生给他们带来的是“C语言如何难学”的信息,使他们出现一些学习心理障碍。因此,高职学生普遍对这门课程感到难学、枯燥、兴趣不大,畏学、厌学情绪较严重,使得教师的教学比较困难。
在认真分析“示范―模拟”教学模式的四个基本程序的基础上,根据高职C程序设计课程的学科特点,依据高职学生实际情况以及教师多年的教学经验,结合清华大学提供的Tsinsen网络平台,我们把原有的“示范―模拟”教学模式扩展为:定向参与性练习小结被动学习自主练习迁移考核等七个基本程序。扩展之后的新模式如图1所示。
Tsinsen网络自动评测系统是一个用于程序设计类课程管理和自动评测的软件,旨在为程序设计类的课程教师提供免费的课程管理服务,共享不同课程的教学资源,促进程序设计类课程教学的发展,为培养计算机科学技术人才提供帮助。Tsinsen网络自动评测系统能够动态实现学生的管理和题库的修改(如图2所示),对学生作业实现网上布置、提交和评阅(如图3所示)。
Tsinsen网络自动评测系统是为高职高专程序设计课程的改革研究提供的一个平台。Tsinsen网络自动评测系统面向的是全部学习程序设计的学生。高职高专学生在使用本系统时,该系统题库的难度已经超过了学生必须掌握的技能范围。因此,必须针对高职高专学生自身学习特点进行改进,构建一套适合高职高专学生学习和使用的题库。有了优质的题库支持,扩展“示范―模拟”教学模式才可能取得预想的效果。在“扩展示范―模拟”教学模式指导下,利用Tsinsen网络自动评测系统我们研究出了一套适合高职高专C程序教学的教学方式。扩展模式的主要操作过程如下。
定向:用问题驱动弥补学习兴趣不足 定向过程实现面向个体的定向,教师向学生阐明必须掌握的技能,并说明该项技能的原理和程序,演示所创设的问题情境,激发学生的学习兴趣。高职院校学生学习兴趣不足,一直以来都是影响高职院校教学质量的一个难题。但高职高专学生的学习情绪化色彩较强,对感兴趣的东西学习积极性较高。因此,如果能设计一些学生感兴趣的情境问题,就能激发学生思考,也就能弥补学生学习兴趣不足而带来的厌学等问题。所以,针对不同的知识点必须设计出一个个学生感兴趣的问题,引起学生兴趣,学生就有了学习动力。
参与性练习:用贴近生活的案例提高理解能力 在学生的参与性练习过程中教师要全程参加。高职学生是来自中专、职高、技校等学校的学生。他们的文化基础相对较差,逻辑思维能力不足。C语言这门课程主要的教学目标是培养学生的程序分析、设计和调试能力,这要求学生具有较强的逻辑思维能力。所以,教师在课程案例设计时应选择贴近学生生活的案例,让学生从实际生活知识中提升理解能力。在案例讲解时,要注重解题思路,重点讲解算法分析与设计,避免纠缠语法细节,降低学生一次性学习的难度,把语法学习和解题能力训练分别解决。让学生在实践中体验程序设计的方法和步骤,完成相关知识的认识。
小结:用重讲编译错误代替漫灌语法 传统的“示范―模拟”教学模式是在参与性练习之后就自主练习。但是,针对高职院校学生的实际情况,我们把语法学习和解题能力训练分成两个阶段,在提高学生解题能力之后,再来实施语法学习。C程序设计这门课程一般开设在第一学年,学生计算机基础知识积累不够,如果此时给学生“满贯”语法,学生很难理解。所以,可以设计各种例题,例题中包含学生比较典型的、普遍容易出错、尚未完全理解掌握的知识点,引导学生积极纠错,让学生在修改错误的过程中观察、分析、归纳语法。通过小结的方式,向全体学生补充新的语法,演示分析错误原因,从结果反推程序语法学习。用重讲编译错误代替漫灌语法,让学生在编译中自己学习、总结语法规则,形成学生程序设计的自我意识。
被动学习:用示范模拟加强解题思路引导 高职院校学生对数学概念、原理理解不够透彻,不清楚数学符号的含义,对数学在现实生活中的应用缺乏必要的了解,导致在编写程序时思路不清,写不出程序。应通过一系列作业指导学生参与性练习,激发学生参与性练习的兴趣,让学生循序渐进地掌握知识。作业要尽量与示范内容相似,加强指导解题思路学习,同时,作业中要涵盖一些重要且在一般性示范中尚未涉及的常用知识点,满足较高层次学生提高水平的需求。院校学生自主学习能力不强,因此,不能完全依靠学生自己学习,可以通过课堂练习、上机实践等方式让他们被动学习。
自主学习:用引导教学促进自主学习 在学生掌握了语法规则之后,就要改变教学中学生被动接受的单向灌输为主的教学方法,将学习主动权交给学生,激发学生内在动力。但高职院校学生的自我约束性不强,自学能力差,学习毅力不够,容易浅尝辄止,因此,如果把学习主动权全部交给学生,他们自己又会“放羊”。因此,可借助Tsinsen网络平台,在该平台上给不同层次的学生布置不同难度的作业,要求学生在规定时间内完成。这种带有引导性的学生自主学习,一方面,能满足不同层次学生的学习需要,另一方面,又能强制性地引导学生自主学习,对自我控制能力差的学生还能起到一定的监督作用。
迁移:用模式化编程弥补抽象能力不足 在教学过程中,很多教师发现高职学生模仿能力很强,但是抽象能力不足。这可以在迁移知识的时候,通过“编程模式化”的方法弥补学生抽象能力不足,让学生能够通过算法、思路实现编程,让语法与算法结合。我们将实践作为培养学生编程能力的突破口,将编程方式模式化,让学生分析题目,依据模式开发,从算法实现编程,在模式中完善程序设计,弥补自身抽象能力不足的问题。所谓编程方式模式化,就是把一些程序编程的方式固定成模板,让学生向这个模块中添加修改语句就能够实现程序。这样,一方面,便于学生记忆,另一方面,也能降低学生学习的难度。
关键词:数据结构;编程能力;抄写;设计模式;集合框架
中图分类号:G642 文献标识码:A
“数据结构”课程自1968年成为计算机学科的专业基础课程以来,其讲述的理论知识至今发展不多,但是教材却在不断更新,主要变化在于算法所用描述语言不断追新。一定要追新?追新对编程能力培养有意义吗?如何提高学生编程能力?值得教师深思,因为只有处理好这一问题,才可能在课堂上把教学内容讲得清楚,说得明白,才可能让学生学习时不糊涂,让他们真地爱上“数据结构”课程,在学习中提升编程能力,掌握快速编程的技巧。
1数据结构课程难点
通常“数据结构”教材给出课程的教学目标是“研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作的学科”,与编程关系不明确。只有参考文献[1]中开门见山地指出“这是一本关于编程方面的书籍”。查阅各类”数据结构”课程教材发现,数据结构涉及的理论知识主要有:(1)关于非数值计算要解决的3大基本数据结构――线性、树型和图形――的逻辑关系和两种物理关系(顺序存储和链式存储),(2)关于两大常见应用――查找与排序――的几种基本算法理论。教材上对3类数据结构的主要操作和查找与排序算法进行了代码实现,并讨论实现代码的时间复杂度和空间复杂度。这些内容始终变化不太多。但是,教材却在不断更新,主要是算法描述语言在追新,从Pascal到C(C++)和Java。国内教材即使是用C++描述的基本算法,其实现上也不一定是采取面向对象的编程思想。虽然Java语言提供了集合框架LinkedList、TreeSet类等,可以大大降低基本算法的实现,提高代码的复用,但是目前在学校教学中真正使用集合框架的不多,因为框架的使用让算法编程实现发生很大的改变,会转移教学难点。所以,从算法思想描述上追新的必要性可以商榷。
“数据结构”是“高级语言程序设计”的延伸,是从高级语言课程的学语句、语法,走向求解实际问题的过程。对学生来说,学习第一门编程语言时,常常花很多的精力研究语言使用的符号、语法、语言环境,忽略实际问题的分析与求解。在不断压缩的理论课时面前,面向过程的模块化思想训练有限。而在“面向对象程序设计”课程中又很难涉及到数据结构的集成框架介绍。如此之基础上,学生学习“数据结构”时,鉴于非数值计算问题解决过程复杂,算法代码量提升快,由十几行突然猛增到几十行,甚至好几百行。尤其,当强调模块划分时,子程序数量会达到十几至二十几个。这种“大规模”的程序开发,往往使学生陷入一堆语法错误的处理中,忽略知识本身的学习。教学中,放弃实践环节,则肯定不可能。毕竟探究“数据结构”课程的本质,还是在培养学生编程,以解决非数值计算的能力。
由于教材上给出的只是基本算法模块,代码量只有几行,一种数据结构的知识连贯性不明显,学生通读课本时不容易理解这些基本算法的实际作用。教材上列举的实际应用例子解决的都是小问题。而实际需要中,无论是游戏软件,还是编译、操作系统、数据库等大型计算机系统软件都与数据结构知识紧密相关。教材与实际的脱节,难于提起学生的学习兴趣,也是教学的一大难点。
2拉近理论与实践距离的探索
实践环节可以帮助学生理解和消化理论知识点,并且使学生自己动手编程解决实际问题。为了不同层次的学生都能自己动手做实验,实践内容分层设立教学目标。
初级:验证型实验。本着自己动手练习一遍,以帮助理解理论知识点的目的,依据理论学习,设置验证型题目。如线性结构应用题目有:教材43页的多项式相加的实现;53页的10以内数据的表达式求值等。这类题目的主要算法已经在课堂上详细讲述,所以学生在实验中的任务就是把教学内容验证一遍。
这类实验题目比较合适前导课程“高级语言程序设计”学得不好的学生,他们不会因为语言基础差,又需要理解很多“数据结构”的内容,而难于自己动手。但是对于成绩好的学生,显然,训练力度太小。
中级:扩展型实验。这是为有一定能力进行程序设计的学生设置。实验题目主体内容与初级要求相同,结果却要求更多。如整型数或实型数表达式计算、多项式相乘等。学生在完成初级题目的基础上,做适当的扩充能达到中级要求。
高级:设计型实验。这类题目主要是针对程序设计能力强、有自我发挥愿望的学生设置。题目本身的内容与生活贴切,如“超市大赢家”电视节目中的猜商品价格、计算机与人对弈五子棋等。学生必须独立分析问题和设计问题。
分层设立教学目标的优点是:不同学习能力的学生都有机会实际动手,每个人都有可以独立完成实验的空间。
3 “抄”的由来、作用与方法
具体教学实施中发现,实验内容设置的良好愿望未必能激发学生的学习兴趣,跨不过自己能编码的这道“鸿沟”,学生的学习兴趣依然不高。究其原因是教材上的理论与实践题目,尤其是高级目标题目离得太远。新问题是如何跨越“鸿沟”?
抄作业、抄实验是时下校园里很常见的现象,教师如何引导学生以杜绝抄袭?惩罚!没见本质上的改变;放任!肯定不可取。鉴于“数据结构”教材上的知识是基本操作的实现,在实际问题求解中引用这些知识点可获得较好的结果,因此在教学中,提出可以“抄”。课堂上注重分析不同代码之间的异同点,如教材24页线性表结点插入和删除算法中,移动元素代码是相同的,不同是前一算法插入一个元素,后一算法删除一个元素。再如,“数据结构”中每种结构定义一个抽象数据类型,分析它们的相同和不同,再进一步对比它们的实现代码的异同点,学生会发现:基本操作相同的不同数据结构之间,其基本算法实现有很多相同点,从而理解教师说的:“抄袭不是copy,而是理解了之后的copy and rewrite”,是根据情况找到一段功能相似的代码,按需要修改,而不是乱抄、瞎抄。教师平时在作业批改中,注意区分两类不同性质的“抄”,对乱抄提出批评,介绍如何判断乱抄。在实验中,给出数据结构基本操作算法的可调用代码,让学生直接引用,以便他们有精力关注待求解问题的核心内容。
“抄”的点子源于学习与工作的体会――大量实例的阅读与积累,可以提高工作效率。也源于“数据结构”课程本身的特点,树型结构和图形结构中,核心算法思想只有“遍历”,其他关于这两大类结构的基本算法都是遍历算法的变形和应用。实际教学中,对比遍历算法和实际应用问题求解的核心思想,分析“抄”的作用。
“抄”的作用非常强大。现在市场上有很多“百例”书籍,给出各种典型应用问题的设计思想与实现代码。学生在实习、课程设计以及毕业设计中需要完成的任务,虽然与这些典型实例不相同,但是若干典型实例具体求解的局部思想完全可以借鉴和参考。因此,在指导实习与实验中,建议学生找到与求解问题的最接近解,以之为核心,逐步修改或扩展,完成任务。这种方法比完全从空白开始设计到代码编写更快,结果常常也相对更好。
“抄”是否会阻碍学生创新能力的发挥呢?回答是:不会!因为提倡的是为我所用的“抄”,是理解之后依据需要合理的“抄”,是围绕自己求解问题的主题思想来抄。这种学习方法,“抄”仅仅是一个用词而已,实质是“参考”和“复用”。但是对学生来说,教师提倡他们“参考”,他们会有畏难情绪,感觉学不会。改用“抄”一词,从心理上给他们简单容易、顺手拈来的感觉,更利于引导他们自信地自己动手解决问题。例如,在“线性结构应用”实验中有题目“求解两个多项式之间的相乘C(x)=A(x) *B(x)”,分析题目要求可知,复用教材第2章多项式相加算法,再在调用复用代码前编程子算法得到first(x)(A(x)前一项与B(x)之积)和second(x)(A(x)后一项与B(x)之积),就可以实现实验要求。实验指导中提示学生用连续加法完成乘法的思想,他们自己就能很好地复用教材代码。再如,教材上“图结构”内容虽然和“树结构”一样主算法是“遍历”,树结构中应用主要是直接修改遍历算法中的“访问”语句,图结构的最小生成树、拓扑排序等问题却不是直接调用遍历算法,而是另外编写代码,然而分析代码可以发现,它们贯穿的是遍历思想。所以在“图结构”授课之后的章节小结中围绕“遍历”算法,分析其他应用算法实现中如何用遍历思想,有利于学生在完成图相关的“城市巡游”“星球大战”等实验题目编码时,参考“遍历”算法实现的方法。
4高手“抄袭”之门道
“抄袭”可以说也是计算机业界的行规。面向对象设计是现在软件开发的重要方法,其目标是提高代码的复用率。而复用的更高境界是设计模式。C. Alexander说过:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心思想。这样,就能一次又一次地使用该方案而不必做重复劳动”。设计模式,实现了同类问题求解的思维方式的共享。用通俗的话来说,使用设计模式就是“抄袭”他人求解问题的思想。在面向模式的软件体系结构一书中,归纳了常见的软件体系结构,并给出了这些软件实现的设计模式思想。一个编程高手,必然会对设计模式有深入的了解,并在自己的编码工作中使用各种设计模式实现框架来搭建自己任务的程序代码架构,随后按任务的要求编写必要的模块代码。如Struts和Hibernate框架在数据库应用系统的开发中被广泛使用。如今作为计算机软件工程方向的专业课程――《软件工程》――就在软件设计中包含了“复用设计”,全方位的介绍组件、应用框架和设计模式的复用。
Java语言集合框架以几个相关的组件:接口、抽象类和完全定义的类,对基本数据结构进行了实现,如List、Set、Collection等接口,ArrayList、LinkedList、HashSet、HashMap等类,这些集合框架在具体用Java语言做数据结构实验时可以直接导入(import)引用,大大缩小了编码量。当然,集合框架具有软件特性:逻辑产品,不可见。因此,对新手来说,有一定的使用难度。不过,集合框架从旁证明了:如今不该再从零开始编写问题求解代码,而应该首先“抄”一段来,再下手改,以达到问题的快速求解。
5小结
每个计算机专业的学生必须具备编程能力,学校知识的学习只是进入编程的起点,掌握各类问题的程序设计方法,是教师和学生共同需要完成的任务。本文提出的“数据结构”课程中编程能力培养的教学方法,意在探索如何快速提高学生编程能力、训练学生编程思维。
参考文献:
[1] [美]William J. Collins.数据结构和Java集合框架[M]. 陈曙晖,译.北京:清华大学出版社,2006.
[2] 严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,1997.
[3] [美]Erich Gamma, Richard Helm.设计模式――可复用面向对象软件的基础[M]. 李英军,等译.北京:机械工业出版社,2000.
[4] [英]Ian Sommerville.软件工程[M]. 程一剑,等译.北京:机械工业出版社,2005.
[5] [德]Frank Buschmann, Regine Meunier.面向模式的软件体系结构(I):模式系统[M]. 贲可荣,等译.北京:机械工业出版社,2005.
Debating on “Copying and Rewriting rather than Plagiarizing ”
――Exploring A Way to Improve Students’ Ability for Program in Teaching of Data Structure
ZHANG Xiao-li; LI Xiao-dong; WANG Yan-hong
(Department of Computer Science and Technology, Beijing Electronic Science and Technology Institute, Beijing 100070, China)
《地球上生命的起源》是人教版初中生物八年级下册第七单元第三章《生命起源和生物进化》第3节的教学内容。本节内容中米勒实验的设计原理和分析是重点,也是学生理解的难点,所以在微课程设计选点时,我们最终选择了以“米勒实验”展开微课程设计,通过对米勒模拟原始地球条件的实验分析和讨论,让学生理解生命起源过程的第一步(即如何由原始大气到有机分子演变),进而理解生命起源的全过程,树立生命的物质性观点,培养科学的世界观。
学情分析
本节课的教学对象是八年级的学生。地球上生命的起源问题,一直是科学家们关注和争论的焦点之一,也是学生愿意学习、了解和乐于参与的话题,而且很多学生通过书刊、电视等媒体,对生命的起源已经有了初步的了解。通过学习七年级下册中三大营养物质的消化相关知识,学生已初步具备一定的知识基础。通过近两年的初中生物专业学习,学生也初步具备分析米勒实验的能力,可以在微课及辅助材料的指导下自学理解本节课的重难点内容。
教学目标
知识与技能目标:解释米勒实验的设计原理及结论。
过程与方法目标:通过对米勒实验的分析,锻炼运用证据和逻辑进行分析和推测的能力。
情感态度与价值观目标:通过对米勒实验的介绍,进行珍爱生命的情感教育。
教学环境与准备
联网状态的计算机、教师提前制作好的相关微视频、学习素材、微课程实施方案等。
教学过程
1.兴趣先导,情境引入
图片导入:出示现在生机勃勃的地球图片和原始地球图片。
师:这张照片美吗?它展现了现在地球上生机勃勃的景象,那么46亿年前的地球是什么样子的呢?(设问)那时的地球天空中或赤日炎炎,或电闪雷鸣,地面上火山喷发,熔岩横流。你认为这样的环境中会有生命存在吗?答案是否定的。但科学家们已通过实验证明,正是这样恶劣的环境为形成原始生命创造了条件。1953年,美国青年学者米勒模拟原始地球的条件和大气成分,进行了模拟实验。
设计意图:“兴趣是最好的老师”。由于学生对“地球上生命的起源”这个问题很感兴趣,所以,对现在地球图片和原始地球图片的强烈对比,能刺激学生的感官,充分激发学生对“地球上生命的起源”这个问题的学习兴趣和学习热情。
2.稳扎稳打,夯实基础
学生观看教学视频自学,完成下列学习任务:
任务一:资料分析。阅读课本第47~48页资料,思考问题:①原始地球大气的成分有哪些?②原始大气与现在的大气成分有什么明显的不同?
任务二:观看视频“米勒实验”。思考三个问题:①米勒实验装置中通入的是什么气体?②米勒实验中火花放电模拟了什么过程?③米勒实验最后收集到的是什么物质?
分析米勒实:下面请观察米勒实验装置这幅图片(如右上图),探讨几个问题。米勒将甲烷、氨气、氢气、水蒸气等气体泵入一个密封的装置内,对水进行加热,沸腾后会产生水蒸气,这些气体混合在一起,模拟了什么呢?模拟的就是原始大气。接下来,米勒在密封容器中通过电极放电产生火花,这模拟了什么呢?模拟的是原始地球上的闪电。通过冷凝器冷却水,模拟降雨,最后在溶液中发现了有机化合物,这些有机化合物是制造蛋白质的基本成分。
温故而知新:请你回忆七年级食物消化相关知识,你能说出蛋白质是由哪些成分组成的吗?(稍停顿)
蛋白质可以最终被消化成氨基酸,所以氨基酸是组成蛋白质的基本成分。米勒实验最终收集的溶液中含有的有机物就是氨基酸,所以这说明在一定的条件下,原始地球的原始大气中的各种成分能够转变为多种氨基酸。
此外,还有一些学者模拟原始地球的大气成分,在实验室里制成了另一些有机物。这些实验表明,尽管原始地球上不能形成生命,却能产生构成生物体的有机物,这些有机物汇集到原始海洋中不断相互作用,经过极其漫长的岁月,在地球形成后的10亿年左右,才逐渐形成了原始生命。
设计意图:先通过资料分析,了解原始大气的基本成分,以及原始大气和现在大气成分的区别,为对米勒实验的分析理解打好知识基础。然后学生通过观看介绍米勒实验的视频,形成对米勒实验过程的初步感性认识。最后教师定格在米勒实验装置图片,重点介绍米勒实验的过程及原理,引导学生分析理解实验,得出实验结论。
3.知识巩固,情感升华
小结:米勒实验最后收集到的是氨基酸等有机物,这说明在一定的条件下,原始地球的原始大气中的各种成分能够转变为多种氨基酸。
情感升华:生命的诞生如此不易,我们应该如何对待现存的生命,尤其是那些濒临灭绝的生物呢?倘若地球上的一种生物灭绝了,那么它将会永远消失。因此,我们要珍惜现有的生物,并保护好它们,保护地球。
设计意图:通过对米勒实验的分析理解,总结得出实验结论,巩固本节课的重难点内容。希望学生能明白“生命的诞生是曲折不易的,地球上的万物皆有它存在的道理。珍爱生命,保护生物,保护地球”,这样的情感升华教育是非常有必要的。
4.总结反思,自测评价
我们通过三道题来检验一下学习效果,请你将答案填写在微课程实施方案中。
①(单选)原始大气成分中没有下列哪种物质?
A.水蒸气 B.氨
C.氧气 D.甲烷
②分析并填空:
米勒实验中的火花放电,模拟的是__________________。
通过米勒的模拟实验,得出的结论是__________________。
③你认为在现在的地球环境条件下,地球上会不会再形成原始生命?为什么?
设计意图:设计的形成性测验题和微视频配合度高,针对性强,使学生的课前自主学习更加有效。多样的题型也能调动学生的学习积极性,实现情感目标的评价。
教学反思
1.微课程设计,选准点很重要
教学目标是教学的出发点和归宿,微课程设计应该选取一节内容中最重要、最难理解的或者最需要通过提前学习来获取知识的一个点。这样能起到突破重难点的作用。
我们团队的微课程设计选择了“米勒实验”这个知识点,这是我们积极讨论研究后选中的重难点。我们设想,学生预习了本节课内容后,最大的感触应该是太抽象、看不懂,而“米勒实验”应该是其中最容易让学生产生疑惑的一个内容,可以用微课程的形式让学生在课前学习,以便课上进行深层次的学习,也可以在课内让学生先自主学习,再组织讨论。这样的教学方式可以较好地突破本节课的重难点。
2.信息技术与学科整合,推进高效教学
信息技术和生物教学的整合,使教师的教和学生的学都更加有效。例如,我们选取了“米勒实验”的视频,把原始地球的动态状况和米勒实验的动态操作融为一体,直观地把原本抽象的模拟实验“演活了”,让学生对米勒实验中各种装置的作用一目了然。将传统的图片教学立体化,也非常符合初中生的认知规律,能比较轻松地突破教学难点,有效提高课堂教学效率。
3.取长补短,相信团队的力量
在这次NOC活动中,我们感受到了互相学习、取长补短的重要性。在进行微课程设计和实施方案时,我们三人先一起厘清整体思路,设计教学流程,再深入探讨“如何导入”“如何过渡”等细节,制作PPT,一起完善修改。由一位教师负责录制微视频,另外两位教师一起根据PPT的思路,完成微课程设计和实施方案,这样的分工合作使我们制作的微视频和设计实施方案更配套,学生在自主学习时使用起硪哺有效。此外,我们也学习了其他团队的微课程设计,听取了不少建议,如调整技能性检测的题目,采用图文并茂的形式帮助学生解决问题等。
设计亮点
1.教学目标精准,教学流程完整
对米勒实验的分析和讨论既是重点又是难点,且该实验在实验室无法进行模拟实验,初中生理解起来比较困难,所以我们选用了这个知识点来进行微课程设计。教学过程完整,依次包含了情境导入、资料分析、观看视频、实验分析、情感升华、自我检测六个环节,它对重难点分析到位,能有效帮助学生突破这个重难点。
2.教学手段多样化,提高教学有效性
我们对现在地球和原始地球的两幅图片进行对比后抛出问题,直入主题,能激发学生学习兴趣,让学生愿学、乐学,使学习更加有效。另外,我们选取了一段“米勒实验”的视频,将抽象的思维可视化,能帮助学生理解米勒实验的设计原理。我们通过让学生观察实验装置的图片,一边讲述实验过程,一边抛出三个问题,也有助于他们理解米勒实验的过程,并分析实验结论及意义,有效提升学习效果。
3.关注学习过程,注重学习评价
【关键词】软件工程导论;CDIO;教学改革;工程化
1、引言
在就业环境日益严峻的现今,软件人才仍然需求火热。企业需要合格的软件人才,而应届毕业生希望找寻到合适的企业接收。在供和求都有需求的情况下,仍然存在企业需求不被满足的情况,这体现了目前的现状:在计算机行业内,既缺少行业特色型人才,也缺少应用型人才。在这种情况下,以创建应用型本科为目标的独立学院所面临的改革压力非常大,各个专业也开始寻求全新的发展方向[1];与实践相关的专业纷纷开始展开各项教学改革研究,特别是针对实践类的课程教学改革[2]。作为独立学院的计算机专业,在教学上必须结合行业的需求,紧跟行业内的技术发展趋势;同时立足自身定位,对专业的培养目标进行适当调整。而在计算机相关专业的培养计划中,《软件工程导论》作为一门承上启下的重要专业课程,对于学生的影响十分重大,在教学中需给予正确的定位[3]。
2、课程现状
福建师范大学协和学院建立了基于CDIO的教学培养模式。CDIO是工程领域一种较新的教学理念,于2000年由美国麻省理工学院、瑞典皇家理工学院等四所大学的工程教育改革团队联合提出。“CDIO这个缩写包含了Conceive、Design、Im-plement和Operate,其代表的含义是构思、设计、实现和应用”[4]。这种教育理念所倡导的创新能力和与社会大环境的协调发展对于目前的独立学院教育是非常吻合的。在目前的教学体系中,计算机专业的《软件工程导论》课程安排在三年级的上学期进行教学,主要安排为理论课程。由于课时的限制,也因为课程本身的导论性质,教师在教学中理论讲授的时间偏多,存在以讲授为主的教学行为,导致学生的学习积极性不够;而学生所获取的知识点相对零散,无法建立起统一完整的知识体系。这种情况若任其发展,将使学生丧失对课程的兴趣,因此,课程改革势在必行。
3、教学改革措施
本课程教学改革的核心在于基于CDIO的指引,将工程化理念引入《软件工程导论》的教学当中,对现有的教学理念进行修正。CDIO倡导“基于项目的教育和学习”,将学生作为教学的主体,而不是以教师为主;CDIO提倡以工程项目从研发到运行的生命周期为载体,让学生以主动的、实践的、课程之间有机联系的方式学习,以此来培养学生的工程能力、运用知识分析和解决问题的能力、终生学习的能力以及团队协作的能力。这些能力的培养对于信息技术相关专业的学生来说尤其重要;这种以工程项目为驱动的教学方法非常适合于《软件工程导论》课程的教学开展。课程教学的改革将围绕独立学院所设定的应用型本科人才培养为目标[5]。首先,工程化理念的引入并不是在《软件工程导论》课程中才首次提出。在大一新生入学后,在编程的入门课程中,教师可以为学生引入简化后的工程化思想。在需要通过编程去解决问题时,首先要思考出完整的解题思路(在软件工程中我们称之为解决方案),而不是立刻开始代码的编写。通过长时间的训练让学生习惯“谋定而后动”,并且将这种习惯延续下来。在目前的教学培养中,我们在大一学年安排了《高级语言程序设计(C语言)》和《面向对象程序设计(C++)》课程作为专业的基础入门课程,主要完成C语言和C++语言的学习。在教学过程中,我们注重了验证性实验和设计、综合性实验的合理搭配,避免让学生陷入一味验证的套路中,通过实验的设计去启发学生对同一问题的不同解决方案。在课程的正常教学结束之后,我们安排了一个综合性实验,要求学生分组完成一个基于DOS平台的简易的MIS信息管理系统。这个系统允许学生分组(每组2-3人)完成,遵从需求分析———数据结构设计———功能模块划分———模块代码实现———调试完成总体功能的大体顺序开发完成。通过这样的实验安排,既能渗透简化的软件工程思想,也能强化学生的编程能力,锻炼学生的团队合作能力;在项目的工程化实现过程中提升学生的总体能力。其次,在《软件工程导论》之前的前导课程中,都可以不断的渗透工程化的开发思想,为后续的课程打好基础。工程化开发思想在后续的学习和之后的工作中都是不可缺少的。在在《软件工程导论》之前,培养计划中安排了《数据库原理与技术》、《数据结构》、《网络编程》等专业课程,均设置了以项目形式主导的课程设计或综合实验。在各门前导课程的综合训练中,我们一次次的强化了项目管理的相关知识,不断的向学生传输工程化的软件开发思想。这种潜移默化的引导为后续《软件工程导论》课程的开展奠定了良好的基础。再次,在不增加现有课时的前提下,对学生进行分组,提供相关的课程选题,由各组选择完成并以课程大作业的形式完成提交;课程大作业将作业课程最终成绩的重要组成部分。选题的设置要注意贴近实际,要能让学生能够展开实际的调研;同时要注意难度的合理设置,既能关注到尖子生的提升性要求,也能照顾到落后学生,避免部分学生对课程的学习失去信心。结合课程中的分析讲解、分组讨论和课后的文档完成,我们希望学生在这个过程中能够体验到完整的软件开发的流程,将课堂讲授的知识应用到所选课题中,能够更深入的体验分工合作的团队精神,从而对课程教学内容有更加深入的理解。第四,在课程结束后的课程设计中,每个小组对所选的项目进行优化完善,提供一个可以运行的版本,并完成项目答辩。通过现场答辩的形式让小组成员更明确的了解自己的项目作品在哪些环节仍存在缺漏。当然,在这个课程中,我们主要关注的每个小组对于所选课题的需求分析和设计的过程,对于实现环节,我们鼓励学生尽可能的完成,在困难环节可以与教师进行沟通,认识到自身知识体系的薄弱环节并进行提升,为后续的毕业设计打完基础。总而言之,我们希望以这种分组团队项目开发的形式,为学生提供软件工程课程的实践体验,加深对课程知识的印象,锻炼文档撰写的能力;同时,在项目开发的过程中,让每一个成员都能够参与起来,能够完整的体验整个项目开发的流程,并且熟悉流程中涉及到岗位角色,建立起一定的团队合作精神。另外,在对不同专业开设《软件工程导论》课程时,要综合考虑不同专业的培养目标,对课程内容进行相应调整。
4、小结
通过上述相关措施的执行,学生对于《软件工程导论》课程的学习积极性和主动性有所提升,对于软件开发的完整流程有了更加深刻的认识;同时也深刻认识到软件开发并不是一个“单打独斗”的过程,需要有团队成员的良好合作才能有很好的软件作品产生。以上这些都将为本专业的学生进入专业工作领域奠定良好的基础。目前的行业发展趋势表明,企业仍然是需要人才的,既缺少高级软件工程人才,又缺少高技能的应用型人才。根据独立学院的特殊定位,我们在教学中应该定位于培养高技能的应用型人才,注重实践动手能力的培养,注重提高团队沟通和协作能力的培养,提高毕业生质量,为软件企业输送人才。在后续的教学开展中,我们将在坚持现有良好措施的前提下,将相关课程更好的组合成为一个课程体系,打通课程之间的壁垒,降低学生的学习难度,增强学生的成就感,从而更好的提高总体的教学效果。
参考文献:
[1]林昌意,张杰,林鸿.独立学院电子信息工程专业建设的探索与实践[J].中国石油大学胜利学院学报,2012,26(2):80-82.
[2]林昌意,兰其斌,陈海霞,等.技术实践与创新并举的实验教学体系研究[J].福建电脑,2017(3):87-88.
[3]韩智,张振虹,李兴娟.基于CDIO理念的软件工程课程教学改革[J].计算机教育,2010(11):56-59.
[关键词] 课程;课程设置;要素;模式
【中图分类号】 G724 【文献标识码】 A 【文章编号】 1007-4244(2013)07-118-2
一、curriculum与syllabus
在讨论课程设置时,首先有必要弄清楚两个重要概念,curriculum和syllabus。我国现有的一些有关学术论著,对这两个词的解释含混不清。有人认为,curriculum和syllabus是术语上不同,实际上,两者都是对外语教学的目的、方法和过程的描述或规定。因此,在有些著作中,curriculum design和syllabus design是相通用的,两个词都翻译成“大纲”。其实,美英两国教育界对curriculum 和syllabus的理解和用法也不尽相同。在美国教育界,curriculum和syllabus的用法没有区别, curriculum即syllabus,syllabus即curriculum。然而, 在英国教育界,curriculum和syllabus就有区别。在英国,syllabus一般是指具体某一科目所包含的具体的教学内容,而curriculum指的是一所学校或一种教育制度所要实现的教学内容和目标的总和。从两者间的区别来看,英国人把syllabus看作是从属于 curriculum的。但curriculum又不能简单地看作是一种超级的syllabus,因为两者有本质的不同。一方面,curriculum可以被看作是学生受教育时的活动规划,另一方面,curriculum也可被看作是学校所规划的一切学习活动,不管这种学习活动是集体的还是个人的,校内的还是校外的。显然,Hirst和Kerr对curriculum持有两种不同的看法。Hirst认为curriculum是a plan,而Kerr则认为curriculum是activities。Candlin对curriculum和syllabus的描述是:curriculum主要是对语言学习的性质、目的、过程、评价、教师和学生的作用等问题作出一般性的阐述;而syllabus则是对教师和学生课堂实践的描述和记录。这种描述和记录可以作为以后对curriculum进行修改的依据。Nunan认为,curriculum主要负责教育项目的计划、实施、评价、管理和行政工作;而syllabus的任务则主要集中在教学内容的选择和分级上。按照Candlin和Nunan的观点,syllabus实际上是curriculum的一个组成部分。也就是说,要进行一个教育项目,总要先有一个curriculum,然后根据curriculum的要求再作syllabus的设计。因此,一个结论得出来:curriculum与教育项目中的课程有关;syllabus与课程中的科目有关,进而,前者理解为“课程大纲”,后者理解为“课目大纲”。
二、curriculum设计的基本要素
Tyler 是20世纪最有影响的curriculum理论家之一,他的Basic Principles of curriculum and Instruction 是curriculum设计理论的经典之作。他在书中提出了curriculum系统的发展模式,认为任何课程的大纲设计和发展都要考虑到四个基本的方向性问题,并以此作为curriculum设计的基础。这四个问题是:
1.学校应该要达到的教育目标是什么?
2.要有怎么样的教育经验最终才有可能达到这些目标?
3.怎样能够把这些教育经验有效地组织起来?
4.怎样才能确定这些目标正在被达到?
仔细分析这些问题,第一个问题是要使教育目标和目的具体化。第二个问题与教学内容有关,要求明确课程内容。第三个问题与教育经验的组织有关,要求curriculum设计者阐明大纲教学内容设计排列先后的原则。最后一个问题是关于怎样达到预订的目标和目的,直接与教学评价有关。Tayler创立的curriculum模式有相当影响,但后来收到了不少批评。英国学者White在总结了传统设计的理论和观点后,归纳了三种主要观点,它们都比喻为造房子。
第一种观点认为,curriculum犹如一个造房的计划,目标就是要用材料把房子造起来,因此curriculum主要体现为目标和内容:
第二种观点认为,不应把curriculum简单看作为一个造房计划,而应把此看作为一个怎样造房的计划。这种观点强调了要进行成功的造房,不仅需要计划和材料,而且更需要方法和手段。因此curriculum应该是
第三种观点认为curriculum应该是已经造好的、供人居住的寓所。居住者对房子的看法和评价,要取决于其对寓所的使用,比如如何利用室内的空间设备。这些对房屋的看法犹如对curriculum 的评价。
以上三观点,从不同的角度强调了curriculum的三个不同方面,但他们不是互相排斥的。第一种观点强调的是目标和内容,是curriculum目标模式的基础。第二种观点强调的是方法,是过程模式的理论基础。第三者观点强调的是评价,是情景模式的基础。
三、课程发展模式
(一)手段目标模式
Stern 说过,“手段――目标的教学观是语言教学法不可缺少的。”所以,手段――目标模式(也称为目标模式)成了语言教学法中curriculum的一个相当普遍的框架。这一模式的基础原理是基于Tyler 和Taba的curriculum理论。Taba-Tyler 的curriculum的目标模式为:判断需求;建立目标;选择内容;组织内容;选择学习方式;组织学习方式;决定评估内容和评估手段。
在这一模式中,很有必要对“目标”一词做解释和界定。一般情况下,用于表达“目标”一词的英语词语有三个,即goal, aim和 objective。但这三者在课程设置中有明确的区别。Goals 指的是笼统而远大的目标,通俗地说就是最终的大目标。Aims相对而言指的是较为具体的目标,可以理解为要达到的远期目标。Objectives指的是中短期的目标,比aims 更为直接和具体。
(二)过程模式
过程模式的心理学基础是Piaget的《儿童对世界的认识》和Brunner《教育的过程》两部心理学论著。Piaget主张教师应采取与儿童的智力发展相适应的教学方法。Brunner认为教师是通过给予刺激,把已知的东西转变为儿童们能够掌握的具体形象或形式。这两位学者其实是强调的是通过渐进主义来实施教学活动。
Curriculum过程模式以学校和教师为其坚实的基础,并且把教师的个人和专业知识的自考虑了进去,考虑到教师课程设计的方法,遵循系统规律和难易程度来安排教学,它强调整个过程(这个过程也就是渐进的),而不是内容、也不是行为结果或可衡量的成果。过程模式与教学的过程有关而不是与教学的结果有关。
(三)情景模式
情景模式设计是以具体的实际情况为基点, 是curriculum研究的重要发展。
情景模式是Skilbeck提出的。情景模式的设计是以“文化分析”为基础的,及curriculum设计一开始就要对学校本身的具体情况作出分析和评估。然后,很据分析评估的结果对课程进行规划。Skilbeck把curriculum 发展看作是对学生学习课程的计划、设计、执行和评价。他遵循着“分析情景明确目标制定教学规划解释与执行规划评估与评价”具体模式。他在分析情景时涉及面相当广泛,校内外具体情况都涉及到了,小到学生学习经验方面,大到国家政策方针;他认为目标不是一成不变的,是动态变化的,目标的种类也应该多种多样;学校应该有在计划实施方面的自主决定权;以学校为基础发展curriculum更有效;应该整体对curriculum的计划、设计以及执行情况作出评价。
四、小结
Curriculum和syllabus是两个不同的概念。前者是学校或一种教育制度所要实现的教学内容和目标的总和,而后者是某一科目所包含的具体教学内容。后者从属于前者,是前者的一部分。Curriculum的发展和设计主要有:手段目标模式,强调目标的确定和教育目标的具体化;过程模式,强调的是整个教学过程;情景模式,它的设计和发展是以实际的教学情景为基础,围绕情景主题来设计教学内容。其实,情景模式在开始就要对学校本身的具体情况做出分析和评估。然后,再根据分析评估的结果对课程进行规划。
参考文献:
[1]Brown, J. D. The Elements of Language Curriculum: A Systematic Approach to Program Development.[M].Beijing:Foreign Language Teaching and Research Press and Heinle & Heinle/Thomson Learning Asia ,2001.
[2]Bruner, J.S.The Process of Education[M].Cambridge, Mass. : Harvard University Press ,1960.
[3]Candlin, C. (1984) ‘Syllabus design as a critical process’ in Brumfit, C. J.(ed.) (1984) Function and structure of a state school syllabus for learners of second or foreign languages with heterogeneous needs’ in British Council.
[4]Hirst, P. (1969) ‘ The logic of curriculum’ in Hooper, R. (ed.) (1971) The Curriculum: Context, Design and Development. Edinburgh (1971) Oliver and Boyd in association with the Open University.
[5]Kerr, J. F. Changing the Curriculum[M].London: University of London Press,1968.
[6]Nunan, D.Language Teaching Methodology. Prentice Hall,1991.
[7]Piaget, J.The child’s Conception of the World[M].Tutowa, N. J.: Littlefield Adams,1967.
[8]Skilbeck, M.School-based Curriculum Development[M].London: Harper and Row.
[9]Stern, H. H.Fundamental Concepts of Language Teaching.[M]. Oxford: Oxford University Press,1983.
[10]Tyler, R.W.Basic Principles of Curriculum and Instruction[M].Chicago and London: University of Chicago Press,1949.
[11]White, R.V.The ELT Curriculum― Design, Innovation and Management[M].Basic Blackwell Ltd,1988.
[12]束定芳,庄智象.现代外语教学――理论、实践与方法[M].上海:上海外语教教育出版社,1996.
数据结构课程是计算机相关专业的专业基础课程,它所讨论的知识和提倡的技术方法,无论是对后续课程的学习(比如:编译原理、操作系统、数据库系统等),还是对大型软件的设计与开发,都有着不可替代的作用。它是介于数学、计算机硬件和计算机软件三者之间一门核心课程。
数据结构较系统地介绍了几种常用的数据结构以及相应的存储结构和实现算法,同时介绍常用的查找和排序技术,并做了一些性能分析和比较,内容非常丰富。另外数据结构课程内容抽象,理论性强,学习量大;所用到的技术多,而学生此时所掌握的专业性知识相对较少或程度较浅;课程本身隐含的技术和方法相对丰富,这些都加大了学生学习数据结构的难度。
数据结构课程学了要求掌握书上的内容以外,还是一个复杂程序设计的训练过程,要求学生能编写高质量,易于交流以及符合软件工程规范的程序。因此设置数据结构课程实践环节十分重要。通过实验实践内容的训练,突出学生程序思维训练和加强上机调试程序的能力,提高学生组织数据及编写大型程序的能力。使学生能够深刻理解教学内容,提高数据抽象和算法设计的能力。并且可以在系统分析,结构设计,上机操作及程序调试等基本技能方面得到综合训练。合理的实验是原理与应用的结合,可以使得学生懂得如何把理论知识应用于解决实际问题,从而培养良好的动手能力。
目前,数据结构教学存在各种各样的问题,大概可以归纳为以下几点:一、先导课程先天不足,数据结构的先导课程有程序设计语言,离散数学和计算机导论等;其中以程序设计语言与数据结构课程的联系最为密切。二、教材内容过于抽象,教学方法过于单一;学生普遍反映听得懂,但是不会自己动手写。在这种情况下开展数据结构实践更有实际必要。
虽然实验的内容与教科书内容密切相关,解题所需要的各种技术也可以从教科书中找到,由于其出现的形式多种多样,需要仔细体会,反复实践后才能掌握。因此不少学生在课程实践时,会觉得无从入手。由于没有学习过软件工程,不懂软件开发应有的流程,往往边写边设计,造成不良的程序设计习惯。因为需求分析的不够明确,系统设计通常存在问题,往往做到大半甚至快完成时才发现,需求理解有误,浪费大量时间的反复修改。系统一旦运行能通过,个别测试数据得到正确的结果,绝大多数学生都会认为这个程序已经正确,编码可以结束,不会再去考虑程序的时间和空间效率,也不会再去检查代码是否存在冗余,有没有实施模块化的思想等等。这些都不利于培养学生数据抽象能力和形成良好的编程习惯,编写高质量的程序。
为了解决学生在课程实践过程中碰到的各类问题,老师可以在实践开始前加强引导,举例进行分析设计。而一份设计合理的实验指导书可以起到事半功倍的作用。
结合多年的教学经验及学生的实际情况,笔者设计了一份相对完整的实验指导书。指导书的内容共分为9个部分,分别是:该课程设计的目的,任务分析,结构和系统设计,调试分析,测试结果,小结,用户手册,附录及参考文献。
第一部分内容及意义显而易见,不再展开。任务分析主要是包括无歧义的任务说明;系统需要实现的各项功能;系统的输入数据和输出数据;以及各种情况下的测试数据。通过这一部分的书写,可以让学生充分地分析和理解问题,明确题目要求做什么,限制条件是什么。也就是让学生非常清楚的知道要做什么,而不涉及怎么做。 第三部分的结构和系统设计是在学生清楚要做什么之后,确定要怎么做。它包括分析确定需要处理的确定数据的逻辑结构,选择合适的存储结构,设计的数据类型;以及设计与功能相对应的模块(给出定义,写出函数头),确定模块的调用关系。有了这一部分的内容后,程序框架基本完成,学生可以在框架下进行编码,相对容易实现。
程序书写完毕后,调试也是学生需要特别注意的一个环节。调试分析包括碰到的各种调试问题,及相应的解决方案;算法的时间和空间复杂度的分析;老师提出的修改意见及修改结果(包括有没有当堂完成,测试结果正确与否等)等。这部分可以促使学生在编程结束时,对编程过程及结果有一个分析总结。老师有没有提出修改意见,也可以从侧面看出程序是否存在比较明显问题,或明显可以提高的地方。
第五部分的测试结果包括全部合法输入、部分非法输入及全部非法输入情况下, 相应的测试结果。由此判断程序是否正确及稳健。这可以促使学生去测试非正常情况下,程序有何反映,由此可以比较全面地验证程序是否正确及稳健。
小结在编码调试及测试之后进行,主要包括设计是否合理?(从提高程序质量的角度考虑,比如:有无冗余代码等);调试有何经验体会;测试有无问题;程序有无可以改进的设想(具体分析,包括改进目标和改进手段等)。通过这一部分的书写,学生会去回顾整个分析设计的过程,看是否存在问题或可以改进的地方,为下一次的实践积累经验教训,进一步提高程序设计的综合能力。
用户手册是要学生站在用户的角度来考虑问题,教用户如何正确使用自己编写的程序。编写的全部源代码放入附录。在设计和编写代码的过程中参考的各项资料全部出现在参考文献部分,以此让学生尊重他人的成果及增强版权意识。
学生采用这一分课程实验指导书之后,不再感觉无从入手,明显能较顺畅地完成题目,编写的程序质量也比以前有很大程度的提高,更加注重代码的质量,会主动考虑算法的时空效率问题。
虽然这份实验指导书的好处是显而易见的,但是还不能够解决所有问题。有些问题可以通过完善指导书来完成,有些则需要其它手段来辅助。比如,部分学生还是会撇开这份指导书,按照以前的习惯来完成。针对这一问题,下学期笔者准备在学生到机房开始上机前,要求检查指导书的前三部分的内容,否则推迟上机和验收的时间。另外,不少学生由于理论知识不扎实,不能很好的分析,需要处理的数据是什么逻辑结构,选择什么样的存储结构比较合理?会出现张冠李戴,把逻辑结构写在存储结构的位置,更甚至于编造出一种不存在的逻辑结构。针对这种现象,只能加强检查指导,及时指出问题,以此加强理论知识的掌握。 由于学生的编程水平相对比较弱,编写的代码会出现各种问题,一些在调试阶段被查出,另一些则被学生忽略甚至认为是正常的,比如:代码重复,没有模块化设计,数组初始化时对每个数据按个进行赋值等等。对于这个现象,虽然指导书中有所体现,但是不够直接,容易被学生忽视。以后,可以在小结部分增加一些代码常见问题,让学生选择是否存在,迫使学生去检查和正确认识不合理的代码。
参考文献
[1] 汪华登.《数据结构》实验教学的改革与实践[J].中国水运,2007,7(2):239-240.
[关键词]可编程逻辑器件 课堂教学 实验教学教学改革
引言:“可编程逻辑器件”是电子信息类学生的一门重要专业课程。具有实践性强、知识内容更新快的特点。开设在数字电子技术课程之后,介绍现代大规模可编程逻辑器件(PLD)设计方法,目的在于培养学生基于PLD的现代数字电子系统设计能力。
该课程以往教学过程中,老师会注重学生知识接受能力和动手能力的培养。不断更新教学内容,完善教学方法,取得了一定的效果。但随着PLD技术的不断发展,课程教学还是出现了明显不足之处。具体如下:
①教学内容相对滞后,与当前可编程逻辑器件前沿设计技术有一定的差距:
②实验设备相对落后,所开设实验种类少,实验难度不够;
③教学形式单一,层次不够,学生被动学习,主动性不强;
④考核形式单一,不能很好地反映学生真实学习情况。
基于以上的问题,必须重新修改课程培养方案。同时考虑到:第一,课程开设时学生已经完成数字电子技术以及单片机课程的学习,后续还有嵌入式系统课程;第二,理论教学与实践教学并重的原则,对课程重新定位如下:
①掌握当前主流PLD芯片使用选型,同时培养学生获取PLD技术最新发展动向的能力;
②掌握PLD芯片的基本开发流程,同时培养学生对新技术、新设计方法的自学能力;
③针对于大规模数字逻辑电路、系统级设计,要培养学生多人协同工作能力,建立模块化设计理念,熟悉团队工作方式。
针对以往教学中出现的问题以及对课程培养方案的重新定位,课程建设小组主要从三个方面展开工作:,一是课堂教学改革;二是实验教学改革;三是课程配套内容建设。
1.课堂教学改革。在教学实践中,课程建设小组在课堂教学内容、教学方法以及考核方法上都做了进一步的改进与完善。
1.1 教学内容:新编排的课堂教学内容如表1所示。
新教学内容编排加强了PLD芯片及编程配置电路介绍,以方便感兴趣的学生课后完成PLD最小系统板设计。同时,引入了PLD片上资源应用介绍。另外,8051单片机IP核应用很好地将PLD技术和单片机联系起来。通过Nios II软核介绍,为学生今后SOPC嵌入式系统课程学习奠定了基础。新编排的教学内容基本上反映了当前PLD主流设计技术。
1.2 教学方法:该课程面向高年级学生开设。学习该课程时,学生都具备了其他编程语言(如c语言、汇编语言等)学习基础。因此,在PLD硬件描述语言――VHDL语言教学中并没有采用逐条语句、逐个语法点讲解的教学形式,而是从实例讲解入手,通过基本电路单元、实用电路的实例分析引出基本语法知识及其使用方法的介绍。通过教学实践,反映出该教学方法效果明显,同学不仅很好地掌握了VHDL语言语法知识,更重要的是具备了扎实的实用编程能力。
教学过程中,十分注重学生系统级电路设计能力的培养,建立模块化设计理念。为此,教学过程中采用了小组竞争学习方式。对于一个教学自然班,在开学初期,分成若干个设计小组(每小组3~5人左右)。在教学过程当中,每个小组会分配一个设计课题,在学期结束之前,以课堂讨论的形式,每个小组完成对设计课题的总结。最后,设计课题的评价是由老师和其他小组同学共同给出。这种具有竞争性质的小组学习方式,极大地激活了学生学习兴趣和学习主动性。在竞争学习过程当中,很好地锻炼了学生动手能力,更重要的是培养了学生小组多人协同工作和大规模电路模块化设计的能力。
1.3 考核方法:在新的培养方案中,该课程的课堂教学和实验教学是分开独立考核的。为了更加客观公平地反映学生平时的学习情况,课堂教学总评成绩考核由三部分组成的:一是学生平时的考勤情况,占10%;二是期末笔试成绩,占50%;三是平时小组设计课题完成情况,占40%。设计课题考核由老师和同学共同完成,老师考核成绩占60%,同学考核成绩占40%,考核内容主要包括:①设计方案是否正确合理;②小组成员工作分配是否合理;③设计方法有无独特新颖之处:④设计报告是否规范、正确;⑤总结陈述和回答问题是否正确;⑥设计过程是否认真,学习态度是否端正等。
2.实验教学改革。实验教学改革在实验内容上做了比较大的变动,增加了PLD片上资源应用、8051IP核应用及Nios II软核嵌入式系统实验。为了很好地开展实验,实验室环境做了改进,升级了实验平台。另外,对实验考核方法也做了进一步完善。
2.1 实验内容:新编排的实验内容如表2所示。
实验内容根据需要分为了三个部分:第一部分是基础性实验,内容相对简单,实验提示性内容较多,目的是让学生熟悉PLD设计流程,以及基本硬件输入、显示设备的驱动设计。第二部分是设计性实验,与课堂教学内容相关联,同时加入了思考性内容,目的是让学生掌握常见数字逻辑单元的设计方法。其中8051单片机IP核实验,使学生把本课程和单片机课程联系起来,扩大了课程交叉学习内容。第三部分是综合性实验,难度相对较大,需要学生在本课程基础上,查阅其他相关资料思考完成,目的是提高学生综合运用知识的能力。
实验内容根据需要分为了三个部分:第一部分是基础性实验,内容相对简单,实验提示性内容较多,目的是让学生熟悉PLD设计流程,以及基本硬件输入、显示设备的驱动设计。第二部分是设计性实验,与课堂教学内容相关联,同时加入了思考性内容,目的是让学生掌握常见数字逻辑单元的设计方法。其中8051单片机IP核实验,使学生把本课程和单片机课程联系起来,扩大了课程交叉学习内容。第三部分是综合性实验,难度相对较大,需要学生在本课程基础上,查阅其他相关资料思考完成,目的是提高学生综合运用知识的能力。
实验内容根据需要分为了三个部分:第一部分是基础性实验,内容相对简单,实验提示性内容较多,目的是让学生熟悉PLD设计流程,以及基本硬件输入、显示设备的驱动设计。第二部分是设计性实验,与课堂教学内容相关联,同时加入了思考性内容,目的是让学生掌握常见数字逻辑单元的设计方法。其中8051单片机IP核实验,使学生把本课程和单片机课程联系起来,扩大了课程交叉学习内容。第三部分是综合性实验,难度相对较大,需要学生在本课程基础上,查阅其他相关资料思考完成,目的是提高学生综合运用知识的能力。
2.2 实验平台:课程建设小组根据新编排的实验内容对实验系统做了升级,引入了一套新的实验平台。该实验平台是以ALTERA公司Cyclone系列EPlCl2Q240C8为目标下载芯片,等效规模在30万逻辑门以上,能够满足较大规模系统设计。EPlCl2核心板上配备了常见的通信接口,如VGA口、RS232串口、USB口以及PS/2口等。此外,实验平台上还提供了其他丰富的实验资源,如8字型和米字型数码管模块、LED显示模块、16~16点阵模块、128~32液晶显示模块、按键及拨码开关输入模块、话筒输入及语音输出模块、电平调节模块、A/D及D/A转换模块、EEPROM模块、单片机及RS232接口模块、可调数字信号源等。该实验平全能够满足新实验内容的需要,同时也可以用作PLD课程设计和毕业设计。
此外,课程建设小组还设计了一套基于CPLD器件MAX7128的最小系统板。该系统板结构简单,采用交直流双电源供电方式,提供板上多路数字信号源,支持USB及ByteblasterlI下载,所有IO引脚对外开放。可用作学生电子设计大赛和课后训练需要。
2.3 实验教学与考核:实验教学内容分为三个层次,由易到难。基础性实验必须全部完成,设计性实验要求学生选做6个完成,综合性实验选做1个完成。在选择设计性实验和综合性实验时,是有相互关联性的。如综合性实验选择“自动乐曲硬件演奏电路设计”,那么设计性实验中最好选择“数控分频器设计”,因为乐曲硬件演奏电路中的核心部分是一个数控分频器。再比如综合性实验选择
“语音采集处理系统设计”,则设计性实验中应该选择“ADC0809采样控制电路及简易数字电压表设计”和“比较器和D/A器件实现A/D转换功能电路设计”,因为语音采集与回放需要A/D和D/A转换模块。对于基础性实验和选做的设计性实验要求学生在课内时间完成,选做的综合性实验在课后完成,但最后必须在实验室验证通过。对于实验室,除正常教学时间外,每周会安排3--4个晚上的开放时间,学生可以完成课堂外的一些实践内容。如没有选做的设计性、综合性实验内容,协助导师完成的一些科研实践内容。
为了客观公正地反映学生实践动手能力,实验考核由三部分成绩组成:第一部分是平时实验成绩,占50%,考查的是基础性实验和选做的设计性实验完成情况;第二部分是综合实践成线,占30%,主要考查的是选做的综合性实验完成情况,也包括课外非选做实验内容及参与导师科研实践的完成情况;第三部分是期末上机考试成绩,占20%,主要考查同学基础编程能力。特别强调一点,每个实验的考核还要特别注重实验报告的撰写。每份实验报告应该包括:实验任务和要求,实验原理与方案,实验电路图、程序流程图,程序清单及必要的注释,仿真测试波形,实验调试中出现的问题和解决措施,实验体会等。