| 选课类别:计划内与自由选修 | 教学类型:理论课 |
| 课程类别:本科计划内课程 | 开课单位:近代物理系 |
| 课程层次:专业核心 | 学分:3.0 |
吴雨生老师被普遍认为是一位温文尔雅、待人和善的老师,但其授课方式却被批评为“催眠”,PPT讲解虽然逻辑结构较为清晰,但课程进度缓慢,内容理解困难。部分学生反映课堂内容可以自学,甚至有评论认为“课不听也行”。尤其在机器学习部分,课程的深度和逻辑性被质疑。
课程主要涵盖蒙特卡洛方法(蒙卡)、有限元素法、分子动力学、Mathematica应用和机器学习等。虽然内容覆盖面广,但因缺乏详尽细节和例子的讲解,学生普遍感到困难。据反映,热统内容的缺失影响了部分模型的理解(如Ising模型)。在学生看来,PPT内容主要偏向于概念性,而非实用编程技能的传授。
作业主要以编程为主,需利用Python解决实际问题。然而,许多学生在编程上遇到阻碍,尤其是缺少基础编程指导,而且多认为作业量偏大。考试与作业被认为是两条平行线,作业强调代码实现,考试则考察理论理解,有学生将此形容为“作业与考试几乎正交”。尽管如此,复习策略上建议关注老师复习课的PPT,并结合历年考试题型进行备考。
吴雨生老师的给分机制较为混合,不少学生对考试成绩和总评评级表示不满,但整体而言,给分被部分学生认为“较好”。然而,部分点评显示,期末成绩有一定“奶分”存在。课程最终评分政策不明朗,一些学生提到缺乏对学生困难的理解和调分。
对于有10年以上编程经验、强调分数者,可能会找到技巧性的解决路径,但对其他学生,特别是编程新手,若希望获得更为扎实的技能和理论基础,推荐考虑其他计算物理课程选项。课程对于时间精力的投入相对较大,需要学生进行自主学习和编程能力的补充,选课时需慎重评估自身的学习能力与安排。
综上所述,《计算物理B》在吴雨生老师的授课下偏向理论,实操指导不足,需学生有较强的自学能力和编程基础,否则可能感到挑战较大。
本人一般懒得写评课,除非一门课让我收获颇丰/体验极好,或者实在是难受到我了。计算物理B就属于后者。这篇评课希望能在点评课程的同时更多地讲一下如何上这门课和应对作业/考试。
关于给分:平时分44.1/45,期末卷面91/100,直接计算的话总评是94.15,最终总评96。课程有考勤,不定时在课程结束的时候屏幕上放一个二维码,里面是线上问卷。课程要求代码语言除了计算机代数部分必须是Mathematica外其余作业都必须是Python。
首先是这门课让人难受的地方。
课程上课用的是PPT,里面的内容非常多。吴老师本人性格温文尔雅,对学生非常友好,也很欢迎大家去找他问问题。但是上课就是念PPT,而PPT里内容太多就导致他讲课就是对着把每块内容提一下,总体的思路不清晰,主线也被淹没在了大量琐碎内容里,蒙卡部分还好,后面的内容整体图像自己看45minPPT就能明白的东西硬是讲3*45min还讲不明白最后什么也没懂。而上课举的代码实例/实现细节等,首先并不需要全部掌握,其次就算是需要掌握的部分,上课听讲估计也不一定能理解并记住,还是得课下自己再看一遍。
作业方面量不算小,但课上讲的也主要都是方法&概念,不会对课下做作业提供什么直接的帮助。很难想象在没有AI大模型的时代里独自一人完成作业有多痛苦(对着PPT、CSDN等来源的良莠不齐的参考代码东拼西凑一定很绝望吧……)有些章节的作业的各种参数都需要自己反复设置调整,debug也是写代码不得不品味的一环。而作业强调的是代码实现解决实际问题,但考试又不是机考,考试考察对计算方法和概念的理解,这就导致作业和考试几乎是正交的……
下面从听课、作业、考试三个角度讲一下如何应对这门课程。
听课:直到蒙卡IV(含)前的部分都建议听课。不管是从比较纯粹的课程培养目标还是功利性地从考试和作业来说,这一块的内容都是比较重要的,知识点密度也很高,需要的前置知识也就是概统,笔者个人认为上课听课能全部听懂还是挺不错的,当然如果上课一连串内容都听不懂可能还是课下自学比较好。蒙卡V开始及之后的部分都不建议上课听课了。这一部分的建议是,对着PPT有选择性地从头到尾看一遍,关注定性图像,不要陷在大篇幅的原理推导内,知道每个方法大概分为哪几步,这个方法能解决什么问题,其中涉及什么参数等,主要是要拎一条主线出来。具体到做作业,可以进行“面向问题的学习”,即作业中需要用到什么内容就倒回去看。比如学完有限元素法可能一脸蒙圈,然后捋完整体步骤后,看结果里需要解什么方程,方程中涉及那些矩阵,回过头再去看每个矩阵分别是什么,怎么算出来的。
作业:时代发展日新月异,不知道等到25秋在上这门课的时候几个大模型的coding能力发展的如何了,也许已经达到了可以以超高正确率直接秒掉作业的程度(24秋的时候直接把有些题目喂给AI可能还是会有点小毛病的)。首先个人建议抛弃掉一些初等教育阶段可能形成的观念,觉得让AI帮助自己完成此类作业是可耻的,本身这类工具创造出来就是用来提升生产力和效率的,降低专业门槛,利用工具完成任务也是一种能力。如果你就想图省事,肯定是直接把题目喂给AI(尤其是像有限差分、有限元素这种操作模式特别固定的算法是AI尤为擅长的),当然可能最后还需要自己debug。这里推荐一下Github Copilot,在Github的官网上进行学生认证可以免费获取。如果想锻炼自己的码力的话可以考虑自己写,结合Copilot进行自动补全。Copilot也能很好地解决不熟悉python语法的问题。当然也可以让Copilot帮忙debug。还有一个很重要的建议是多和同学讨论交流思路(笔者的分子动力学模拟结果一直有点问题,最后发现是自己忘了应用最小像力原理了),以及不要过分执着于作业,比如花一晚上倒腾各种参数试图达到最优表现,这个时间个人认为值得花到更有意义的事情上去,真想体验科研的感觉不如在以后的实践中需要用到计算的时候经历这一过程。
考试:如果目标是比较好的成绩,希望减轻考试复习的压力,那么建议在平常听课/自学学习的过程中就把方法和其中涉及的概念搞清楚,以及在做作业的时候不要过于无脑,不说自己在AI的帮助下按照思路写出来,起码AI写好的代码如果是对的话要能读懂,明白这个代码的每一步都做了什么,别直接跑完就交上去了。考试考察的就是方法概念的理解。备考的第一个建议是,吴老师会在考前有一次复习课,并且有一个大纲式的PPT,建议顺着他复习课提到知识点的思路把涉及到的每一个点的内容都看一遍(不用涉及具体代码实现)。第二个建议是,看一下往年的真题,比如↓
题型总体而言不会有太大的变动,可以自己做做提前找找感觉,让自己的大脑进行一下机器学习(笑)第三个建议是,由于机器学习的part讲得实在不清不楚,建议对着大模型一通狂问,尤其是真题里的机器学习部分的判断题,把所有涉及到的概念定性上搞明白就行了。从23年和24年的卷子来看最后一道题都会让你手搓一个回归的过程,比如自己画一棵决策树出来,实践证明这道题目战略性放弃(当然还是写了点定性的概念试图骗分,比如决策树应该怎么生成,用什么特征进行数据分类,Gimini杂度的定义等,毕竟骗分是老OI人的自我修养)也是不影响拿4.3的。
就说这么多吧,希望能帮到大家。虽然字里行间处处充斥着很功利导向的恶臭味,但我还是觉得有所收获的,不管是之前debug对意志的磨砺,还是对很多方法概念的理解,也算是在功利地收获好成绩和比较纯粹地达成课程培养目标之间做了一个平衡吧。
好吧都写了这么多了再多说一点,分享一些比较传统的debug方法,当然说不定以后AI coding能力更上一层楼之后用不上自己debug了:
最后的最后,以上评课可能会成为时代的眼泪。AI coding能力完全取代人类之时,我自己的理解是对人类的需求只需要有人能supervise和check correctness足矣,而检验是比生成简单太多的事情,此时培养人的coding能力有何意义值得深思。