1. 引言
我国于2013年加入“华盛顿协议”成为其预备成员国,并于2016年成为其正式成员国,标志着我国高等工程教育迈出与国际接轨的重要一步 [1]。通过专业认证获得国际实质等效标准下的办学资质认可。华盛顿协议即国际本科工程学位互认协议,确定了工程专业学生的12条毕业要求,包括工程知识、问题分析、解决方案的设计、现代工具使用、环境与可持续性、个人与团队合作、项目管理等 [2]。笔者所在计算机学院自2014年开始实施工程教育专业认证相关工作,其中网络工程、软件工程和计算机科学与技术专业已顺利通过工程教育认证。
面向工程教育认证中“国际交流合作能力培养”方面的要求,申请人所在学院开设了“算法设计与分析(双语)”课程。为更好落实工程教育认证,提高本专业培养学生的质量与能力,本着持续改进的原则,本课程从教学目标改进、教学内容改革和多样化教学方式改进几个方面出发,进行课程教学改革探索。
2. 课程现状与问题
在本课程传统教学中,教学内容存在于教学目标之前并占据主导地位;而在工程教育认证的理念下,学生预期学习产出为代表的教学目标先于教学内容存在,课程内容的制定以及教学过程的实施都是围绕着教学目标展开。因此,本课程改革首先要解决“算法设计与分析(双语)”课程目标制定并改进的问题。需要从专业培养目标出发,根据毕业要求,制定并改进课程目标,并得到课程目标与毕业要求指标点的关联关系以及支撑矩阵。
此外,以往的课程内容制定先于课程目标制定,并且教学活动往往通过单一的教师授课开展;而在工程教育认证背景下,教学内容的设计以及教学活动的实施需要立足于课程培养目标,支撑课程培养目标,并体现以学生为中心的特点。
3. “算法设计与分析(双语)”课程教学改革
(一) 课程教学目标改革
工程教育认证倡导将基于产出的教育(Outcome-based Education, OBE)的理念贯穿于教育的全过程,实现人才培养。将各个教学要素和环节联系在以学生为中心的网络中,共同支撑教学整体,实现一个以教学培养目标为导向、以学生为中心、切实支撑教学目标达成的教学模式与体系。具体的,根据专业培养目标(即学生毕业五年左右通过工程或社会实践达到的预期能力),分解毕业要求,得到课程教学目标以及和毕业要求指标的支撑关系和矩阵。
工程教育认证的核心是以学生为中心,要求“定义学习产出”,制定教学目标。课程教学目标既规定了通过课程学习,学生应获得的学习成果;同时也是工程教育认证背景下的教学质量和产出标准。本课程改革针对“算法设计与分析(双语)”课程,研究围绕本专业的培养目标,立足于学生毕业要求的达成,改进课程的教学目标,以及课程教学目标与毕业要求指标点的支撑矩阵。
本课程拟支持本专业学生的培养目标如下:
1) 培养目标1:具有较高的科学和专业素养,能够在软件工程领域实践中熟练应用数学、自然科学、工程基本原理和软件工程的理论、技术、工具和方法解决复杂软件工程问题,具有较强的技术创新能力和国际化意识,能够胜任软件开发和应用行业中的高级软件技术和管理工作;
2) 培养目标2:具有较强的自主学习和终身学习的能力,能够适应软件行业的快速发展。
根据课程支撑的培养目标,设计课程支撑的毕业要求。本课程一共支撑4个毕业要求,在此基础上,分解课程支撑的毕业要求指标点,设计本课程的4个教学目标。具体的,课程教学目标、支撑的毕业要求和毕业要求指标点的对应矩阵如表1所示。

Table 1. Supporting matrix of course teaching objectives, graduation requirements and graduation requirements index points
表1. 课程教学目标、毕业要求与毕业要求指标点的支撑矩阵
(二) 课程教学内容改革
面向工程教育认证,以课程教学目标作为指导,反向设计恰当的教学内容。针对该双语课程,根据教学培养目标,围绕学生能力培养,设计双语课程教学内容,以更好支撑课程教学培养目标,有效帮助学生实现课程教学目标预期的学习成果。针对双语课程授课学时不低于50%的要求,设计以英文为主的课程教学内容。立足于课程教学目标,恰当选择并合理组织英文教学内容,并针对选定的教学内容进行模块划分,精细化设计各模块内容。
该“算法设计与分析(双语)”课程一共32学时,包括24学时的理论授课与8学时的实验。其中,24学时的理论教学内容,首先安排算法概述的教学内容。算法概述中,将介绍算法与程序的区别,并且重点介绍算法的时间复杂度与空间复杂度;同时,讲解时间复杂度的渐进表达式。本部分的教学内容,重点难点是算法的时间复杂度的分析与估算。本部分教学内容支撑课程目标1和课程目标4。
算法概述之后,将分别介绍五大类非常经典、实用的代表类算法设计方法,分别是递归与分治策略、动态规划、贪心算法、回溯法和分支限界法。在递归与分治策略这部分,将讲授递归与分治的联系与区别,强调分治法的基本思想,并且以大整数乘法、合并排序和快速排序为案例,讲授经典的分治算法求解问题。在动态规划这一部分,将讲授动态规划算法的基本要素,包括最优子结构与重叠子问题,引导学生分析动态规划与分治法的区别与联系;并且以最长公共子序列、流水作业调度和01背包问题为案例,讲授动态规划算法求解问题。接着,讲授贪心算法,包括贪心算法基本要素和理论基础;以活动安排问题、最优装载问题、多机调度问题为案例讲授贪心算法求解问题,并在本部分将贪心算法与动态规划进行对比,巩固学生所学知识。最后,讲授回溯法与分支界限法,讲授这两种算法的基本框架与求解步骤,并以装载问题、01背包问题和旅行售货员问题为案例进行授课。这五大部分的教学内容,均支撑课程目标1~4。
实验部分包含两个实验内容,即动态规划算法应用与贪心算法应用。两个实验均为设计型实验。需要学生以个人为单位,独立设计算法,并且编写代码实现算法,验证所设计的算法和编写的代码,并要求能够分析和估算算法的时间复杂度。
(三) 课程教学方式改革
工程教育认证追求教学培养目标与教学活动的一致性,并且重视和强调“反向设计”,将反向设计理念贯穿于教学始终。针对“算法设计与分析(双语)”课程,反向设计并改进多元化的教学方法。算法课程本身具有一定的抽象性与理解和学习的难度,双语授课更加增加该课程的难度。而目前该双语课程设置的学时数相当有限。因此,本双语课程设计了线上线下混合式教学方法 [3] [4]。在线上,提前发布课程的部分内容,指导学生提前预习上课内容。并且,在授课前,在线上发布一些小测试。线上发布的小测试,可检查学生预习的效果,督促学生预习课程内容,减少学生偷懒的情况。同时,通过线上发布的小测试,挖掘学生在预习过程中遇到的难点问题。针对学生的难点问题,在线下的授课过程中,重点讲授,并通过课堂反馈的方式,再次检验学生的难点问题是否得到解决 [5]。
同时,面向工程教育认证,充分考虑本专业本科生的学习特点,分析可能影响学生学习效果的痛点问题,设计并改进教学方法和策略。在教学过程中,引入话题讨论、课堂互动答题、案例式等多元化、多样化的教学方法 [6]。
以话题讨论为例,在授课过程中,可引导全体学生针对如下话题进行讨论:“你认为学习好《算法设计与分析(双语)》这门课程,有什么意义?”、“你认为在未来的学习或者工作中,会在哪些方面涉及到算法?”“你期待从本门课程中,学习到哪些知识?有哪些知识,你希望教师重点讲授?”等。通过话题讨论,一方面,可提高学生的互动,引导学生融入课堂,避免学生分心。另一方面,了解学生的需求,落实以学生为中心的理念,更好满足工程教育认证的要求。
此外,在教学过程中,始终引入案例式的教学方式 [7] [8]。算法本身具有相当的难度,并且算法是相对抽象的。因此,在授课过程中,从具体的问题出发作为切入点,利用真实的案例进行举例说明。使得学生在学习过程中,更加容易结合实际生活中的例子,发掘计算机能解决的问题。更容易理解和掌握相关的算法求解问题的具体步骤,进而再对算法进行总结和分析,巩固算法的设计思想和基本的框架。因此,采用案例法帮助学生体会算法求解实际问题的思路,并整理和归纳对应的算法的求解步骤,更好地提高学生解决实际问题的能力。以动态规划算法的教学过程为例。在动态规划的教学过程中,引入“最长公共子序列”的经典问题。而“最长公共子序列”问题,可由实际生活中,DNA比对、亲子鉴定等典型案例引入。再如,分治算法的教学过程中,可讲授“二分查找”问题。而“二分查找”问题,可由实际生活中,“给定1~100之间的某个数,猜测该数为多少”作为案例讲授。总之,采用案例法的教学方式,引导学生将抽象的算法与实际生活中的问题联系起来,并帮助学生由浅入深、体会算法求解实际问题的思路和步骤,最终掌握算法方法,并应用算法的方法解决实际问题。
4. 结语
面向工程教育认证,本课程从教学目标改进、教学内容改革、多样化教学方式改革几个方面出发,进行了课程教学改革。首先,根据专业培养目标,分解毕业要求,改进课程教学目标以及毕业要求指标的支撑关系和矩阵。其次,针对该课程,以课程教学目标作为指导,反向设计并改进教学内容,并改进课程教学内容与教学目标的对应关系矩阵。接着,设计并改进多元化的教学方法。算法课程本身具有一定的抽象性与理解和学习的难度,而课程学时数又相当有限。对此,该课程改进了教学方式,设计了线上线下混合式、话题讨论、课堂互动答题、案例式等多元化、多样化的教学方式。在今后的教学工作中,笔者将本着持续改进的原则,继续对本课程的教学进行不断改进。
基金项目
本文系北京信息科技大学教改基金资助项目(2022JGYB18)的研究成果。