摘要:探讨计算机类课程教材的编写方法,提出一种计算机类课程教材编写的层次模型,给出教材编写的基本原则,阐述如何将这些教材的编写策略应用到教材编写的实践中,总结教材编排技巧,说明教材编写实施效果。
关键词:教材;课程;计算机;编写策略;层次模型
0引言
教材是依据课程标准编制的、系统反映学科内容的教学用书。教材是课程标准的具体化,是最基本、最重要的教学工具[1]。虽然目前网络教学视频越来越丰富,但是阅读教材仍然是最高效、最系统的学习手段,因此,教材的重要性是其他教学媒体所无法替代的。
一直以来,教材的重要性被课程的光环所遮蔽,近年来,多个教材*策的连续出台则标志着教育部对教材的作用开始重新重视起来[2]。应用型课程教材质量不高一直是困扰高校计算机专业人才培养的问题。这些问题不仅表现在许多教材蕴含的教学策略不明显,对教学设计与教学线索的体现不够等方面,也表现在教材内容与职业岗位要求脱节现象比较严重[3]。教材的编写绝不仅仅只是对知识点进行罗列和组合,一部好的教材的形成是一项极为复杂的开发行动,其中有大量的教学技术问题需要研究[4]。
近年来,虽然各高校教师也编写了许多较好的计算机教材,但在应用型课程领域,许多畅销的教材大都是社会培训机构编写的,比如传智播客、黑马程序员等机构编写的计算机教材,受到了许多高校教师的普遍欢迎。这不得不引起我们深思,为什么常年从事高等学校专业课教学的教师,编写的很多教材却还不如培训机构编写的教材呢?
1计算机教材编写的基本原则
1.1教材的定位应明确
在编写教材之前,应明确教材和学术著作、科普读物的区别。我国的高等教育是从精英教育开始发展起来的,早期的高校教材很多都是从学术著作的基础上照搬过来的,或者对学术著作进行提取和整合而成教材的。由于学术著作面向的读者对象是同行业专家,因此不可能从基础的开始讲起,而是强调论证体系的严密性,也不会考虑教学设计的问题,在叙述上,学术著作一般采用总、分、总的结构模式,而教材的编排则需要符合学生的认知过程,在编排上,需要先找一个学生普遍容易接受的知识切入点,然后以点带面,逐步深入地介绍知识内容,故教材每一章节都应有知识切入点的设计。可见,教材的通俗性比严谨性更为重要。
教材与科普读物相比,其编写目的和读者对象均不相同,教材面向的是有一定基础的有目的的学习者,这使得教材的内容必须具有一定的系统性和深度,而不能像科普读物一样泛泛而谈,停留在比较浅显的层次。
1.2教材应该有“学习线索”的设计
教材绝不可以只是知识点的罗列,那样只会使教材成为一本复习用书。教材面向的是初学者,根据初学者的认知逻辑设计一个合理的“学习线索”是一本教材成败的关键。学习线索尽量避免“概念牵引”的老套路,而应注重经验优先、情趣激活、各取所需,以符合学生审美心理的普遍需求和个性需求。
教材编写者在设计“学习线索”时,可采用“自我回忆法”,所谓自我回忆,即在讲授一个知识点之前,先仔细回忆自己从开始接触到这个知识点到完全弄懂的过程是怎么样的,是经过哪几步一步步弄明白的,再按照这一步步来设计该知识点的教学线索。
比如传统的数据库原理教材,一开篇就讲数据库的相关概念和发展历史等,这种叙述和学术著作差不多,没有体现学习线索的设计,初学者不可能一开始就对数据库的概念有较深的认识,故教学效果不可能好。
为此,教材编写者可先回忆自己是怎样逐步把数据库相关概念弄懂的,然后将这些步骤作为学习线索进行叙述。比如初学者虽然没有数据库的概念,但肯定知道表格。因此在教材内容中,可先展示一张生活中常见的表格(如学生信息表),然后给出二维表中的相关概念,如行、元组、记录等。接下来讲述数据库中的二维表对表格有哪些额外的要求(即约束条件),引出几种完整性约束的概念。最后设疑:如果用一张表格存储所有的数据会有什么问题,引出数据冗余、数据不一致性的概念,再给出问题的解决方案,即将表格拆分成若干张表格,并用外键关联起来,从而点出数据库的初步概念:数据库从逻辑结构上看,就是若干张表的集合,并且表之间可以有相互关联。最后,提出数据库的存储问题和用户视图的问题,从而引出数据库的三级模式结构和二级映射独立性这一数据库的体系结构。
故对数据原理概述,编写教材时可设计如下的学习线索:展示表格——表格的相关概念——表格的约束条件——表格的拆分——数据库的逻辑结构——数据库的三级模式结构和两级映射。按照这样的学习线索来编排教材内容,明显更符合学生的认知逻辑,且实现了分散难点(比如将表中的相关概念和数据库的相关概念分开来提出)。
1.3教材要能体现教学策略
在计算机专业的教材编写中,经常需要用到“先行组织者”教学策略。“先行组织者”是心理学家奥苏贝尔年提出的一个概念[5]。所谓“先行组织者”,是指先于学习任务本身呈现的一种引导性材料,它比学习任务本身具有更高的抽象、概括和综合水平,并且能够清晰地与认知结构中原有的概念和新的学习任务相关联。
设计“组织者”的目的,是为新的学习任务提供概念上的固定点,增加新旧知识间的可辨别性,在学习者的已知和未知之间架设一道桥梁,使得对新知识的学习更有效果。
以《电子商务安全》教材中“使用数字证书进行身份认证”为例,在讲解该新知识之前,可以把“监考老师验证考生身份的过程”作为“先行组织者”。
教材编排安排如下:首先引导学生回忆“监考老师是怎样验证考生身份的?”,然后指出,这个验证过程分为两步:第一步是验证考生的身份证是否是真实有效的;第二步是验证该身份证是否是考生本人的。接下来,就可指出,数字证书验证身份的过程和监考老师验证考生身份的过程十分相似,也是要分为两步,第一步是验证某个实体的数字证书是否是真实有效的;第二步再验证该数字证书是否是该实体所拥有的,这可以通过验证实体是否拥有该数字证书的私钥来实现。使用“先行组织者”教学策略后,对数字证书的身份验证过程就不再是一堆冷冰冰的加密解密运算过程了,学生通过先行组织者就能理解为什么要这样操作,对具体运算过程就很容易理解了。
教材要有导入设计,而“先行组织者”又可以非常自然地作为知识点教学的导入环节,例如,在《网络编程》教材中,Select模型是实现TCP一对多通信的重要方法之一,但Select模型的算法比较复杂,通常有5重循环嵌套,因此直接讲该算法的过程是很难讲清楚的,学生也无法明白为什么要这样做。而实际上,Select模型的原理和生活中常玩的“打地鼠”游戏是很相似的。因此,可将“打地鼠”游戏作为先行组织者。
首先,给出一幅打地鼠游戏的图,让学生回忆打地鼠游戏是怎么玩的。然后总结打地鼠游戏的过程:游戏者要一直守在打地鼠游戏机前(阻塞模式),游戏机台面上有很多只地鼠(套接字的集合,将地鼠看成套接字),地鼠伸出头来(有套接字消息),就打地鼠(处理套接字消息)。最后将打地鼠游戏和Select模型相似点进行对比:地鼠对应套接字,很多只地鼠对应套接字集合。地鼠伸出头来——套接字有可读消息。区别在于,套接字集合中的套接字有两种:监听套接字和通信套接字,需要采用不同的处理方法。这样,初学者就能将Select模型与熟悉的打地鼠游戏关联起来,符合建构主义学习理论,按照打地鼠游戏的过程,学生就能理解Select模型的流程了。
1.4教材要有巩固设计
教材除了让学生“看得懂”之外,还要能让学生“记得住”。教材的巩固设计可从以下几方面着手:①有些使用频率比较高的操作和重点内容,可以在相关知识点涉及到的时候以不同形式重复叙述,以激发学生的回忆;②善于利用表格或图形将有关联性的知识点进行比较和归纳总结,因为通过归纳总结后,对知识点的理解和记忆会得到加强,还能达到融会贯通的效果。③对于教材中的重点或难点内容,要有个例题或习题,或“想一想”“思考”之类的提问。例题讲解后,再放一个巩固题,巩固题不要将答案写在教材上。这样能为教材在课堂上的使用提供很大的便利。④教材的每一章后要安排大量的习题,习题的题型要多种多样,各种难度的都有,这样能激发学生做题的兴趣。对于操作性较强的课程,还可安排实验,进一步对相关知识进行巩固。
2教材编写的层次模型
在编写教材时,必须遵循一定的步骤,根据多年的教材编写实践,总结出如图1所示的教材编写的层次模型,按照该层次模型,能加快教材的编写速度,使教材更符合规范,从而保证教材的质量。
教材编写的层次模型图1教材编写的层次模型
第1层次:确定教材的内容范围。这一层次可根据课程标准或教学大纲列出的知识点确定教材的内容范围,在这个阶段,不要考虑教材的知识结构和教学设计,只是把教材要讲授的知识点罗列出来。这一阶段要取舍合理,做到“该有的都有,不该有的没有”。切忌包罗万象,贪大求全,把教材写成手册。
第2层次:教材的知识结构设计。这一层次要认真梳理各个知识点之间的逻辑关系,基本原则是面向初学者认知逻辑,构建科学合理的知识体系结构。这一阶段要注意循序渐进、分散难点,降低台阶。这阶段的主要任务是教材章节目录的初步设计,在设计章节时应注意各章各小节之间内容的平衡,即每个小节目录下的篇幅应当都差不多。如果每小节目录下篇幅不平衡则说明知识结构设计有问题,有些重要内容没有用章节标题强化,因为章节标题能起到强调重点的作用。
第3层次:教材的认知结构设计,即教学设计阶段。这一层次首先应明确教材的定位,是为哪层次的读者而写,如重点本科、应用型本科、高职专科。接下来,根据教材的教学目标和初步的教材目录进行教学策略设计。这一阶段主要任务是分析教材内容的知识特点和知识结构,将知识点分类为元知识(基础知识)、硬知识(识记的知识)和软知识(实践类知识),为每个知识点分别设计教学策略和教学方法,比如选用问题驱动、任务驱动还是先行组织者教学策略,最后对知识点之间进行关联引导设计。
第4层次:教材的认知结构实现。这一阶段的主要工作是根据认知结构的设计,进行教材的导入设计、学习线索设计等。在这一步,由于涉及到教学设计,通常会要对教材目录进行修改完善,并在教材内容中增加相关案例,因此这一层次是对教材目录和内容的一次打磨。
第5层次:教学便利设计。这一层次包括以下几点:①补充和完善教材内容涉及的先修知识。比如在《密码学》教材中,由于密码学需要数论作为先修知识,可适当补充数论的知识,先修知识尽量安排在需要用到该知识的相邻位置,这样读者阅读到先修知识后马上就能将其应用到实际中去,而最好不要将先修知识作为附录来安排。②对符号进行说明,比如密码学中一般将“
”作为字符串连接符,但没学过密码学的读者可能并不知道这一点,因此应对读者可能不了解的符号进行说明,以方便读者自学。③对公式进行通俗性描述,比如,对于朴素贝叶斯分类的公式,可对原始公式给出如下解释后的公式。
贝叶斯公式解释对于网络编程中的TCP通信函数,其参数众多,难于记忆,也可给出如下解释后的函数形式(以accept()函数为例):
通信套接字=accept(监听套接字,对方地址,地址长度的指针)
可见,教材的便利设计在一定程度上是要轻视严谨性,重视通俗性。也就是将教材中晦涩难懂的地方用通俗的语言或形式表达出来。另外,在保证读者能容易看懂的前提下,还可对计算机教材作如下两方面的改进。
(1)对于程序设计类教材来说,有些程序比较复杂,导致完整源代码可能很长,但关键代码一般很简短。国外的教材在保证读者能看懂的前提下,一般都只列出关键代码,这比给出完整的源代码要好得多。因为,这不仅可以节约版面,其次也是最重要的,能够使读者不被无关代码所干扰,从而节约阅读时间。
(2)对于计算机教材中的软件运行界面,如果界面中有很多空白区域,那么可采用图像剪接的方法,将空白区域尽量缩减,从而缩小图像的尺寸,节约版面,并能使读者更快地看清软件界面的关键地方。
3教材编排的一些技巧
1)内容组织上的技巧。
在内容组织上,遵循以点带面,先易后难的原则。所谓以点带面,就是先从所有知识点中选几个知识点进行讲解。例如,对于程序语言类教材,在程序入门时,可先给出几个最简单的程序,并对每一行代码进行讲解,这就是“点”。以点带面原则符合从特殊到一般的学习规律。
先易后难原则,教材内容要先易后难,核心理论不可一步得出,要螺旋上升地解释。比如,数据库原理中对数据库体系结构的认识,就有一个逐步认识提升的过程(从逻辑结构上升到数据库的三级结构)。对于机器学习的概念,可先讲机器学习是从事例中学习,什么是从事例中学习,通俗地讲就是“吃一堑,长一智”,然后讲机器学习是从大量事例中学习,即“吃十堑,长一智”,最后讲机器学习可通过学习改善模型性能,这样读者就能逐步深入地理解机器学习的概念。
先讲主要的再讲次要的。对于几个平行的知识点来说,应把重要的常用的内容放前面介绍,次要的或不常用的,放后面介绍或不介绍。例如,对于VC++MFC编程的教材,大多数都是先讲多文档界面(MDI)窗体程序,但MDI程序的代码很复杂,且使用较少,完全没必要先讲。而使用得最多的,也比较简单的其实是对话框程序,因此,应先叙述对话框程序的制作,并将其作为重点讲授,到最后再略微提到多文档界面(MDI)窗体程序。总的来说,应用软件的功能,遵循二八定律,因此,教材也应该用80%的篇幅介绍20%最常用的功能。
2)教学策略上的技巧。
编程语言的比较式教学。对于编程语言的讲解,善于利用比较法进行叙述。即如果初学者已经学过一门以上的编程语言,则学后续编程语言时可以将两门语言的不同点进行对比讲解,而相同的地方从简或从略讲解,这样能够快速掌握新语言,并且加深对各种编程语言的整体认知。
教材要生动活泼,语言要通俗易懂。比如,大数据的教材,在大数据概述一节中,通常有“大数据的应用领域”这一小节,但这样的小节标题不能吸引学生,实际上,完全可将该小节标题改写为“大数据的职业岗位”,这样更贴近学生的生活,从而引起学生的兴趣。
教材要能分解问题,拆分难点。识别出教学中的难点内容是教学设计的重要一环,对于难点内容,编写教材时应设计有效的教学策略,并详细讲解。比如对于动态网站编程来说,数据的增、删、改、查是教学中的难点也是重点,为此,对于这几种操作,除了给出程序代码外,还应画出图形对这几种操作的过程进行分解、细化,达到详细讲解的目的。
4教材编写实施效果
在长期的教材编写实践中,逐步总结出以上教材编写的策略和方法,并将其应用于教材编写实践中。10余年来,作者已累计在清华大学出版社等社以第一作者编著计算机类教材20部,其中的代表作有《TCP/IP网络编程项目式教程(微课版)》《电子商务安全(2版)》《HTML5+CSS3Web前端开发》《PHPWeb程序设计与Ajax技术(2版)》《ASP动态网页设计与Ajax技术(2版)》《密码学及安全应用》《大数据分析——基于Python实现》,均运用了上述教材编写的方法,被很多所高校选用作为教材,并有书评,取得了良好的反响。
以《TCP/IP网络编程项目式教程》为例,按照教材编写的层次模型,编写步骤如下:①确定教材的知识点范围,由于教材面向的是初学者,以基本知识点为主,不常用的细节问题不讲,但有实用价值的问题要作为知识点,例如将控制台程序转换成windows界面程序的方法,虽然不是网络编程的知识内容,但却是网络编程实践中一个摆脱不掉的技术问题;②知识体系结构设计,Socket的基本函数和WinSock五种I/O模型是网络编程的主要知识点。按照“TCP一对一同步通信→TCP异步通信→TCP一对多通信→Select模型一对多通信→完成端口模型”构建知识体系结构,就将Socket编程的难点“WinSock五种I/O模型”分散到了不同的任务实例中讲解。
③教材的认知结构设计,第一章网络编程的基本原理,套接字的类型和种类属于元知识,需要学生理解掌握,以讲解为主,故采用问题驱动的教学策略。其余章节的知识类型属于软知识,需要学生实践掌握,故都采用任务驱动的教学策略。④教材的认知结构实现。第一章的导入以“QQ这个软件是怎么做出来的”作为问题驱动;后面几章采用任务驱动,分别实现QQ的三大功能,如一对一通信、一对多通信(群聊)、文件传输。⑤教学便利设计,对网络编程涉及的相关知识进行讲解,比如多线程编程技术,VC中字符串处理方法等,并在附录中介绍了使用Python和Java制作TCP通信程序的方法,目的是让读者融会贯通。
5结语
实践表明,遵循计算机教材编写的基本原则,构建教材编写的层次模型,能够很好地解决目前计算机教材在编写时存在的重实践、轻理论研究,重视知识罗列、忽视教学设计的问题,提高计算机类教材的编写质量,从而带动计算机类课程建设及专业人才培养质量的提高。
作者:唐四薪发表于《计算机教育》年11期