查看原文
其他

STU课程思政案例33 | 陈银冬:算法设计与分析


一、课程简介

本课程介绍计算机算法的设计和分析,内容包括计算模型、排序和查找、矩阵算法、图算法、动态规划、模式匹配、近似算法、并行算法等。

学完本课程后学生将基本掌握数据结构和算法的设计与分析技术,提高程序设计的质量,能够根据所求解问题的性质选择合理的数据结构和算法,并对时间、空间复杂性进行必要的分析与控制。本课程的培养目标包括:理解算法分析基本方法,掌握时间和空间权衡的原则;理解穷举、贪心、分治、动态规划和回溯算法;理解算法分析对程序设计的重要性;具备算法设计与分析技能;具备精益求精的工匠精神、科技报国的使命担当,以及坚定“四个自信”的爱国主义精神。


二、课程内容

章节

第2.4节 分治法之矩阵乘法

知识点

思政要点

案例名称

矩阵乘法

科技报国

案例1:“Matlab被禁”事件;

融入方式:新闻时政,理论联系实际;

展示方式:多媒体,现场讨论

工匠精神


三、教学组织过程

第1学时

1.程序运行效率对比(5分钟,问题引导式教学)

现场先后运行两个计算程序,计算同一个矩阵乘法,运行时间(效率)差异巨大,从而引起学生的兴趣:为何差异巨大?

2.分治法回顾(5分钟)

回顾分治法的主要思想,以及用于分析分治法算法的主定理,为后续相关算法分析做准备。

3.朴素的矩阵乘法算法(10分钟,需求引导式教学)

介绍并分析基于直观分治法思想的朴素矩阵乘法算法,时间复杂度并不理想,有进一步改进的需求。  

4.改进的矩阵乘法思想(15分钟,对比式教学)

在朴素算法的某些关键参数上进行改进,并通过分析得知算法效率有较大提升。

5.讨论进一步改进的思路(10分钟,研讨式教学)

在对照中感受关键参数对整体算法的影响。现场组织研讨,在研讨中明确改进的方向和思路。

第2学时

6.矩阵乘法思想的发展历程(10分钟)

了解矩阵乘法算法近50年里不断改进的历程,让学生感受并领会精益求精的工匠精神。

7.矩阵乘法算法的最新进展(10分钟)

通过相关知识点的最新科研前沿情况,增强学生的科学素养和国际视野。

8.课程思政重点案例——“Matlab被禁”事件(20分钟,激发学生科技报国的历史担当)

(1)过渡:从算法理论过渡到现实环境中的常用工具——Matlab。

(2)设问:先抛出假设性问题:若不使用Matlab,将带来哪些不便?

再指出假设已成真:哈工大和哈工程均被美国禁止使用Matlab。

设问的方式能给学生带来冲击感,进而激发学生的爱国情感和科技报国的热情;层次:听思政

(3)讨论:引导学生对该事件进行讨论。

(让学生在讨论中感受被“卡脖子”的窒息感;层次:说思政)

(4)实践:布置“特别作业”:实现比Matlab更高效的矩阵乘法程序。提供最新论文供学生参考,并对商业软件的共性进行分析。

融合思政元素项目实践,让学生的爱国情绪落地,将愤怒转为动力,提升、内化学生科技报国的爱国情怀;层次:做思政

9.课堂小结与反思(5分钟)


四、教学反思

(一)总结分析

1.课堂以“问题引导”方式开始,能引起学生的学习兴趣。

2.新闻时政的切入点,让课程知识点到思政点的过渡更显自然。

3.“特别作业”的实践式课程思政,对学生的思政激发更具效果,有助于学生的思政内化,也更有利思政目标的达成。

(二)持续改进

1.学生讨论课提前布置给两个小组,课前准备相对充分,讨论效果会更好。

2.降低“特别作业”的挑战难度,让更多学生有“挑战成功”的获得感,更能激发学生科技报国的热情。


五、案例分析

今年6月,哈尔滨工业大学、哈尔滨工程大学因被列入美国商务部实体名单,并被禁用数学基础软件Matlab,引发了关于国产软件的大规模讨论。

对于大多数理工科学生而言,Matlab并不陌生,Matlab是一款被广泛应用于教学、科研、工业领域的基础软件,而这类EDA(Electronic Design Automation,电子设计自动化)软件,却刚好又是我国的短板。正因如此,不少行业人士感慨,这次我们真的是被卡脖子了。

6月19日,中科院计算所研究员、先进计算机系统研究中心主任,中国开放指令生态联盟秘书长包云岗在微博上分享了他在「CCF YOCSEF杭州· Matlab被禁之特别论坛」上关于“Matlab被禁”事件带来的思考与启发的发言。

包云岗指出,当我们在思考如何解“Matlab被禁”这个燃眉之急的同时,更需要考虑如何才能在未来做出像Matlab这样的工具,做出能卡别人脖子的技术。

至于如何做出像Matlab这样能卡别人脖子的软件,包云岗总结为如下四点:

第一,把东西做出来,而不是追求把论文发出来;

第二,把东西用起来,而不是做完就扔了;

第三,把教学场景用起来,而不是把教学当作负担;

第四,把持久战意识树立起来,而不是期望速胜论。

以下为包云岗在「CCF YOCSEF杭州· Matlab被禁之特别论坛」发言原文,雷锋网做了不改变原意的编辑整理:

很多人都在思考如何解决“Matlab被禁”这个燃眉之急的问题。大家回顾了中国的工业软件发展之痛,批评国内的盗版问题、知识产权保护问题、重硬件轻软件等一系列问题。也提出了很多好的建议,比如给了针对Matlab各种功能的开源软件替代方案。这些都算是“昨天和今天”的事。

现在我想和大家一起讨论一下关于“明天”的事。我们每个人可以问自己一个问题:从现在这个时间点开始,给10年时间,甚至20年时间,我们能做出一个卡别人脖子的东西吗?(并不是说真的要去卡别人脖子,而是说要成为别人离不开的东西)

如果从这个角度来看这次“Matlab被禁”事件,那么给我们更多的是启发。

我们都知道Matlab最初只是新墨西哥大学Clever Moler教授在1970年代用于教学中的一个小工具软件,那它为什么能在几十年后成为卡我们脖子的利器?

我们一起来梳理一下Matlab发展过程中折射出来的几个理念:

一把东西做出来,而不是追求把论文发出来。Matlab网站上有一篇Moler教授自己在2018年写的Matlab简史。他在开头就写道,在1971年和1975年他所在团队向NSF申请了两个项目,目标是“探索开发高质量数学软件的方法、成本和资源”。他自己也认为,从某种程度上来看,这两个项目是失败的,因为他们没有发表出一篇论文,他们只是开发出了两个软件:一个是EISPACK,另一个是LINPACK。而且这两个软件也谈不上有多大的学术创新,因为EISPACK就是把1965-1970年发表论文中用Algo60写的算法翻译为Fortran,而LINPACK则是直接用Fortran重写一遍。

二把东西用起来,而不是做完就扔了。虽然EISPACK、LINPACK没有相关论文发表,学术创新也似乎不是很高,但确实是两个很有用的软件。EISPACK的开发团队在1974年写了一本使用手册,我在Google Scholar上查了一下,到现在已经被引用了1800多次,1970-1980年代使用非常广泛。LINPACK更是世界超级计算机排行榜Tops500的基准测试程序,可以说是影响了世界超级计算机的发展。

三把教学场景用起来,而不是把教学当作负担。Matlab是Moler教授想把EISPACK和LINPACK应用于教学过程中的产物。如果Moler教授不是用心去做教学,不是为了能让学生更好地掌握线性代数与数值分析,更容易地使用EISPACK和LINPACK这两个软件,那么他就不会有动机自己动手去写一个Matlab小工具来把这两个软件接口封装起来,从而方便学生使用。

今天,由于严苛的科研竞争环境和考核压力,很多人都把教学当作了一种负担,认为会影响科研。但教学其实是试验新技术、新工具最好的应用场景,因为试错成本很低,而且学生的创新性和主动性,还能帮助改进优化技术和工具。Matlab最终走上了商业化道路,就是因为Moler教授在斯坦福大学给学生上课时,有两个学生对Matlab很感兴趣,主动提出用C重写一遍,同时移植到IBM PC上。很多技术最早都是从课堂上发展起来,比如RISC架构是David Patterson教授在伯克利的课程实验。四把持久战意识树立起来,而不是期望速胜论。坚持围绕一件事做,几十年后的累积效应是惊人了。中国今天被卡脖子的东西,几乎都是别人积累了20年以上的东西。

从第一版Matlab算起到现在已经有40年,1980年代初的第一代EDA软件到现在也有快40年,Intel在1970年左右第一代微处理器到现在已经有50年。台积电1987年成立到现在也是积累了30多年。其实在学术界也有很多有影响力的工作也是多年积累的产物,我们可以看一下ACM System Software Award,获奖的软件基本上都是持续积累了几十年,比如LLVM持续优化了17年、Eclipse优化了19年、Wireshark优化了22年、Coq优化了31年,GCC则有33年。

再仔细剖析一下Matlab以及MathWorks这家公司,可以说是持久战的典范。MathWorks在1984年成立,只有1名员工。第一笔收入是1985年卖给了MIT10个Matlab版权,收入500美元。MathWorks公司早期很不起眼,有个玩笑称它前7年员工数每一年翻一番——1984年1个员工,1985年2个员工,1986年4个员工,直到7年后的1991年也才只有128个员工。和今天很多初创公司相比,这个成长速度就像是蜗牛了。但是他们力出一孔,围绕着Matlab不断增加功能,使Matlab成为一个行业领先的工具软件。1997年,MathWorks的营业额达到了5000万美元,380名员工。如今2019年MathWorks公司营业额是10亿美元,3000多员工,全球有400多万用户。虽然从营业额看并不大,但其实我们更应该学习这种模式——不断积累。把一项技术做到极致,成为某个细分领域的隐形冠军。最后总结一下,当我们在思考如何解“Matlab被禁”这个燃眉之急的同时,更需要考虑如何才能在未来做出像Matlab那样的工作,做出能卡别人脖子的技术。这需要我们做出改变,观念上的改变,行动上的改变。

资料来源:雷锋网2020年06月20日 10:20:00

(上下滑动查看更多)

案例点评

(1)适用范围

本案例主要适用于算法设计与分析,线性代数,工程数学,数学实验等课程。

本案例是一个西方强国对我国进行“软件封锁”和“科技对抗”的时事案例,并布置程序开发作业,让学生亲自动手完成,在实践中增强学生的“科技报国”情怀。

(2)思政元素

“科技报国”情怀,“精益求精”的工匠精神。

(3)课程思政教学目标

① 通过案例讨论,让学生了解一个能“卡别人脖子”的软件的开发,是需要很长时间的积累,需要精益求精的工匠精神才能完成。

② 引导学生反思“落后就要挨打”,激发学生“科技报国”的爱国情怀。

(4)相关教学经验

与时事紧密联系,充分将专业知识与实践结合,引导学生理论联系生活实际。在从课程知识过渡到思政元素的过程中,要注意语气和情绪的自然,要注意照顾学生的听课情绪,调动学生积极参与课堂讨论;

通过“特别作业”的布置,让学生的爱国情绪得到落地,便于将愤怒转为动力,并在具体实践完成“特别作业”,既巩固了相关课程知识,又培育了相关思政元素,还增强了学生进一步学习的信心和科技报国的热情!




图文来源 | 陈银冬

编辑 | 王曦鹏

审核 | 洪秀秀 蔡玲如


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存