邝继顺,凌纯清,胡红平
(湖南大学 信息科学与工程学院,湖南 长沙 410082)
长期以来,大学课堂只注重传授知识,学科方法要靠学生自己慢慢从实践中“悟”。过去我们经常说要培养专业人才,现在又说要培养复合型人才。复合型人才首先应该是专业人才,如何才能培养出合格的专业人才呢?学生学了一些专业知识就能成为专业人才吗?笔者从学科、专业与课程谈起。
任何一门独立的学科均有其独特性。我国国家标准GB/T13735-92对学科的定义是“学科是相对独立的知识体系”[1]。一门独立学科的形成需要如下几个要素:一是具有独特的、不可替代的研究对象,二是形成特有的逻辑系统,三是具有特有的方法、技术或手段。
专业依托学科而存在。《辞海》把专业定义为“高等学校或中等专业学校根据社会分工需要而划分的学业门类”,是人才培养“基地”。学校设置专业,既要适应社会用人需要又要考虑学校的学科基础。高校按专业组织教学活动。
课程体系关系到专业人才培养质量。课程体系指同一专业不同课程按照某种顺序排列,是一系列教学活动和进程的总和,决定学生通过学习将获得怎样的知识结构。由于便于设计和管理,国内外各个大学通常将课程体系作为保障人才培养质量最重要的基本要素。
课程内容是课程体系的实质。课程内容指为达到课程目标而选择的学科中特定的事实、观点、原理和问题及其处理方式(包括方法和形式),它是学习的对象。教师怎样教,取决于教师对课程内容的领会和把握、对教材内容的舍取与再组织,取决于教师如何因地制宜地将课程内容物化为形式多样、丰富多彩的教学内容。
学科方法论是课程内容的重要组成部分。但遗憾的是,根据作者多年作为教学督导参与听课并与教师交流的实际情况来看,几乎没有一个教师意识到学科知识体系构成中学科方法论是一个不可或缺的重要组成部分,也没有人把学科方法论教育作为课堂教学的重要内容。
知识虽然很重要,但求学者不能成为它的“奴隶”。当今世界,没有人怀疑知识的重要性,因此长期以来教育以传授知识为本位。但信息社会知识不断爆炸,产生很多冗余,且某些知识很容易过时。当太注重具体知识时,很容易迷失方向,成为知识的“奴隶”。
方法论是人们认识世界、改造世界的根本方法。它表明人们用什么样的方式、方法观察事物和处理问题。学科方法论研究学科内一系列具体的方法。一个学科不仅有自己独特的研究对象、特殊的理论体系,还有特有的研究方法,当然也有与其他学科相同或相似的方法。
学科方法论是专业领域攻坚克难的领航员。它既蕴涵于各学科的知识中,又超脱于知识,是各学科知识产生、发展、结果等揭示的科学规律和解决问题的方法,是生产建设、科学研究及社会活动强劲的思想武器[2]。有学者提出教育改革应该包括教学方法、教材与教育理论3个方面,并认为学科教育的本质是学科方法论教育[3]。
建构主义学习理论认为,教学要以学生为中心,强调学生对知识的主动探索、主动发现和对所学知识意义的主动建构[4]。这3“主动”都离不开学科方法论。国际经济合作与发展组织根据缄默知识教育理论把知识分为4种类型:一是知道是什么的知识;二是知道为什么的知识;三是知道怎样做的知识;四是知道是谁的知识。其中,知道怎样做的知识与学科方法论的关系十分密切[5]。
教育家陶行知在谈及学生应该掌握的三力(生活力、自动力、创造力)中的自动力时指出,“活的人才教育,不是灌输知识,而是将开发文化宝库的钥匙,尽我们知道的交给学生”[6]。这钥匙即方法,方法是关键。掌握了方法,养成自动力,教育之收效能事半功倍[7]。
方法是能力的要素。《辞海》将“能力”定义为:“通常指完成一定活动的本领,包括完成一定活动的具体方式以及顺利完成一定活动所必需的心理特征”。这里的“具体方式”即指方法与形式,可见方法是构成能力的要素[8]。
大学教育是专业教育。自从美国威斯康星大学创立之后,大学便承担了三大任务,即培养人、发展知识和服务社会[9]。大学教育最主要的功能是专业教育,即培养掌握本专业的基本理论和基本技能,为将来进一步深造或从事专业工作做好准备。过去说要培养专业人才,现在又强调培养复合型人才,但复合型人才绝不等同于“万金油”。不否认通识教育在大学教育中的重要地位,但过分强调通识教育的作用,培养出来的学生则看似什么都知道,但可能什么也干不了。
专业教育的本质是学科方法论教育。通过接受专业教育成为专业人才与只听几门专业课、学一些书本上的专业知识相差甚远。在教科书中,学科研究对象是明明白白的,理论体系也跃然纸上,但研究方法很多是隐含的,或者说不那么明显。解决问题时,使用合适的方法可能比知晓相关原理或知识更为重要,有时甚至是至关重要的。
学科方法论教育不能可有可无。在教学过程中,教师与学生实际上都接触到两个平行而又相互交错的世界,一个是知识,另一个是方法。但是,在各个学校的教学改革中,虽然选用了优秀教材,少讲多练加强了实践,增加了选修课和各种社会活动,但学科方法论教育与培养始终是“潜移默化”的、“熟能生巧”的,甚至是可有可无的,基本上没有受到应有的重视。这种现象不能再持续下去了。
另外,要充分发挥课堂教学在学科方法论教育方面所起的作用。课程教学有多种形式,如课堂教学(这里特指在教室上课)、实验教学、实习教学、课程设计等。不能简单地认为在课堂上只是传授知识,能力只能在实践中培养。曾经有一位物理学老教授在讲授“弹性”知识点时,点评了当年物理高考试卷中的一道题目,标准答案给出的解题步骤既冗长又难以理解,他换了一个思路,只用了5行就给出了答案,方法简单明了,给学生们留下了极为深刻的印象。这个例子说明,在课堂上传授方法不仅需要,而且可行。
随着计算机学科的飞速发展和延伸,尽管ACM/IEEE计算机学会将计算机学科的知识领域 从2001年 的14个 增 加 到2013年 的18个,并开始将扩展后的计算机学科称为计算学科 (Computing Discipline),但有关学科的基本概念、观点和方法仍然没有变化[10]。
计算(机)学科方法论主要包含3个方面: 3个过程或3个形态、重复出现的12个基本概念和典型的学科方法[8]。为叙述方便,本文简要重复如下。
3个过程,即理论、抽象、设计。重复出现的12个基本概念包括绑定、大问题的复杂性、概念和形式模型、一致性和完备性、效率、演化、抽象层次、按空间排序、按时间排序、重用、安全性、折衷与决策。典型的学科方法包括数学方法和系统科学方法。
数字逻辑是计算(机)学科结构与组织知识领域中的一门课程,负有传授相关基础知识和部分学科方法的责任。由于受篇幅限制,我们仅就学科方法论中的每一个方面举例说明,供同行在教学实践中参考。
1) 理论(公式的作用)。
很多理论有各种各样的公式。学生通常对公式的感觉是既难记,又不知道是什么意思、有什么用,因此学习兴趣不大。事实上,每一个公式都有理论或现实意义,反映理论或现实中相关各个因素之间的关系,可以指导理论探索或实践。大部分教师,特别是工科教师在讲解公式时往往做得不够好。
布尔代数中的“与”运算和“或”运算就像普通代数中的“乘”运算和“加”运算一样,均满足结合律和交接律。结合律和交换律对大学生来说显得太简单,因此他们往往不屑一顾。笔者举了高斯小时候计算从1加到100的例子,学生们也知道高斯是怎么算的,但却几乎没有人能准确回答为什么他能那样算。笔者解释后,他们立马感觉到了公式的重要性,对公式的理解也跃升到一个新的高度。
2)抽象(构建状态图)。
抽象有时也被称为模型化,是计算(机)学科处理复杂问题经常采用的一种重要手段。构建状态图是描述时序电路或状态机的一种基本方法。状态图中的每一个状态是电路多种(甚至是无限多种)实际工作状况的抽象。
例如,状态S1表示输入X在最近3个时钟边沿的取值均为1,那么当X连续输入3个1、4个1、任意多个1时,电路处在S1状态。状态S2表示电路的两个输入按照“00,01,11,10”的顺序输入,其中任意一个组合可以重复任意次,而且“10”是最后出现的输入组合,则当输入序列为“00,01,11,10,10”或者“00,00,01,01,11,10”时电路处在S2状态。
状态图中的状态数目应该尽量少,状态数目越少,抽象程度越高,电路成本一般越低,但难度越大。学习构建状态图是一种锻炼抽象思维能力非常好的办法。
3)设计(逻辑函数化简)。
在逻辑电路设计过程中,通常要对表示输出与输入之间关系的逻辑函数进行化简,以降低电路成本。逻辑化简的一个重要原理是资源共享,即每一个逻辑门的输出要尽可能多地连接到其他逻辑门的输入,这势必使电路从输入端到输出端的路径很长,电路的工作速度会因此降低。因此,如果任意使用逻辑化简的话,它对电路成本和性能的影响会背道而驰。所以,必须适度运用逻辑化简,设计出性价比最好的电路。
4)概念(层次化设计方法)。
层次化设计是解决复杂设计问题又一种常用方法。层次化设计中的每一层只关注设计中的一部分细节,同一层的诸因素从属于上一层的因素或对上层因素有影响,同时支配下一层的因素或受到下层因素的作用。在构建完层次模型之后,整个设计就简单明了,设计者的注意力可以集中在相对简单的各个层面上,采用简单、有效的方法解决一个又一个相对简单的问题。
为了使层次化方法更为有效,各个层次中的因素要尽量使用相同的设计,如果不同层次之间也能够使用相同的设计则更为理想。这种观点与计算(机)学科中的“重用”和“演化”这两个概念关系密切。如果各个层次中的因素使用相同的设计,则只需要进行一种设计,整个系统可以多次“重用”这个设计。更进一步,如果这个设计与已有的某一个设计相同,则直接拿来“重用”便可。另外,如果将来某一天有了新的技术或工艺,要对系统进行升级,也只需要“演化”一个设计。
5) 数学方法(算术功能块设计)。
迭代是一种处理复杂数值计算问题的数学方法,它将输出作为输入再次进行计算,经过多次循环后得到满意的计算结果。在程序设计中经常使用这种方法。事实上,迭代方法在硬件设计中也经常用到。数字电路中的算术功能块要对二进制输入向量进行处理,产生二进制输出向量。当向量的长度比较长时,通过真值表获得功能块输出与输入之间的关系,会因真值表太大而无法实现,这时迭代法是不二选择。
6)系统科学方法(硬件描述语言)。
现代集成电路都是用编程方式设计的。一个大规模数字电路是一个非常复杂的系统,应该使用系统科学方法进行设计。笛卡尔发明的模块法是系统科学设计方法中的一种具体方法。一个系统可以划分为相互关联的几个主要模块,每个模块又可以划分为若干个更小的模块,直到每一个模块足够小、足够简单以便于实现为止。硬件描述语言中的一个进程可以用来描述电路中的一个模块。因此,至少可以用3种方法描述一个大规模电路。一是仅用1个进程描述整个电路,这时把整个电路看成是一个模块;二是用2个进程分别描述状态存储与组合电路;三是用3个进程分别描述状态存储、下一状态逻辑和输出逻辑。事实上,一个大规模电路通常要用比3个进程多得多的进程进行描述。到底用多少个进程,取决于如何从系统的观点,将整个电路划分为多少个功能相对独立而又相互关联的模块,这与系统设计的多个方面有关。
学科方法论教育是大学专业教育的重要内容。掌握并会灵活运用本学科的基本方法解决实际问题,是专业人员胜任本专业工作必备的素质。教师在课程教学中要努力弥补学科方法论教育方面的短板,要充分发挥课堂教学在学科方法论教育层面所起的重要作用。教师应该努力成为学科方法论的传播者与创新者。