树人论文网一个专业的学术咨询网站!!!
树人论文网

基于计算思维面向能力培养的离散数学教学改革

来源: 树人论文网发表时间:2021-09-28
简要:摘 要:针对离散数学教学现状和面临的挑战,提出基于计算思维面向能力培养的离散数学教学改革思想,并从思维转变、3 种能力培养、教学方式、考核方式和平台支撑 5 个方面阐述具

  摘  要:针对离散数学教学现状和面临的挑战,提出基于计算思维面向能力培养的离散数学教学改革思想,并从思维转变、3 种能力培养、教学方式、考核方式和平台支撑 5 个方面阐述具体教改措施,最后通过课程考核、编程实践作业和调查问卷反馈说明教改效果。

基于计算思维面向能力培养的离散数学教学改革

  贾经冬; 李卫国, 计算机教育 发表时间:2021-09-10

  关键词:离散数学;计算思维;能力培养;编程实践;教学改革

  0 引 言

  离散数学课程自身具有高抽象性、强理论性、逻辑性 [1] 等特点,课程中基本概念、定理和证明较多,这些因素使学生感觉离散数学课程的学习难度大。此外,因为学了离散数学知识后不像其他专业课程可以立竿见影在实践中应用,所以学生会产生学了无用的感觉,但离散数学是软件工程课程体系中重要的专业基础课之一,为了充分发挥其对其他课程和专业的基础作用,面向能力培养的课程教学改革是必需的。

  1 教学现状和存在的问题

  (1)从教师角度,讲完集合论和图论,授课时间并不充裕。如果只依赖课内学时,教师无法深入地结合知识点讲授离散数学的实际应用,这导致学生在学习中难以理解离散数学知识点和专业的关系,只是机械学习抽象理论知识。

  (2)从授课对象角度,处于大二上学期的学生学过的相关专业课有限,故他们对软件工程专业理解并不深入。在此背景下,纵然授课教师想把离散数学知识和其他专业课建立关联,学生也不容易理解。例如,等价关系与软件测试课中的等价类方法设计测试用例密切相关,但学习此知识点时,学生基本不了解软件测试,更不要说设计测试用例了。因此,依据学生的实际情况,目前,教师在课内只能以理论知识的授课为主。

  (3)从课程自身角度,离散数学包含的内容杂、概念多、公式符号多、理论性强,内容相对抽象枯燥,课程名字也导致学生认为这是一门数学课,不是专业基础课。如果授课时不结合专业知识,学生会认为这是一门“不知道有什么用” 的课,从而学习热情降低。而且因为课程无上机课时和上机作业,此课程无法像其他编程课程一样让学生学习的内容可以立竿见影地应用,故无法说服学生像对待其他专业课那样热情地对待此课程。

  综合上述现状,离散数学课程教学中存在的主要问题如下。

  1)与其他专业课程学习脱节。

  目前教学中此课程和其他专业课程脱节,并没有起到基础支撑作用。如何发挥离散数学的专业基础课作用,与其他专业课有效融合衔接,真正让软件工程学生意识到它对解决实际工程问题的价值,以培养学生解决问题的能力,是应考虑的问题。

  2)与实践能力尤其编程能力培养脱节。

  离散数学没有上机课时和编程实践,故造成理论和实践的脱节。课程中理论知识本就难以理解,再不应用于实践,会使得理论知识掌握不牢固,不利于培养软件工程学生的实践能力。从软件学院的培养目标来说,培养学生的编程能力是基本要求,需要在各门课程中强调和锻炼。而此课程很多知识点是可以理论和实践相结合的,例如幂集知识点,根据以往授课经验,很多学生上完课后写作业仍然会做错。如果辅助编程实践,让学生完成求集合幂集的程序设计,则不仅让学生从软件工程专业角度理解和消化此知识点,也锻炼了学生的编程能力。

  3)教学方式和支撑工具需要更新。

  目前,课程教学仍然以课堂教学为主、微信群答疑为辅。以现有的教学方式要解决前两个问题较为困难。例如,如果要增加和其他专业课相关的课程案例,课时不变情况下,仅采用课堂教学是实现不了的。如果增加了编程实践,在线提交编程作业并记录学生的编程实践数据需要其他的支撑平台或工具来完成。因此,需要更新教学方式和教学支撑工具。

  2 基于计算思维面向能力培养的离散数学教改总体思想

  计算思维自 2006 年被提出以来,就成为与理论思维、实验思维比肩的三大科学思维之一。计算思维是运用计算机科学的基础概念去求解问题、设计系统和理解人类行为等涵盖计算机科学广度的一系列思维活动 [2]。对于软件工程专业学生而言,培养计算思维非常重要。计算思维强调以概念去求解问题,而离散数学教学本质正符合这种思维,集合论和图论知识都是培养学生学会用抽象描述来表示、分析和计算,以解决问题。因此,首先从思维上改变教学理念,基于计算思维来进行离散数学的教学改革是符合现在的软件工程专业发展趋势的。

  此外,从软件工程专业教学角度,该专业突出工程素质、重视实用性人才培养,而且新工科建设也明确提出要培养学生将各种方法论应用于 解决实际问题的能力 [3],因此面向能力的培养应该在各门专业课中落地。离散数学的教学中也应该突出学生能力的培养,而不仅是理论知识的获取。计算思维是人类求解问题的一种思维途径,其最终强调的是解决问题,是数学和工程思维的互补与融合 [2]。针对课程面临的前两个问题的改革,目的就是为了培养学生解决问题的能力。

  因此基于计算思维面向能力培养的离散数学教学改革是适应现在专业发展要求而产生的,不但要从教学理念上进行改革,而且要从培养学生能力上进行改革。

  3 离散数学教改措施

  3.1 基于计算思维改变教学模式,突出专业知识融合的案例教学

  要避免学生把离散数学当做纯数学理论课程学习,让学生认识到离散数学对专业发展的有用性,就需要改革课程的教学模式:把讲授抽象的理论知识转变为教授使用计算来解决问题的思维方法,从而根本改变现有离散数学教学的传统思想和理念。

  要实现这种教学模式的转变,最重要的是从教学内容上进行优化。授课教师必须在教学中始终渗透计算思维,加强离散数学和其他专业课的深度融合。为此,首先需要梳理离散数学与其他专业课程间的层次关系,找到离散数学的每个知识点在其他课程的应用场景,例如关系复合运算在数据库表间关系的实际应用。然后,设计各种教学案例,从案例出发介绍知识。例如,可以一个具体项目为背景讲图论的关键路径知识点。

  通过与其他专业课建立关联,离散数学的教学不再枯燥抽象,而是有机融合到专业问题的求解中,则能够培养学生解决复杂问题的综合能力和高级思维。

  3.2 加强离散数学编程实践,面向 3 种能力的培养

  编程能力是软件工程类学生专业能力的一个重要指标,需要在大一、大二低年级阶段持续强化,因此可以把离散数学的课程教学和编程能力锻炼进行有机结合,培养学生的编程能力,也使得学生能够感受到知识立竿见影的应用效果。

  这种情况下,就需要合理设计难度适中的离散数学编程题目。比如关系的传递闭包,理论公式是关系复合运算后求广义并,但是从关系矩阵表示就是求布尔矩阵的乘法和加法,这是可以通过编程来实现的,所以这个知识点可以让学生进行编程练习。这个过程既强化了学生的编程能力的培养,也增强了理论知识的直观性和趣味性。

  此外,离散数学的图论部分,涉及很多的算法,比如最小生成树、最短路径、匹配问题等都可以通过编程实践来理解算法思想。现实的很多问题都可以用图来抽象建模,因此结合实际问题的图论部分的编程实践,不仅可以锻炼学生的编程能力,也可以培养学生解决专业问题的能力。

  在学习离散数学之前,学生课内仅学过了 C 语言。编程语言的多样性和发展的快速性,使得课内不可能讲授所有的开发语言,因此,编程语言的自学非常重要。在本课程中鼓励学生用不熟悉的新语言(如 Python)完成实践,也有利于培养学生自学能力。

  3.3 改进课程教学方式,充分发挥第二课堂的作用

  离散数学只有 32 学时,讲完集合论和图论知识点,课时并不充裕,如果再扩展知识点,加入案例教学,显然课时更加紧张。如果不改革教学方式,仍然全部课内讲授,必然会导致理论知识点出现“夹生饭”现象,而扩展的案例知识会让学生听得囫囵吞枣、理解不透。

  要想达到教学改革的目的,教学方式上必须进行改革。可以充分发挥第二课堂——微信群的作用,提前将简单的知识点(如集合表示等内容)发到第二课堂让学生首先自学,课内老师进行相关知识点的案例教学和与学生的讨论互动教学。此外,对有些扩展知识点可以放在第二课堂,供学生学完课内知识后自学以拓宽知识面。

  3.4 改进课程考核方式,使其更加面向能力培养

  离散数学以前的考核是由课后习题作业成绩和期末考试成绩两部分构成,期末考试主要是对理论知识点的笔试考核。这种考核方式无法满足计算思维和专业能力的培养。既然从课程内容上强调了计算思维融合来设计教学案例,从实践上强调了课程编程作业,那么从考核上需要反映改革的内容。

  拟从两方面改进课程考核方式。首先,平时作业成绩中要包含编程实践作业成绩。对于编程实践不仅要强调完成,还要强调质量,以培养学生写优质代码的能力。其次,考试内容的教学改革,不仅考查理论知识点,还增加案例分析,让学生分析需要用什么知识点来建模解决问题。

  3.5 借助多个支撑平台来促进课程可持续发展

  离散数学课程目前主要借助学校的课程中心来进行资源共享,但要实现如上教学内容和方式的改革,并且促进课程可持续发展,必须借助多个教学平台的支撑。一方面,现有的课程中心平台仍然可以实现资源的共享;另一方面,需要借助一个编程平台来实现编程题库和在线编程实践。对于后者,可以依托北京航空航天大学现有的 accoding 在线编程练习平台,此平台可以提供丰富的实践练习题库,锻炼学生解决实际问题的能力。此外,在线编程平台能记录学生的实践效果,比如提交通过次数等。通过数据分析,学生可以检视自己的实践能力。

  4 离散数学教改实践结果

  按照以上教改总体思想和措施,2020年秋季,北京航空航天大学软件学院对离散数学展开了教学改革实践,通过 3 项内容可以反馈此次实践效果。首先,在期末考试中增加了具有实际背景的分析题,考查学生选择合适的图来抽象建模并解决问题的能力,最终 90% 的学生都能够正确解决,但也有 10% 的学生分析建模错误。其次,课程中指定用编程语言 Python 完成 3 次实践作业。针对同一问题,例如传递闭包的编程实践作业,239 名学生中 71% 的学生可以在 3 次内(含 3 次)在线提交代码通过,但是也有 5% 的学生至少要 10 次以上才能正确通过。从代码行来看,通常 14~22 行解决问题,也有学生非常精简地用 9 行代码解决了问题,但也有 4% 的学生至少需要 40 行以上的代码。这些都反映了学生编程能力的差异,通过把相关数据反馈给学生,并把优秀编程作业展示给学生,可以促进学生了解差距,提高自身开发能力。最后,课后通过调查问卷来了解学生对 3 种能力培养的满意度。学生对通过实际问题建模来培养解决问题能力的满意度为 92.2%,对离散数学中编程实践能力培养的满意度为 80%,对自学能力培养的满意度为 73%。后两个能力培养满意度不高和实践中指定学生用之前不熟悉的 Python 来完成编程作业有关。根据调查,53% 的学生回答更愿意用已经会的编程语言而不是自学新的语言来完成作业,这主要是因为在学期中间多门课并行,自学新语言学生感到时间紧张。这些反馈数据为后续课程的持续改进提供了参考。

  5 结 语

  计算思维是每个软件工程专业学生都应该具备的解决问题的思维。在计算思维的指导下,从思维转变、能力培养、教学方式、课程考核和平台支撑方面进行的面向 3 种能力培养的教学改革实施后,经过调查反馈,3 种能力的培养基本达到预期目标,但也存在改进的空间。在后续的教学实施过程中,笔者会根据反馈调整,努力使离散数学不仅完成理论授课也完成学生专业能力的培养。