蒋宗礼,姜守旭
(1.北京工业大学 计算机学院,北京 100124;2.哈尔滨工业大学 计算机学院,黑龙江 哈尔滨 150001)
跟随改革开放的步伐,我国的高等教育取得了巨大的发展,不仅完成了从精英教育到大众化教育的转变,目前更是从大众化教育迈入普及化教育,实现了高等教育从小到大的跨越,解决了更多的人有机会接受高等教育的问题,全面提升了国民的素质。新的历史时期,将实现从高等教育大国到高等教育强国的转变,以培养出能够满足国家对高等教育、对科学知识和优秀人才比以往任何时候都更为迫切需要的人才,为实现中华民族的伟大复兴做出新贡献。为此,教育部近期提出“以本为本”“四个回归”“六卓越、一拔尖计划2.0”等一系列提高质量、提高水平的举措,以期加快一流专业建设,培养一流人才。
课程教学是高等教育的基本元素,课程教学改革必须跟上高等教育发展的步伐。按照新的教育理念,专业要站在人才培养的高度上设计培养方案,教师要站在人才培养的高度上开展教学活动,完成自己承担的教学任务,因此,必须重视课程教学目标的设计和表述,要做到课程教学目标必须与课程内容相符合,课程教学目标必须是具体而非宏观的,必须体现课程在整个培养方案中所承担的任务,必须能够体现人才培养的基本定位。
按照面向产出的教育理念,提高高等教育质量和水平,其根本追求是能够培养出高质量、高水平的(专业)人才。对一个专业来说,要科学地设计和实施专业人才培养方案,作为支撑和保障,要通过强化师资队伍建设,保证不仅能够科学地设计出培养方案,而且全体教师能够按照设计方案高水平地开展教学活动,有效地落实设计目标,并通过准确地评价,掌握落实的情况,还能够根据评价结果持续改进教育教学。也就是说,人才培养是一个体系,专业要站在人才培养的高度上,面向实际和未来,摆脱各种束缚,保证培养方案的科学性,通过课程教学达成毕业要求,实现培养目标;教师要站在人才培养的高度上开展教学活动,摆脱“教师为本、课程为本、教材为本”,瞄准毕业要求的达成,按照系统的要求确定教学目标,选择教学内容,组织教学内容,进行教学结果评价,并根据评价结果进行改进,要以知识为载体,实现思想方法的传授,培养学生的专业基本能力以及探索未知的强烈意识和能力,通过科学施教,提高教学活动的效率,保证面向毕业要求的课程教学目标的达成。这是目前课程教学的基本要求。
显然,要达到上述的基本要求,就像专业培养方案的设计是从“合理的培养目标”开始一样,对一门课程的教育教学来说,设计出合理的、便于落实、易于评价的课程教学目标是起点,而恰当地表述课程教学目标,对其落实具有重要意义。一般地,课程教学目标必须具备以下几个基本特征。
课程教学目标表述的必是通过本课程的教学可以达成的目标。
一门课程可以有多个教学目标,每个教学目标必须和教学内容相符合,是本课程的教学可以完成的,而且可以通过本课程在学生身上体现出来的教学结果进行达成情况评价。在设定目标的时候,除了要考虑课程本身的内容外,还应该充分考虑相关的先修课给学生打下的基础,包括学生(专业)修养、(专业)意识等认知能力和处理问题的能力。
不能凭想象设定一些难以达成的目标。例如,“能够对计算机科学与技术专业的复杂工程问题建立数学模型,并基于模型进行推理”就不能作为高等数学课程的教学目标。因为高等数学通常是在一年级开设的,而一年级的学生接触专业的内容还非常有限,更不要说“复杂工程问题”了,仅仅从这一点讲,这个目标就是无法实现的,更是无法评价的。类似地,“能够针对计算机科学与技术专业的复杂工程问题设计实验,有效采集实验数据”作为计算机科学与技术专业大学物理课程的教学目标也是不恰当的,甚至“能够面向计算机科学与技术专业的复杂工程问题设计程序”也不能作为计算机科学与技术专业程序设计课程的教学目标。
教学目标必须是具体的,便于实现,易于评价的。
教学目标的设定可以看成是整个培养方案设计的延续,相当于“详细设计”,它能够起到“指导落实”和进行有效的“落实结果”评价的作用。
21世纪以前,课程的教学目标瞄准的是“专业”的宏观追求,具体表现为从课程本身的角度出发,以知识传授为重点的表述,而且很多时候并没有清晰地给出“教学目标”。1997年,为了体现课程在人才培养中的作用,引导教师将课程教学放在人才培养体系中考虑,摆脱“课程为本”,笔者曾要求老师们以“本课程在学生培养中的地位与作用”对有关内容进行表述。以编译原理课程教学为例,目标表述如下(本文称为编译原理教学目标表述1):本课程是计算机科学与技术专业本科生的必修课,属我系本科教学计划的软件系列的一门课。该系列课程用于逐渐提高计算机科学与技术学科所要求学生具有的使用计算机进行问题求解、软件设计及实现等基本能力。本课程以形式语言为理论基础,通过对编译理论和技术的讲授,向学生介绍软件系统设计和基本方法。通过对本课程的学习,除了掌握词法分析、语法分析、语法制导翻译和存储分配、代码优化等基本方法外,还主要致力于培养学生提出问题、分析问题和解决问题的能力,同时了解和初步掌握“理论—抽象—设计—实现”制作软件的4个过程,以达到自觉应用的目的。
该表述中,虽然体现了“能力培养”的追求,但是表述不够具体。例如,“用于逐渐提高计算机科学与技术学科所要求学生具有的使用计算机进行问题求解、软件设计及实现等基本能力”“主要致力于培养学生提出问题、分析问题和解决问题的能力”都是比较宏观的,很难对其达成情况进行考核,而且还有不少并不是“课程教学目标”的表述。
到了2006年左右,编译原理课程的教学目标体现出更重视“能力培养”的教学追求,并站在专业人才培养的高度进行设计和表述,而且比较具体。当时的表述如下(本文称为编译原理教学目标表述2):掌握编译原理中的基本概念、基本理论、基本方法,在系统级上再认识程序和算法,提升计算机问题求解的水平,增强系统能力,体验实现自动计算的乐趣。具体来说:
目标1:掌握程序变换基本概念、问题描述和处理方法。这些方法主要有自顶向下、自底向上、逐步求精、递归求解、目标驱动、问题分析、问题的抽象与形式化描述、算法设计与实现、系统构建、模块化等,这些都是本学科最经典、最常用的问题求解方法和系统设计方法。
目标2:养成“问题、形式化描述、计算机化”这一典型的问题求解过程的习惯,逐步实现从“实例计算”到“类计算”和“模型计算”的跨越。
目标3:增强理论结合实际能力,获得更多的“顶峰体验”。让学生亲历理论结合实践的乐趣,使优秀的学生获得更多的“顶峰体验”,培养他们理论结合实际的能力。
目标4:从宏观到微观、从微观到宏观,培养系统能力。站在系统的全局去看问题、分析问题和解决问题,并实现系统优化。经验表明,培养学生以系统的观点去看问题,是非常重要的,也是比较困难的。可称之为“系统”能力。
按照面向产出的教育教学理念,专业培养目标给出的是学生毕业5年左右的职业(能力)预期,而毕业要求则是指学生毕业时必须达到的要求,这些“要求”的达成,能够支撑学生在毕业5年左右实现培养目标。毕业要求的落实靠培养方案中安排的教学活动(以下统一称为课程),因此,课程的教学目标必须明确地体现该专业相应的毕业要求的内涵。目前情况下,考虑到每项毕业要求比较宏观,不易于落实和评价,从而将其分解成若过个“可衡量的”指标点。课程教学目标就需要具体地对应到相应的指标点,这就是该课程承担的任务。
从上述要求不难看出,课程教学目标的设定和表述,不再是课程本身,而且也不能仅仅是专业人才培养的总体要求,而应该是更为具体的“要求”,也就是说设计要从原来的“粗放”走向“精细”,以体现从“经验”到“科学”的要求。也正因为如此,一个课程教学目标应该对应一项任务(一个指标点),以便为后续的毕业要求的达成评价提供有效数据。
编译原理教学目标表述2中最大的不足是它们比较宏观地体现了专业教育的要求(相当于毕业要求),直到2014年,这样的教学目标仍然能够很好地适应当时提出的“毕业要求”,但当我们需要将课程教学的评价结果用于毕业要求达成情况评价时,缺点便显现出来,因为4个子目标交叉对应多个毕业要求指标点,难以对毕业要求的达成情况评价提供有效数据。根据这一要求,2015年,在保持总目标“掌握编译原理课程中的基本概念、基本理论、基本方法,在系统级上再认识程序和算法,提升计算机问题求解的水平,增强系统能力,体验实现自动计算的乐趣”的基础上,重述后的课程教学目标如下(本文称为编译原理课程教学目标表述3)。
目标1:使学生掌握职业生涯中反复用到的基础理论和基本方法,以用于解决难度较大的问题,处理复杂系统的设计与实现。对于毕业要求1.1达成提供支撑(注:这里的毕业要求1.1指的是北京工业大学计算机科学与技术专业毕业要求1的第1个指标点,其他类似)。
目标2:培养学生选择适当的模型,以形式化的方法描述语言及其翻译子系统,将它们用于系统设计与实现的能力。对于毕业要求1.4的达成提供支撑。
目标3:强化学生数字化、算法、模块化等专业核心意识,对自顶向下、自底向上、递归求解、模块化等典型方法的掌握,培养其包括功能划分、多模块协调、形式化描述、程序实现等在内的复杂系统设计实现能力。对于毕业要求3.3的达成提供支撑。
目标4:使学生经历复杂系统的设计与实现,培养其对多种方法、工具、环境的比较、评价和选择能力。方法选择:选择实现词法、语法分析的方法;实现途径选择:直接设计实现、使用某种自动生成工具设计实现(自学);工具与环境选择:使用的开发语言和环境;比较与评价:在组间相互评价中锻炼评价能力。对毕业要求5.2达成提供一定的支撑。
目标5:通过按组完成系统设计与实现,培养学生团队协作能力。学生需要在分工、设计、实现、口头、书面报告等环节中相互协调、相互配合。对毕业要求9.1达成提供一定的支撑。
目标6:通过实验系统设计实现过程中的组内讨论,验收过程中的报告撰写、陈述发言等,培养专业相关的表达能力。对毕业要求10.1达成提供一定的支撑。
从编译原理课程教学目标描述1到编译原理课程教学目标描述3的变迁可以看出,站在人才培养的高度,设定恰当的课程教学目标,以基本的知识为载体,瞄准目标组织教学内容,实施教学活动,进行有效的“课程教学目标达成评价”,并根据评价结果进行课程教学的改进,是现在课程教学的基本要求。这也体现了CBE(面向课程的教学)和OBE(面向产出的教学)的基本区别以及现代工程教育的基本要求。
按照国际等效的中国工程教育认证标准,本科工程教育要聚焦学生解决复杂工程问题能力的培养。这一基本定位必须在课程教学目标中得到具体体现。对于这一点,需要注意的是在课程教学目标中直接表达为“计算机科学与技术专业的复杂工程问题”很多时候是不恰当的。例如,“能够设计针对计算机应用领域复杂工程问题的处理程序”就不适宜作为程序设计课程的教学目标,“能将离散数学知识用于识别与分析复杂系统关键问题,并能证明其正确性”也不能作为离散数学课程的教学目标。任课教师在起草相应课程的教学大纲以及专业在审核课程的教学大纲时,一定要想清楚该课程在培养学生解决本专业的复杂工程问题能力时,具体发挥怎样的作用。一个很好的提示是《华盛顿协议》所给出的复杂工程问题的7项特征,我们需要认真、深入地消化和理解。
第2个方面的问题是现代教育讲究的是能力培养,也就是将学生通过课程学习的产出定义为“能力”,而不再是“知识”,这就是我们所说的“课程教学要从CBE走向OBE”。这样一来,我们习惯的“掌握”“理解”“了解”等描述对知识要求的词汇就难以体现对能力的要求。Bloom所给出的认知层级的描述建议可以给我们较好的参考。
从编译原理课程教学目标的变迁,可以看出课程教学追求随着高等教育的发展不断变化。作为一名教师,特别是重要的公共基础课和专业基础课的教师,在课程内容(知识载体)没有极大变化的情况下,如何不断改革,不断提高课程的授课水平,真正做到常讲常新,满足高等教育发展带来的新要求,包括新的先进教育理念,体现高等教育面向未来、内涵发展的基本特点和追求。课程教学目标设计和表述的不同,也体现出课程教学追求的不同,这就要求我们无论在讲课方法、重难点的选择上,还是在一般的讲授关注上均有所不同。例如,编译原理中的文法概念就不再仅仅是一个概念,我们需要从抽象模型的建立到基于这个抽象模型设计处理系统(如语法分析系统)重新去认识,以体现复杂工程问题的“需要通过建立合适的抽象模型才能解决,在建模过程中需要体现出创造性”特征。相应地,教学结果评价也必须瞄准各个教学目标,且教学档案也必须包括评价过程、基于评价的改进等相关内容。