• 工作总结
  • 工作计划
  • 心得体会
  • 领导讲话
  • 发言稿
  • 演讲稿
  • 述职报告
  • 入党申请
  • 党建材料
  • 党课下载
  • 脱贫攻坚
  • 对照材料
  • 主题教育
  • 事迹材料
  • 谈话记录
  • 扫黑除恶
  • 实施方案
  • 自查整改
  • 调查报告
  • 公文范文
  • 思想汇报
  • 当前位置: 雅意学习网 > 文档大全 > 公文范文 > 正文

    面向OBE,的程序设计基础课程的计算思维培养

    时间:2022-12-05 14:40:03 来源:雅意学习网 本文已影响 雅意学习网手机站

    文万志,程学云,陈文兰,任红建

    (南通大学 信息科学技术学院,江苏 南通 226019)

    计算机技术是当代信息技术核心技术之一,影响了社会的方方面面。正确认识、理解并使用计算机的关键是掌握计算机的思维方式,即计算思维。计算思维,是运用计算机科学的基本概念去求解问题、设计系统和理解人类的行为,它包括了涵盖计算机科学之广度的一系列思维活动[1-2]。

    当前,高校倡导产出导向(Outcome Based Education,OBE)的教育理念。在信息化时代,计算思维的培养在基于OBE 理念的教学改革中至关重要[3]。运用计算思维分析问题是信息化社会的基本要求,是高校毕业生的基本能力素养之一。

    程序设计基础作为高校计算机类专业和一些非计算机专业的第一门程序设计基础课程,其内容涉及数据存储、数据表示、数据处理、程序设计、程序实现和程序优化等[4]。该课程是学生计算思维培养的基础课程,为学生后续课程学习、解决复杂工程问题中使用计算思维分析问题打下基础[5-7]。

    然而,在程序设计基础课程实际教学中,仍然存在不少问题。传统教学中,教师常采取以填鸭式灌输知识为主的单向传授、以一刀切的无差别传授等方式极大地抑制了学生学习的积极性和创造性,抑制了计算思维能力的培养,最直接反映在学生课程考核成绩上。据笔者调研,国内很多高校程序设计基础类课程的考核成绩较不理想,挂科率较高。课程考核结果是思维能力培养效果的反映。高质量的具有计算思维能力的人才产出要求进行程序设计基础课程的教学改革。

    计算思维是运用计算机科学的基本概念求解问题。程序设计基础课程知识体系与计算思维5个层次如图1 所示。其中,计算表示层基于程序数据表示,包括计算机存储数据的方式、程序中描述数据的方式;
    计算处理层基于程序数据操作和程序控制,包括计算机处理问题的基本规则和方法;
    计算分析/设计层基于算法分析设计,包括计算机结构化程序设计与面向对象程序设计思想;
    计算实现基于算法的具体实现,包括算法实现的IDE 选择、算法的程序表示与实现、调试、验证等;
    计算优化包括程序的时间复杂度分析、空间复杂度分析及其优化。

    知识学习和能力培养相互制约又相互促进。过度学习程序中繁杂的语法规则和知识点,将会约束计算思维的创造性,限制思维的空间拓展,影响知识的理解,达不到学习效果;
    过多地强调能力培养,缺乏知识基础,影响思维过程,抑制思维的进展。如何在知识学习中促进能力培养,在能力培养中,加强知识学习,是计算思维培养的关键。

    图1 程序设计基础知识体系与计算思维

    2.1 立足工程认证,明确培养目标

    基于OBE 教育理念,培养具有解决复杂工程能力的人才。学生在程序设计基础课程中,能够融合数学、自然科学等知识并应用这些知识发现计算机领域中的问题,能够掌握实际问题的计算机程序语言的表示方法;
    能够掌握自顶向下、逐步求精的模块化程序设计思路,并运用抽象、归纳、递归、回溯等方法进行算法设计;
    能够积极探索实际问题的求解方法,体现创新性,并通过实验验证方法的正确性和合理性;
    能够分析程序的执行过程,能够选择不同的调试工具并分析结果的正确性和合理性以及工具的局限性;
    能够在程序设计过程中使用规范化的算法表示方法、程序设计方法,遵循编程规范,具有职业素养;
    能够在较复杂的编程中进行团队协作沟通,并能够胜任相应的角色,具有团队意识;
    能够具备多学科背景下的基本程序设计能力、程序综合能力、项目组织能力;
    具备自主学习的能力,能够自主探索研究课程内容,拓展程序设计知识和技能,能够适应计算机技术的发展,具备自主学习新的编程语言的能力。

    教师在教学准备过程中,应深刻理解教学目标和培养要求并在教学各环节中体现,有的放矢。在知识传授过程中体现OBE 理念,着力培养具有解决复杂工程能力的人才。

    2.2 建立自主学习机制,提高计算表示和计算处理能力

    如图1 所示,程序设计基础课程知识性强,规则繁多。正确的程序输出,首先需要正确的数据表示和数据处理,但是,如果过多地强调知识和规则,学生则会逐渐依赖知识的被动灌输而抑制学生计算思维能力的全面发展。在教学过程中,授人以鱼的同时更应该授人以渔。变被动学习为主动学习,建立自主学习机制和激励机制,鼓励学生主动探索知识和规则,全面且深入理解计算机数据表示和数据处理的方式,提高程序设计过程中的计算表示和计算处理能力。

    建立自主学习机制,需要教师在教学各环节中融入培养学生自主学习能力的方法。例如,教师在讲解常量和变量时,涉及到数据的二进制存储。而对于大多数初次接触程序设计的学生来说,对二进制的补码存储并不熟悉。教师利用课堂有限的时间去充分讲解二进制并不合适,也达不到应有的效果。多次的教学实践表明,学生被动接受相关知识后,在高年级的专业课程中再次涉及到相关知识时,学生依然无法理解。对这种类似知识,教师更应引导学生自己去探索并配以适度的作业或考核,学生的知识掌握效果会更好,学习能力也会逐步提高。

    培养自主学习,重在引导,遵循从半自主学习到完全自主学习的培养路线。填鸭式教学模式不适合大学课堂,也不符合OBE 理念,但刚入学的不少学生较依赖于这种教学模式,需要循序渐进地引导学生进行自主学习。半自主学习,即根据学生情况,教师从任务布置、过程监控和结果考核等全程指导学生自主学习。例如,教师在讲解完结构体知识后,可布置学生课下自己学习共用体和枚举类型,同时布置共用体和枚举类型作业。过程监控,一般可通过网络学习时长监控或问题植入等方式进行。构建课程网络资源,统计学生每个章节的学习时间,并在学习节点植入问题,统计学生是否完成问题以及问题完成情况。全方位监控自主学习过程以持续改进自主学习模式。半自主学习适合依赖填鸭模式以及知识学习初始阶段的学生。随着学习的深入,学生知识增多,能力增强,需要逐步引导学生进入完全自主学习,即教师较少或不干预和监控学生学习。为了达到学习目标、扩展个人知识面、提高个人能力,学生完全自主地去获取资源并学习。教师可适当提供一些资源获取的方式以及学习方式。学生完全自主学习是教学的目标之一,是因材施教需要,是培养面向产出的学生的必然要求,也是学生解决复杂工程问题所需具备的能力之一。

    2.3 团队协作、分组讨论,提高计算分析能力

    程序设计基础课程中计算分析主要有结构化分析、面向对象分析等分析方式。针对具体的程序设计问题,可以采用不同的思路。

    由于地区教育差异、个人认知水平差异,学生能力水平参差不齐。在教学过程中,要加强团队协作。团队协作主要有3 种形式:第1 种形式是分块协作,将复杂问题分解成若干模块,一个团队成员负责完成一个模块,最后协作完成任务;
    第2 种形式是主辅协作,能力强者设计指导整个过程、能力弱者辅助完成;
    第3 种形式是结对协作,分析设计过程中经常互换角色以完成任务。这3 种形式可根据实际情况自由选择,但最终所有团队成员能够完全解决问题。

    个人思维总会有局限。团队协作、分组讨论有助于激发思维,提高计算分析能力。在实际教学中,也经常遇到个人思维受到局限的情况。例如,将任意一个数字分解成素数因子乘积问题。相当部分学生在分析此类问题时,用双重循环来实现。外循环穷举因子,内循环判断该数是否是素数。结果正确,学生检查不出任何问题。只有少数学生在设计考虑到素因子不断分解,就无需判断素数,只要单循环即可实现问题求解。加强讨论,才能更好地开阔思维。在遇到难题时,才会时常感受茅塞顿开,体会其中的乐趣,激发计算分析思维。

    2.4 启发教学、多思维融合,丰富思维方式,提高计算实现能力

    培养学生计算思维,要善于启发式教学,加强思维训练,丰富思维方式。

    对知识为主型问题,将知识嵌入程序中,启发学生分析结果。例如,在讲解逻辑运算符的使用方法的时候,学生比较容易犯错误的问题是:逻辑与左侧表达式值为0 或者逻辑或左侧表达式为1 时,右侧表达式将不再执行。学生通常会错误分析右侧表达式也会执行。教师在教学过程中,可在程序中嵌入这个知识点,让学生自己分析程序执行过程和结果。在学生得出结果后再指出问题,加深学生对知识型问题的理解。

    对分析设计为主型问题,采取发散式启发教学和递进式启发教学。例如,教师在讲解程序流程控制时,首先讲解的是顺序结构,典型实例如不使用中间变量交换两个数a 和b,教师可首先讲解其中一种方法,如“a=a+b;
    b=a-b;
    a=a-b”,然后提出让学生尝试以程序语句“a=a-b”开始交换两个数,学生在这种发散式启发中潜移默化地体会了顺序结构中数据流。顺序结构之后是选择结构和循环结构,经常使用的实例是最大公约数的求解,常用方法是辗转相除法,也就是,被除数、除数、余数依次迭代循环,直到余数为0,则除数为最大公约数。当教师讲解完该实例时,可启发学生思考用相减法完成最大公约数的求解,加深学生对流程控制结构的设计。

    递进式启发教学注重的是计算思维的优化。例如,在讲解百钱百鸡问题时,教师可先用三重循环将公鸡数量、母鸡数量、小鸡数量控制在0~100 只,每次累进1 只穷举所有情况,循环体判断是否100 文钱买100 只鸡。然后教师依次递进提出启发问题:是否需要将三重循环都控制在0~100、是否需要每次累进1 只、是否需要三重循环实现等,逐步递进以加深理解循环控制方法和穷举设计,掌握计算实现和计算优化方法。

    计算思维应融合多学科知识,又要体现学科间的思维差异。计算思维不应是孤立的计算机学科思维。例如,将输入的整数k 表示成素数因子的乘积,这里涉及到素数的基本知识、合数的分解问题以及因子自2 向上累加则不需要判断因子是否是素数等数学知识和分析。诸如此类涉及数学等其他学科知识的例子还有很多。在教学中,忽视与其他学科知识的融合,特别是数学学科知识融合,反而不利于计算思维的培养。学科融合有利于计算机思维的进行,即连贯性,同时,应注意区分思维差异。上述例子中,数学思维分析提供了计算实现的宏观思路,计算机是不会根据数学思维来求解问题的。如合数的分解,计算思维一般从2 开始直到合数的平方根结束循环判断是否整除,而数学思维主要根据经验、知识等判断、尝试等方式求解,有时虽然有穷举,但这种穷举多数时候是跳跃式的,而且随着经验的增长,这种跳跃式会更加明显。在教学过程中,要有意识的体现这些思维,从思想、实现、表示3条线来培养计算思维。

    多思维融合,不仅需要多学科融合,而且需要多种思维融合,支持思维开放,不约束计算方式。传统的归纳、演绎、联想等思维方式可以应用到计算问题分析中。计算思维最常用的思维方式是逐步求精的方式,具体实现时又涉及到递归、抽象、归纳和穷举等各种思维的融合。在教学中,应支持思维开放与发散,不约束计算方式,适当引导,以应对后续复杂问题的灵活处理。例如3个数的大小排序问题,有的学生使用6 个判断,输出排序顺序,有的学生使用3 个判断以及交换实现,有的学生使用最大值、最小值实现。这些计算实现思维方式都是正确的,应予以肯定,但同时应引导学生分析,如在此例中可引导学生思考排序数的数目增多时方法的选择等。

    2.5 加强实践,自主探索,提高计算验证和计算优化能力

    基于OBE 的教育理念,引导学生积极探索实际问题的求解方法的同时,鼓励学生自主通过实验等方法的验证程序的正确性和合理性。引导学生熟练选择并应用相关调试工具或简单的插桩方法实现程序验证;
    引导学生识别简单的预编译、编译、链接等错误;
    根据调试工具错误提示分析错误原因并纠正语法错误;
    通过设置断点、单步执行等方法分析程序执行过程中变量的变化与合理性并能纠正错误;
    通过简单的探针插入法分析程序,如插入简单的输出语句来分析数据流,从而找出程序中的错误。

    在程序输出正确的结果后,要引导学生积极探索计算优化的方法。例如,将N 个字符串有序输出,首先要考虑字符串的存储方式,然后要考虑字符串的排序方法。存储上,字符串长度可能不相等,如果定义简单的静态数组存储字符串,则需要预先定义数组大小,会造成空间的浪费;
    如果定义多个变量来存储字符串,会造成程序的可读性很差。排序上,如果通过比较字符串大小,再进行交换,则会由于大量的字符交换导致效率变低。然而,这些问题是学生在编程实践中经常使用的方法,可实现结果的正确输出,但效率不高。在此例中,可引导学生使用指针数组的方法来实现:数组元素指向字符串,通过交换数组元素而不实际交换字符串进行计算优化。通过这种探索,不仅加深了学生对知识的理解,而且有助于提高学生计算优化思维能力。

    2.6 体系教学,计算思维的可持续发展

    程序设计基础课程作为入门的计算思维培养课程,是基于OBE 的人才培养的基础,是后续相关课程的知识基础和能力基础,后续课程和实践是计算思维的可持续发展的必然要求。

    为了培养合格的OBE 人才,计算思维培养要贯穿学生学习阶段,形成体系教学。计算思维教学体系主要表现在两个方面:实践体系和课程体系。实践体系,即构建程序设计基础和后续程序实践的思维发展链。鼓励学生积极参与相关程序设计类竞赛和项目开发。根据学生不同层次和不同阶段选择不同的类别。低年级或基础薄弱学生可参加一些基础性竞赛,如蓝桥杯、计算机设计大赛等,高年级和基础较好的学生可参与软件服务外包、ACM 等竞赛以及项目开发。鼓励导师制,每个学生选择一个导师,进行实践能力培养。课程体系,即构建程序设计基础和后续相关课程计算思维培养链,在计算表示和计算处理上主要与其他相关程序设计类课程形成培养链,在计算分析、设计、实现、优化上主要与数据结构、软件工程、软件测试、编译原理等课程形成培养链。

    计算思维的培养需要持续监控教学过程,并制订考核评价标准。

    3.1 教学过程管理与教师评价

    构建计算思维培养过程管理机制,加强过程管理,重点从以下3 方面实施:基于工程认证的要求和OBE 人才导向,完善相关教学文件,如课程教学大纲、实验大纲、教学计划书、讲义、课件、备课笔记、学生作业设计、试卷及双向细目表等;
    加强课堂教学管理,将课堂互动、讲课状态、教学方式等作为教师教学管理的重要一环;
    完善教学督导机制,加强教学材料和教学过程的监督。

    完善教师评价机制,形成以督导评价、同行评价、学生评价和自我评价等为全方位评价指标。形成校、院、系三级督导制度,不定期督查教学过程和教学文件;
    形成同行互相听课制度、课程组定期研讨和反馈制度;
    形成以教学准备、作业设置与批改、课堂互动、课堂管理、教学效果和教学内容等为主题的学生评价制度;
    形成教学总结的自我评价制度。

    3.2 学习过程管理与评价考核

    教学过程管理是计算思维培养的关键一环,加强学生管理,引导学生自主学习是提高计算思维的内在需要。

    学习过程管理以更好地促进学生学习巩固知识、锻炼提高能力,引导学生养成自主学习和终生学习的学习习惯。教学过程管理是学生学习过程管理的一部分。教学内容、教学形式、作业实验设置等是学生学习内容和学习方式的重要组成。除此以外,学习过程管理还包括使用现代化的教学工具或方法来管理学习过程,如采用竞速制或积分制来管理程序设计实践,采用问题植入法管理网络资源的学习等。

    为了更客观地评价学生计算思维能力,更符合OBE 教育导向,制订更全面有效的考核机制,形成期末理论考核、期末实践考核、章节作业、师生互动、个人总结、学习积分组成的全方位评价指标。其中,期末理论考核和实践考核占比应不超过50%,且期末试卷内容的安排必须满足工程教育专业认证基本要求,内容分布合理;
    个人总结是个人在学习或实践中遇到的问题总结情况,建议占比为10%;
    学习积分是学生自主学习课程相关资源获取的积分,建议不低于10%。

    程序设计基础课程是计算思维培养的入门课程,教师应深刻理解教学目标和培养要求,制订教学计划并在教学各环节中体现。在知识传授过程中体现OBE 理念,为培养具有解决复杂工程能力的人才作准备。教学中,基于文中提出的方案组织教学,学生计算思维能力明显提高,更多的学生愿意主动探索、主动学习,学习效果明显改善,然而,教无定法,学生各异,计算思维的培养也非一日之功,我们在今后的教学中还需继续摸索改进。

    猜你喜欢 程序设计过程思维 思维跳跳糖小哥白尼(野生动物)(2022年6期)2022-08-17思维跳跳糖小哥白尼(野生动物)(2022年4期)2022-07-16思维跳跳糖小哥白尼(野生动物)(2022年2期)2022-06-01基于OBE的Java程序设计个性化教学研究电脑知识与技术(2022年11期)2022-05-31项目化教学在Python程序设计课程中的应用电脑知识与技术(2022年9期)2022-05-10C++程序设计课程教学改革研究高教学刊(2022年11期)2022-05-05思维跳跳糖小哥白尼(野生动物)(2022年1期)2022-04-26医学专业“Python程序设计”课程教学改革总结与思考现代信息科技(2021年21期)2021-05-07描写具体 再现过程作文评点报·低幼版(2019年46期)2019-12-30临终是个怎样的过程意林·全彩Color(2019年11期)2019-12-30

    推荐访问:程序设计 面向 思维

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章