面向复杂工程问题的算法系列课程教学案例选择与设计方法探讨
作者: 朱玉全 孙蕾 黄承宁摘 要:案例教学是算法系列课程行之有效的一种教学方式,有效的教学案例是案例教学取得成功的重要标志。针对教学案例选取不具代表性、案例分析不到位等问题,该文提出相应的解决方案。该方案从复杂工程问题与教学案例之间的关系入手,围绕如何解决复杂工程问题组织教学过程,形成“选择案例、分析案例、形成解题思路、撰写算法、编写程序、运行程序、验证案例”的案例教学过程,提出案例选择等7个原则,以及基于枚举法的教学案例分析方法,举例说明论文所提方法的具体实施过程。该文所提原则和方法对其他课程教学案例的选择与分析具有一定的借鉴意义。
关键词:算法设计与分析;复杂工程问题;案例教学;教学案例;教学设计
中图分类号:G640 文献标志码:A 文章编号:2096-000X(2024)26-0110-04
Abstract: Case teaching is an effective teaching method of algorithm series courses. Reasonable and effective teaching cases are the basic conditions and guarantees for the success of case teaching. In view of the unrepresentative selection of teaching cases and other problems, the corresponding solution is proposed. The solution starts from the relationship between complex engineering problems and teaching cases, organizes the teaching process around how to solve complex engineering problems, and forms the case teaching process of "selecting cases, analyzing cases, forming problem-solving ideas, writing algorithms, writing programs, running programs and verifying cases". Six principles of case selection and teaching case analysis method based on enumeration method are put forward. Examples are given to illustrate the concrete implementation process of the method proposed in this paper. The principles and methods proposed in this paper have certain reference significance to the selection and analysis of other teaching cases.
Keywords: Algorithm Design and Analysis; complex engineering problems; case-based teaching; teaching case; instructional design
算法课程是计算机类及其相关类专业课程体系中一门非常重要的必修课,该课程的教学目的是以能力培养为导向,着力培养学生综合融合多种算法设计技术编写出解决复杂工程问题的应用程序[1]。同一个问题可以有多种解决方案(算法),不同方案所编程序的大小、效率可能相差较大,因此,一个好的算法功底可以为学生打下扎实的有效设计解决复杂工程问题方案的基础。与此同时,算法基础也是一些ICT企业面试时必问的内容。
瑞士心理学家皮亚杰认为,学习结果不是学生接受了多少知识,而是学生个体知识经验得到了重组[2]。同样,算法课程不仅要使学生掌握动态规划法、贪心法、分治策略与递归法、分支限界法和回溯法等知识点,更要培养学生如何使用算法设计技术解决实际复杂工程问题的能力[3],即解决一个个问题实例(案例)的能力。简单地讲,不会解决问题实例(案例)就设计不出正确有效的算法,当然也编不出正确的程序,由此可见,案例教学是算法课程行之有效的一种教学方式。
案例教学(case-based teaching)是由美国哈佛法大学学院前院长克里斯托弗·哥伦布·朗代尔于1870年首创,是一种非常成功的教育方式。1980年开始案例教学引入我国,目前在我国的推广实施已有40多年。案例教学可以引导学生增强学习的积极性和主动性,提高学生自主分析问题和解决问题的能力,促进真实场景下的真学真做,是一种开放式、互动式的新型教学方式。
案例教学最早用于医学教学,后来,该法被广泛应用于管理、商业、法律和工学等领域[4-8]。案例教学是以教学案例为起点,教学案例是案例教学的核心,选择恰当的教学案例是成功实施案例教学的前提,直接影响着教学效果。医学界收集不同病症的诊断及治疗过程,用于基于案例的课堂分析,以培养学生的诊断推理能力[4]。法学界整理各种不同的判例记录,形成法学案例,以培养学生的判案推理能力[5]。公共管理界搜集整理包含多项内容的公共管理和决策记录,构成教学案例,以培养学生的分析、推理、决策等能力[2,6]。张帆[7]提出了教学案例需要体现学科交叉和融合,给出了教学案例库的设计原则。梁淑轩等[8]对教学案例的收集与选择进行研究探讨,强化和规范了重点关键环节,培养并提高其解决复杂工程问题的能力。由此,目前已提出了一些教学案例选择方法,但总的来说,案例教学仅局限于把教学案例用作课堂教学中的实例来分析。另外,可供选择的优秀案例少,缺少完整的选择原则,为此,本文以算法系列课程为背景,提出了教学案例的选择原则和相应的教学案例分析方法,为案例教学营造了一个真实完整的工程场景,提高学生分析与解决复杂工程问题的能力。
一 复杂工程问题与教学案例
《华盛顿协议》用7个特征来刻画复杂工程问题,其中第一条是必备的,第二到第七条是可选的[3]。
算法是指解决问题的方法、或过程、或指令序列,这里的问题至少包括《华盛顿协议》的第1个和第3个特征,是一个复杂工程问题,即课程所讲述问题需要基于深入的数学、计算机科学、软件工程知识和程序设计技能等基本原理,经过分析—设计—分析等过程才可以解决。另外,课程教学需要对复杂工程问题进行深入细致分析,建立合适的数学模型,以此进行算法设计与分析,最终编写出解决工程问题的应用程序。
解决“复杂工程问题”是《华盛顿协议》的实质核心,不同于医学、管理、法律和商业等领域问题,算法所涉及的问题包含一段文字描述、输入和输出。比如循环赛日程表安排问题,其文字描述为:有多个选手要进行单循环比赛,最少需要多少天?要求为:每个选手必须与其他选手各赛一次,每个选手每天只赛一次。该问题的输入即为参赛人数,输出即为循环赛日程安排方案。计算机求解问题的实质就是设计出用于解决该问题的程序或软件,即把问题的输入(程序或软件的输入)转换成正确的问题输出(程序或软件的输出)。程序或软件的一次运行就是解决一个问题,在程序或软件运行时,需要给定具体的输入,如5位参赛人数、11位参赛人数等,因此程序或软件的运行其实就是用来解决问题实例的,所谓问题实例是指输入参数确定后的问题对象,问题和问题实例类似于C++语言中的类和类对象的关系。这里的问题实例就是算法课程中的教学案例,是一个真实、典型且含有复杂工程问题的事件,一个包含有疑难复杂工程问题的实际情景的描述。
二 教学案例的选择原则
课程组长期从事算法系列课程教学工作,构建了算法设计与分析课程教学案例库,提出了案例选择的7个原则。
(一) 相关性原则
所选教学案例务必紧扣教学内容,关注教学内容的重点和难点。引入教学案例的目的是引导学生更好地理解、掌握和加深课程知识点,理清思路,化解难点,并运用所学知识解决实际复杂工程问题,因此,教学案例必须与课程内容高度吻合。
(二) 真实性原则
真实性最早来自于希腊语,意思为最初的、自己做的。真实性最早用于鉴别博物馆中展品的真实性,判断其价值是否符合某个价格。所谓案例真实性是指案例所描述的事件来自于现实世界,能最大限度地贴近当前生活,事件的经过和结果是真实的,如实反映现实世界事件的本来面目,是企业在研发、生产、销售等中遇到的实际问题。
教学案例真实性营造了一个真实完整的工程场景,该场景可以将各方面因素相互作用而产生的冲突矛盾真实地呈现在学生面前,促进真实场景下的真学真做,给人以身临其境之感,从而能够培养学生解决现实世界所面临的实际复杂工程问题的能力。如:棋盘覆盖教学案例来源于现实世界中房间地砖铺设方案;最长公共子序列教学案例来自于百度知道(百度百科)中两段文字之间相似度计算方法;还有单源最短路径、流水作业调度、活动安排问题等教学案例。这些教学案例都是来自于现实世界的真实情境或事件。算法和程序只是一种工具,学习的重点是用它来解决实际问题。如果不考虑实际问题来讨论教学案例,只会用某种语言来实施教学案例,可能只是知道了语言成分的含义,知道正确的语法形式,不是真正的编程锻炼。因此,教学案例一定要能最大限度地贴近当前生活。
(三) 适度性原则
适度性原则包括两个方面的内容,一是指案例难易要适中,算法案例千千万,例如两个数相加、人机对弈均是一个基于真实性原则的教学案例,显然这两个案例是不合适的,一个是过于简单,一个是过于复杂,过于简单的教学案例分析不出问题所包含的知识点和算法思想,过于复杂的教学案例会打击学生学习的积极性,讲解起来也很费力。可以根据学生特点,选择那些“跳一跳,够得着”难度的教学案例,教学案例要具有一定的“挑战度”。
二是指我们所选择的教学案例规模并非越大越好,在规模上必须保证大小适度。一方面教学案例必须达到一定的规模,规模过小体现不出问题的求解思路。如矩阵连乘问题中规模为1或2的教学案例显然分析不出问题的解题思想,对其进行讲解毫无意义和价值。另一方面,教学案例的规模不能过大,这会导致讲解过程非常冗长。如矩阵连乘问题中选择规模为20甚至更大的教学案例,分析求解过程非常繁琐,不具教学效果。
一般情况下,教学案例可以采用板书教学,规模最多控制在一个板书内,做到一案例一板书,这样可以了解教学案例的内在逻辑结构和解题过程,非常清晰。
(四) 代表性原则
除满足真实性原则、适度性原则外,教学案例要具有一定的代表性,具有举一反三、触类旁通的作用。代表性教学案例是指该教学案例的解决方案包含了问题所面临的所有可能,具有问题解决方案的普遍性和一般性,能帮助我们完整、系统地理解问题的本质。对此,在对问题进行分析时,需要分析出问题出现的各种可能,以此来作为选择具有代表性教学案例的依据,其解决方案能够完整地反映所有其他教学案例的解题思路,由此可以推断其他教学案例的规律和特征,进而给出问题的解决方案或算法。
代表性教学案例的选择是一个非常具有挑战性的工作,需要考虑问题出现的方方面面,列举出问题所包含的所有教学案例,从中选择出代表性教学案例。下面以循环赛日程表安排问题为例,给出一种代表性教学案例的选择方法,该方法在对问题进行分析时,对问题所涉及参数进行分类,分析并归纳出每一类的特点,以达到缩小教学案例范围的目的。循环赛日程表安排问题所涉及到的参数包括参赛人数、上(下)半场参赛人数。
1)参赛人数,从理论上来讲,参赛人数可以是1、2、……、100、……,参赛人数可以分为两类,即奇数和偶数,参赛人数为奇数的解决方法包含了参赛人数为偶数的解决方法,因此代表性教学案例中参赛人数可以设为奇数。另外,参赛人数为偶数的解决方案中,参赛人数又可分为2n和非2n,非2n参赛人数的解决方法包含了参赛人数为2n的解决方法,因此代表性教学案例中参赛人数不应为2n-1,如不要选择3、7、15。由此,教学案例中的参赛人数应选择非2n-1的奇数。