首页 理论教育 探索与实践相结合的教学方法改革

探索与实践相结合的教学方法改革

时间:2022-03-09 理论教育 版权反馈
【摘要】:“数值分析”是应用性很强的数学类课程,是工程数学与计算机应用的桥梁。通过一系列的实验帮助学生掌握基本的误差分析方法、求解非线性方程和线性方程组的方法、求特征根、用插值及拟合近似计算函数值、计算近似定积分、求解微分方程的方法等。所以,探索和研究是教学中需要反复强调训练的。课程采用小班教学,人数基本限定在50人以内,第一堂课将学生分为18组,最多每3人一组。

探索与实践相结合的教学方法改革——“数值分析”课程

陈 越
 计算机科学与技术学院

一、课程简介

1.课程类别

专业选修课程

2.学科类别

工学—计算机科学与技术

3.课程目标和教学内容

(1)课程目标:解决问题的数值方法已经成为工程学乃至社会科学研究中非常重要的基础工具。“数值分析”是应用性很强的数学类课程,是工程数学与计算机应用的桥梁。通过学习,学生将掌握经典算法的基本理论、使用技巧,并能够灵活应用以解决实际问题。

(2)教学内容:该课程介绍将连续的数学模型离散化,通过计算机程序在有限步骤内求得数值近似解的方法。通过一系列的实验帮助学生掌握基本的误差分析方法、求解非线性方程和线性方程组的方法、求特征根、用插值及拟合近似计算函数值、计算近似定积分、求解微分方程的方法等。

4.教学对象

浙江大学计算机与软件工程专业三年级本科学生;每年开设3个左右教学班,每班人数控制在50人以内,采用小班化教学。

5.课程学时和教学场景

(1)课程学时:课堂教学40学时,实验教学16学时。

(2)教学场景:课堂教学在多媒体教室,实验教学在计算机实验机房。

二、课程教学重点解决的问题

工程数学领域内用到的大量数学模型,还不能直接用计算机求解,必须通过数值方法把原始数学模型离散化,变为算法语言能认识的、有限步可解的数学模型,才可通过计算机编程、运行得到数值解。“数值分析”就是以高等数学和算法语言为基础,介绍这些数值方法的来龙去脉,使学生学会基本原理,掌握灵活实际应用的技巧。

课程教学重点解决的问题有两个:

(1)在传统的数值分析教学活动及教材中,往往偏重理论证明和简单的手工跟踪算法实践,较少给出数值实验习题,而对如何进行数值实验,如何基于算法进行编程练习等更没有要求。但本课程是一门应用性很强的数学类的课程,因此教学过程中应特别注重实践。虽然专业软件Matlab具有强大的计算功能,但处理一些特殊困难的问题时仍然不能保证得到好的效果,所以专业人员仍然有必要掌握对基本算法的实现能力,才能在改进算法适应性方面得心应手。

(2)数学的学习是锻炼科学研究能力的重要手段之一,课程本身传递的知识固然重要,更重要的是引导学生训练逻辑思维能力,掌握逻辑推理的一般方法,从而培养出科学严谨的思维习惯以及主动探索求知的精神。所以,探索和研究是教学中需要反复强调训练的。

三、教学方法改革

1.教学实施策略与方法

针对课程教学的目标和教学中重点解决的问题,目前课程采用的教学实施策略和方法主要有:基于团队的学习组织方式、基于提问的互动教学、基于编程大作业的实践能力培养以及基于拓展性课题的研究性学习。

(1)基于团队的学习组织方式。课程采用小班教学,人数基本限定在50人以内,第一堂课将学生分为18组,最多每3人一组。每组学生在课堂学习中座位集中,以方便课堂讨论,并且在课外实践中分工合作完成18个拓展性课题之一的研究任务。

(2)基于提问的互动教学。教师在每次授课前准备若干问题供学生课堂讨论,学生讨论表现记入考核成绩。讨论问题主要有两种:一种是比较简单的问题(一般是引导性问题),由学生独立抢答,每次回答或者主动提问均记入课堂讨论得分(个人);另一种是比较难的问题(共36个),由学生在课堂上分组讨论,5~10分钟后提交书面答案,教师课后评分(团队分)。

(3)基于编程大作业的实践能力培养:课程除了布置小型作业外,还设计了8道需要编程实现的大作业,由学生在课后独立完成。由于采用自动判题系统24小时开放评测,学生可以在整个学期的学习中随时反复提交完成。课程组教师针对实施大作业的经验,编写了实践指导教材由浙江大学出版社(2009年)出版,是国内第一本关于数值分析的实践指导教材。

(4)基于拓展性课题的研究性学习:课程设计有18个拓展性课题(research projects),部分内容超出了教材范围,由学生根据教学进度在不同周分组研究完成。每组学生抽签选择1道题目。学生需要根据题目要求,自行查找资料、归纳总结知识点、动手做实验进行验证等,在一周后的课堂上随机抽取一位学生代表做15分钟左右的汇报演讲(一般占用半节课时间),由所有同学提问、答辩。这种方法的目的在于引导学生能科学地分析问题和解决问题,充分锻炼学生自主学习与钻研的能力、撰写科学研究报告的能力、口头表达能力以及团队合作与沟通能力等。

2.具体实施方法举例

(1)基于提问的互动教学举例。

例如,在学习了解方程组的高斯消元法以后,进入算法的矩阵形式研究之前,提问“Hey hasn't GE given me enough headache?Why do I have to know its matrix form??!”(嘿!高斯消元法还不够我头痛的吗?为什么我还需要知道它的矩阵形式??!)通过讨论使学生理解矩阵形式在解决某一类问题中的重要性。

又例如,在讲解完单个方程求根的不动点迭带算法后,进入求解线性方程组的迭带算法之前,提问“What to analyze?”(该分析什么?)引导学生举一反三,将单方程求根的整套方法大胆地推广到高维空间,猜想解决方程组问题的大致思路,然后再进入小心求证阶段。这样使得学生对整个问题域有全局观,不会迷失在数学严谨的推导细节里。

(2)基于编程大作业的实践能力培养举例。

课程组设计了8道需要编程实现的大作业,由学生在课后独立完成。这些题目覆盖了基本的误差分析方法、求解非线性方程和线性方程组的方法、求特征根、用插值及拟合近似计算函数值、计算近似定积分、求解微分方程的方法等。每道题目定义了严格规范的函数接口,并且部分题目可以有多种解决方法供学生尝试。

例如,“Numerical Summation of a Series”一题要求学生实现按照“void Series_Sum(double sum[])”定义接口的函数,计算某特殊的无穷级数的近似值。难点在如何平衡计算精度和计算量,至少存在3种不同的解决方法。

又例如“Root of a Polynomial”要求学生按照“double Polynomial_Root(int n,double c[],double a,double b,double EPS)”定义接口的函数,求给定多项式在给定区间内的根,同样存在3种以上不同的解决方法。

(3)基于拓展性课题的研究性学习举例。

课程组还布置18道拓展性课题,这些题目有些是课堂内容的延伸(如在讲解了方程求根的牛顿法以后,让学生自学讲解割线法,并与牛顿法比较优劣),有些是综合应用学过的算法解决问题(如在学习了各种曲线的插值和拟合算法后,自行选用合适的方法编程绘制出一个给定物体的复杂轮廓线,例如一头红牛),有些内容则超出了教材范围(如刚性微分方程的解法)。

课堂报告由学生事先准备好PPT,教师当场随机抽取小组的一名成员代表小组进行报告,并由教师和其他各组同学共同打分。打分标准包括:报告的正确性(presentation correctness)、报告的清晰性(presentation clearness)。

3.教学方法特点分析

针对非数学专业学生学习数学理论的特点,本课程教学内容在适当介绍理论方法的基础上,更强调理论方法在实际问题求解中的应用。因此,课程教学中选用了理论探索与实践相结合的教学方法,主要特点有:

(1)以需要编程的大作业锻炼理论应用能力。传统的数学教学中只重理论证明而忽视应用能力训练,本课程针对计算机类专业学生的特点,设计了以实际问题为背景的、具有一定开放性的上机编程题,强化了学生动手实践、综合应用理论知识解决问题的能力。亲手实现经典算法,而不是简单使用Matlab软件解决问题,可帮助学生更为透彻地理解算法的结构、特点,从而打下更扎实的基础。

(2)以拓展性课题的研究探索培养科学思维习惯。通过布置一系列超出教材范围的拓展性课题,让学生在理解课堂教学内容的基础上展开课外的团队式探索学习、文献分析等活动,既扩充了学生的知识面,又强化了数学逻辑思维能力的训练。在传递知识的同时,更重要的是通过探索性的活动培养学生科学严谨的思维习惯,为他们以后进行科学研究打下良好基础。

四、课程考核方法和支撑手段

1.课程考核方法

课程成绩(100分)由下面几部分组成:

(1)课堂讨论:共设计有36道讨论题,现场提交,分组考核,总计18分;

(2)课后编程大作业:共8题,总计30分;

(3)课后拓展性课题研究:每次共设计有18道研究题目,学生分组完成,每组做1题,总计7分;

(4)课堂抢答或提问:0.5分/次;

(5)期末考试:40分。

除期末考试外,其他部分的分数以60分为上限,超过者仍按60分计。

对于少数平时成绩优秀的学生,课程组采取了差异考核,给学生自主设计考卷以替代期末笔试的权利。关于如何出考卷,给出了严格的规范要求:

①题目涵盖知识点范围:

● 教材内容:题目必须至少涵盖教材第1—9章在课堂中讲授过的全部知识点的80%。

● 拓展内容:至少有1题涉及18个Projects中课件以外的知识点。

②题目类型及描述:

● 题目必须用拼写、语法严格正确的英文描述。

● 题目必须有明确的评分标准。

● 题目类型原则上不限,常见的类型有选择、填空、论述、计算、证明等。

● 整卷满分为100分。

③解题报告:

● 考查目的:每题必须写明考查目的,包括考查的知识点、该知识点在整门课程中的重要性、该题目拟考查学生哪方面的能力等。

● 题目详解:给出题目的详细解题过程(选择、填空也必须给出详细过程);如果是主观题,还须给出分步骤的评分细则。

● 知识点及难度分布汇总表:给出表格,列出整卷涉及哪些章节的哪些知识点,每个知识点的难度和分数分布。

④注意事项:

● 题目难易分布要适当,应包含一般简单考察基本概念的题目、中等难度的应用或分析型的题目以及1~2道比较有难度的综合性题目。

● 题目的分数分布要适当,一般简单题占30%左右、中等题占50%左右、难题占10%~20%。

● 题量要适当,保证绝大部分学生可以在100分钟内完成,留20分钟左右检查。

● 因为是开卷考试,所以不要出直接可从教材中照抄答案的题目。

● 题目要求原创。不得从网络等其他公共资源中直接获取题目,一经查出,该题目作废。

⑤其他说明:

● 出卷人资格:平时成绩54/60分以上的学生有资格以出卷成绩替代期终笔试成绩。

● 出卷成绩满分为100分,题目质量和解题报告质量的评价各占50%。

● 出卷人须在统一笔试开始前将卷子通过E-mail发给任课教师,一般将在第2天获得该卷的出卷成绩。

● 出卷人可根据成绩自行决定是否参加统一笔试;若参加笔试,则以笔试成绩为准。

● 学生一旦选择出卷,即视为承诺对自己所出的题目保密。此为良心承诺。

2.网络支撑手段建设

本课程不仅要求学生掌握各种数值算法的原理,更要求学生会应用算法编程解决实际问题,算法效率是测试的核心,因此需要有相应测试手段;另外,由于课程实施时有2~3个教学班同时进行,而大作业题目是一样的,因此也需要有手段来保证各人/小组工作独立完成,防止不同班级之间(或者不同届学生之间)的抄袭行为。所以,课程组除建设基本的课程教学网站外,还专门研究开发了两个有特色的网络教学支撑系统:

(1)程序在线评测系统(NAJudge):建立一种客观、标准化的程序设计评测方法,不仅评测程序的功能,还评测程序在时间和空间上的性能。与其他自动测评系统不同的是,为了强调核心算法的实现,弱化输入输出等繁琐编程细节的影响,本系统不需要学生编写完整的主程序,只要根据严格定义的函数接口完成核心函数功能的实现即可。这也从另一个角度训练了学生模块化编程的专业素质。

(2)源代码及PDF文档查重系统:建立课程实践环节所产生的反映实践结果的文档库(包括源代码以及PDF文档)并具有查重功能,为检查学生在实践环节中的诚信与保证公平提供了技术保障。目前,系统中已拥有历届数千份学生大作业源代码和文档。

五、教学效果和推广性分析

1.教学效果

本课程的教学方法改革自2008年秋冬学期开始试点,2009年在所有3个教学班中全面实施。目前进行了4届学生实验,涉及约200名学生。改革效果良好,获得了学生很好的评价。典型评价有:

“Discussion有36个,每个0.5分,规范程度以及强度超过大学里上过的任何一门其他课程的随堂quiz。”

“我们小组当时非常意气勃发地调研了一遍几乎能够解这个二次方程的方法,查了教材的第二章以及很多篇论文,还把其中所有算法实现了一遍,当时写这些程序以及观察结果一直做到凌晨5点。做完之后感觉收获颇多,远比简单听一下课堂上的讲解感受深刻。”

“课堂上互动氛围也是上浙大这么多课程以来感受最深的一次。话说重赏之下必有勇夫,因为一开始有平时5分的课堂表现分,所以就比较活跃,到后来慢慢就养成习惯了。”

“那些Discussion都设计得挺好的,做的过程中我常会有这样的感慨,我怎么没有想过这个问题,事实上那些问题正是帮助理解某些概念和定理的。”

“关于研究性课题,难以想象一门数学课可以如此激发人的兴趣(原文:About the research topics,no one could imagine that a mathematical course could reveal its interest by such a means)。”

“真切地感觉到了这门课对我的改变。以前,习惯于上课随便听听,考试前才认真复习;现在,每次课上的Discussion逼得我不得不每次课前预习。以前,习惯于老师讲多少就学多少;现在,做个Research Topic要自己去搜集资料,提心吊胆害怕做得不好,担心同学们挑错……跟同组的同学熬夜研究Discussion,至今难忘。”

“我可能是整个班级中被No掉的次数最多的人,因为各种各样的原因:滥用Power(),对算法得过且过,不认真审题,程序算法复杂度过大……在完成Lab的过程中,我被wrong answer和No彻底打败,发誓以后再也不选这么麻烦的课了。但是当学完整门课时,我慢慢地习惯对程序认真起来了。我在写程序之前会考虑有没有最优的算法,算法复杂度是多少,可不可以节省更多的空间……那些一次又一次被No掉的过程,居然帮助我认真地了解了很多很基础的算法。”

2.推广性分析

本课程教学方法的实施需要有以下条件支撑:

(1)需要小班教学。由于课程学习组织采用小组方式,并进行基于小组的课堂讨论和大作业课堂汇报,因此如果教学班人数过多将难以保证教学质量和效果。

(2)需要有技术手段支撑。需要有评价程序效率的评测系统和查重检测系统,以保证小组合作完成大作业的效果。同时,课程组教师需要热心投入,定期更换大作业题目。

(3)需要学生花更多的时间和具有良好的学习主动性。为了课堂学生研讨,教师授课时间必定被压缩,因此需要压缩课堂教学内容,不讲的内容由学生自学。这样考试范围不仅包括课堂上讲过的内容,而且包括全部研究型大作业的内容及要求学生自学的内容,做到“讲1做2考3”——即老师“讲”核心知识点,学生“做”部分知识点的深入研究(每个学生做1个研究题目),“考”全部研究题目覆盖的范围。

整体来说,该方法比较适合于高年级学生的技术性课程,对于那些基础知识要求非常扎实的课程可能不是很适合,因为在目前状态下课堂学时和教学内容的压缩可能会使学生基础知识不扎实。

六、课程教材及实验参考书

[1]Richard L Burden,J Douglas Faires.Numerical Analysis(第7版).北京:高等教育出版社,2001

[2]陈越,童若锋.数值分析课程设计.杭州:浙江大学出版社,2009

[3]金一庆,陈越.数值方法.北京:机械工业出版社,2000

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈