| 选课类别:计划内与自由选修 | 教学类型:理论实验课 |
| 课程类别:本科计划内课程 | 开课单位:数学科学学院 |
| 课程层次:专业核心 | 学分:3.5 |
陈士祥老师的《运筹学》课程涵盖了从线性规划到优化算法的一系列主题。课程内容包括线性规划、动态规划、网络优化、优化问题的最优性判定(如KKT条件),以及多种优化算法(如梯度下降法、牛顿法等)。课程强调应用数学的思维,因此对于非数学专业的学生可能略显挑战。此外,老师调整了以往的讲义,增添了更多的动机和简化了一些复杂证明,让学生更好理解。整体上,陈老师被评价为对课程内容投入很大精力,积极改进教学材料,学习体验较为愉快。
课程作业量适中,包含五次小作业和若干次大作业,后者要求学生应用编程技能进行算法实现。作业主要考察对算法的理解和应用,尽管某些题目较为挑战,尤其是对编程不熟悉的同学。实验部分与课程学习紧密结合,难度适中,但需要准备充分。多位学生提到有良好的作业解答可以参考。
考试主要考察计算能力和对算法的理解,据反馈今年的考试比去年难度有所提高,涉及较多新内容如矩阵求导。然而,老师为帮助学生显著提高了总评的优秀率。期中考试可选,比例可以分配到期末,给分相对宽松,调分灵活以保证多数学生能够取得不错的成绩。
大多数学生对课程给出正面评价,尤其是称赞陈老师的耐心和关心学生的反馈。然而,也有学生指出较慢的授课节奏,在一定程度上增加了课程强度。一些非数学专业的学生觉得课程数学证明部分略有难度,但总体认为课程是高质量的优化入门课。
该课程对有兴趣深入理解优化方法和应用的学生尤其适合,建议对线性代数和矩阵运算知识较为熟悉的同学选修。另外,辅修或非数学专业的学生若希望兼顾课程与其他学业,可以考虑提前预习相关数学基础知识,以充分利用老师提供的丰富教学资源。
2024 秋
隔了快一学期来总结一下上学期的助教工作。
首先来简要罗列一下《运筹学》这门课的授课内容:
线性规划是各式各样的组合与数值优化问题的基本且重要的组成部分,《运筹学》这门课要求的可以说只有单纯形法的计算这一部分,限于课时众多其他的线性规划理论与技巧没有提及。动态规划与网络优化则是蜻蜓点水,同学们要掌握的是老生常谈不知道学过多少遍的 Dijkstra 算法。KKT条件是这门课的第一个高峰与重点,老师给了一个省略了诸多细节的证明,其中略去的凸集分离定理、规范性引理等亦值得思考。在后续的《最优化算法》课程中,这一部分会被再次提起并且更加细化。最后则是若干的数值优化算法,陈老师都大致上按如下顺序进行讲述:该算法的直观与动机 \(\to\) 算法迭代 \(\to\) 收敛性讨论证明 \(\to\) 实例。同学们需要掌握各种算法的迭代计算,基础的次梯度与近似点映射计算,与各种经典优化问题,收敛性证明仅需了解。在《最优化算法》中,会介绍更多的数学理论与工具,去泛化与加深一些求解方法;并且也会介绍在《运筹学》课中为介绍的一阶加速算法,和更多的收敛性证明;对随机梯度法也有更加详细的讨论。
24年是陈士祥老师第二次教授这一门课程,大体上这一门课程还处在一个完善和积淀的过程中:
陈士祥老师最后的调分方式也是很暴力的,给满了优秀率。具体调分公式我不好公布,可以大致说一下:是完全的线性调分,将原本说会占比50%的期末考试压倒了一个挺低的比率,并调高平时分占比,以此来调满优秀率。我也不好说这样的调分方式科不科学啦,但老师已经非常厚道了。也有不少卡绩的,我有问过陈老师要不要捞一下,但陈老师认为没有必要了,抱歉啦~
再来说说工资吧,24秋的《运筹学》有大约210人,人均下来一人负责70人,远超大部分课程。因此我或许得到了比数学分析B的助教还要多的工资,虽然代价是每次改作业都很痛苦,以及快要过年还看了快250份实验报告,还有期末考卷改到半夜两点。
因为要上别的课,以及懒,学期内大部分的随堂工作都交给了杨学长和刘学长,非常感谢他们。
总的来说24秋本人的助教工作中规中矩,相比于24春的《算法基础》助教,《运筹学》课中陈士祥老师包办了大部分工作,留给助教的也就只有最基本的了。
最后的最后,感谢陈士祥老师愿意给我写推荐信。
2023 秋
感谢老师啊,居然给了我96/(ㄒoㄒ)/~~。
之后可能再来写点东西。
小可爱自作聪明,认为作图法也算单纯形法,给扣了五分😇,期末最后89。现在只能祈祷project不扣分,这样我就是94.5,老师说会给到95😇。
只能说不太走运了,project扣了点分,算下来离4.3差的就是单纯形那5分。不过也无所谓了,学到真本领才是要紧的。
老师下学期接着上本研贯通课“最优化算法”,这次最优化算法不再炒运筹学冷饭了。欢迎大家来选。
有些资料可以看这里,老师参考的是这本书(PKU刘浩洋老师, 户将老师, 李勇锋老师和文再文老师的《最优化:建模、算法与理论/最优化计算方法》)。
最优化:建模、算法与理论/最优化计算方法 (pku.edu.cn)
老师真的把ppt讲义上的东西整理成note了!这样会让我越来越不想记笔记的啊~
我选这门课的目的是高替计科选修课中“运筹学基础”,不过实际上数院的这门课和其他院的还是有挺大不同的。至于我为什么敢选这门课是因为我看前面讲的是线性规划和一些基本的组合优化问题,我都学过了,想着凭着老本可以应付过去。不过老师只花了一个半月时间就把这些东西讲完了。
而后面的内容,我愿称之为“机器学习的数学基础”(本人没学过系统机器学习,所以这段话就当个乐子看),目前来看讲的是各种各样的数值优化算法。这门课应用数学的味道非常浓厚,按照我一个在THU的学长的说法就是“机器学习这东西很多都是先有了一些技术,然后才有人证明这样为什么好”。现在学到的各种各样的算法也是这样的,一些朴实的想法,加以一些优化,可能就有着很好的收敛性。
感觉这门课还是很有趣的,如果我TCS搞不下去了就润去搞ML了😂。
本来担心陈老师作为新来的老师不一定处理得好教课,但是现在看来新老师也给这门课带来的新活力。
陈老师对杨老师的讲义进行了优化,加上了一些motivation,并且简化了一些证明(如:导出线性规划极点的存在性用了直线这一概念,抛弃了之前讲义上的较为复杂的凸集表示定理)。只不过虽然进行了优化,讲义也达不到可以看着自学或者复习的程度(虽然讲义只是个大纲,但我还是贪心一点,而且老师说过想去整理一个note,我就期待一下啦)。所以上课还是比较关键的,老师上课会进行较为充分的引导,并且证明也会在黑板上先写一遍,并尽可能的告诉我们证明中每一步为什么要这么做,上课听着感觉非常舒适。
老师提供的讲义和助教的习题解析都很清晰啊,感觉可以出书了QAQ
期中小测出分。这个小测感觉比较简单,似乎大多数都>45/50;此外强者(如苏和杨)认为:期中考试的占比不值一提,于是直接选择放弃参加小测,将这比例移到期末。
占个坑先,出分后细评
丢一个优化算法比较短小精悍的参考书,作者写过数值优化那本书,但有点太厚了,最近新写的这本比较好读
老师小捞一手,不错😋 感觉是给我按比例算再加了两分
课程主要分为两个部分,线性规划、图算法等非连续优化的内容和后半部分连续优化。
课程体验非常好,小测的次数还挺多,不过是为了大家都能拿到这部分的满分,而拿满了后也可以直接不来😋。期中小测部分比例也可直接算入期末成绩中,大大缓解期中季的复习压力。老师考前还会有带大家做题复习环节,非常不错🥰。属于是可以无脑冲的课😍
总的来说这门课算是一个优化的入门课,而不是讲传统的运筹学(可能因为老师是做优化的。如果是对优化有兴趣的完全可以大二上就选这门课,然后大二下再上最优化算法。当然对于大二上的数院同学,可能并不知道优化是什么,但这门课对于想润去做应用或者cs的同学还是可以开拓很多可能的。
考完试破防了,一个单纯形反复验算半天一直以为是算错了,转轴运算转不动,开考半小时心态就炸了,大题也一堆不会,空白好多小问,比给的例子难太多了,找个没人的地方哭一会。
老师讲的很好,学不会是我的问题/ll
(作业做破防了来评一下)
这门课收获还是蛮多的,内容大概是前半学期讲线性规划,后半学期讲各种算法。课程穿插许多数学证明内容,感觉对于非数院人来说会有些吃力(比如我),做作业和复习的时候都很痛苦甚至一度想退课
考试比给的模拟题难一些,败在数学上了/ll
妮可什么时候出台最适合信智学部鼠鼠体质的线性代数教程/ll,线性代数B1完全不够用啊
本学期因为叠课申请了不参加小测(将小测分数移到期末),现在看来要因为这个被卡绩了/ll
有无去年学过的同学说说期末考了什么啊😭非数人真看不懂巨量的证明
还没有出分,但来点评。 首先说一下就是我是成绩整体中等的那种,其实运筹学对我来说还是挺困难的,学得有点折磨,期间想过退课。
但是老师人超好啊啊啊!有很认真地在让我们听懂!还会整理讲义,还会讲解大作业,非常平易近人!有回去问问题,讲台周围本来是有比较厉害的同学问我听不懂的问题,问完之后还在讨论,我就不太敢现在过去(对我就是觉得丢人),但是老师发现了我这个在附近瑟瑟发抖的鼠鼠,特别温和地问我有什么问题,然后很耐心地解答了,解答之后我发现其实老师上课讲了,但是我没有跟上,不过就算这样老师还是讲得很耐心很温和,感动哭了。
期末感觉还挺正常的,我考不好的话就是我自己的问题。
不过大作业对我这种跟matlab不太熟的非计数人来说有点困难了,折磨了一阵子orz
期末比期中高有点难绷 最后总评4.0 他给的实在是太多了
上半学期的内容基本为线性规划,下半学期则介绍各种非线性规划的最优化算法,包括其基本思想,迭代步骤,收敛性分析以及一些应用,基本两节课过一个算法,内容还是比较丰富的
有五次小作业和三选二的三个大作业,小作业基本是老师课上内容的一些gap或者拓展,有些小难但题量比较少,总的来说任务量较轻
有录播而且讲义质量高,对早上爬不起来的懒鬼友好(比如我),看讲义基本能学个七七八八,再看看录播足够应付考试了
建议可以自己看一遍文再文老师的最优化方法(就是陈老师后半学期讲义的主要参考书),会比较有收获
等到出分再来细细评论
--------------
虽然未出分,但还是想来夸夸你祥
这门课在教学时数学论证部分比较多,非数院的同学体验会比较差
但我在这门课上的体验十分不错:
1.点名签到比较宽松,很容易水满平时分
2.作业得分不与正确率强相关
3.考前有习题课且考点明确
4.sildes总结的很好,节约了总结ppt的时间
5.优秀率给满
6.最后为大多数同学加了总评
ps:一个老师的教学水平千人千面,但是不是用心让学生学的舒服大家心中有数
希望陈老师在未来的教学一帆风顺
期末改完了,卷子改的挺松的,最后一题有两个伪证的地方没扣什么分。
个人认为这张卷子出的不怎么样,算法考的太少了,像验证凸函数完全没必要考,没啥意义。
课程一共就十个左右的算法,数量上不多,但每个算法其实课外还是有很多可以深究的地方的,如果只是应付考试,花一两周突击一下应该没问题,但个人认为,对于计数来说,这门课应该是这学期最有价值的课程,建议好好学一下。
关于实验,强烈建议数院同学多花点时间自己完成,相比于数学实验那种垃圾实验和数值代数那种纯用来练习代码的实验,这种完整的实验项目更有价值,当然,这是建立在你想学东西的基础上,想混的话抄就好了。
注:老师作为第一次带课的老师,讲义写的不是很好(个人观点),有不懂的建议多看看知乎的相关文章,或者直接看英文教材。
老师讲课属于语速较慢的,这点被身边许多人诟病,讲课风格一百个人眼里有一百个哈姆雷特,但是老师对这门课的态度以及用心程度是毋庸置疑的(从逻辑清晰甚至可以直接印刷成教材的讲义可以看出来)
老师助教人都很好,学不会是我太菜了😇😇😇
第一周认认真真到课,勉强听得懂;第二周周一因为一些事情迟到了5分钟,老师已经写满了一块黑板,我一边看讲义一边抄笔记,终于在下课时候落后了半节课的内容,第三周周三决定自己在宿舍补网课,但是一觉睡到中午,恰好撞上声称不去上课的某人。现在距离作业ddl还有27个小时,破防中。。
(不过在知乎上刷到一个答主说自己研一第三次学单纯形法才有点理解,我也就释然了)
先说结论,推荐所有其他学院的同学来选修运筹学。本人非数、非大数据,纯纯因为对优化感兴趣,所以选了这门课。
关于课堂
陈老师上课讲的节奏整体较慢,而且讲的很好,对于我这样数理基础不好的信智人来说,一般上课认真听都能听懂大部分,不过对于一些算法的收敛性证明和较为抽象的概念、定理(比如切锥、线性可行锥、几个约束品性条件等)就需要提前看一看讲义,这些内容对非数的人来说可能有些难度。课上陈老师会举很多应用方面的例子,印象最深刻的是在罚函数那一节举了一个协同过滤的例子,这刚好是徐童老师的Web信息处理与运用的lab1的推荐部分。
作业和实验
作业一共有五次,每次给的ddl都挺长的(至少两周以上),有几次作业有点难度,花了比较多的时间。
实验的难度也不大,就是最好不要等到最后一天才写。
考试与给分
考试前老师会给出一个题库,在最后一周的课上老师会讲这些题,但是考试的题目会比给出的例题难一些(说实话例题对我来说已经够难的了),需要下一些功夫准备,最好看看矩阵求导、SVD分解这些内容,本人考试时有一道题因为矩阵求导的公式忘了,自己推也没推对,连迭代公式都只能乱糊一个,倒在了最基本的矩阵求导上了。
平时分拉满,总评比我自己按照比例算出来的高8分,可以说是给分非常好了。
本人第一次接触运筹学,上课时经常看不懂PPT,作业也不太会,大作业也做得马马虎虎,靠期末陈老师与助教老师们发的习题答案和文再文老师的《最优化》查漏补缺,在期末考试中取得的了一个相对不错的成绩。不过这门课确实给我带来了许多收获:熟悉了应用Python编程,学到了一些有用的优化算法,并且为接触机器学习深度学习的内容打下了一定的基础。最后再次感谢一下陈老师和三位助教老师🌹
辅修 CS 人,选这门课是单纯是想了解一下这门课所涉及的一些算法,因为是辅修也没有什么成绩的压力。
坦白说这门课强度比我预期中要高不少,因为很久没用过线性代数导致这门课学得磕磕绊绊。有不少内容从直观上很好理解但是写成矩阵变换的形式后就不太好把握。期末速通(当时两天要考 4 门,而且期中小测之后的内容我几乎没怎么学,期中小测甚至也没去)的时候有点后悔没有退课,一度担心挂科。所幸期末考卷上还有些单纯形表、手算最短路的题目能够保底。
虽然因为叠课的原因没怎么去上过课,但是能感受到陈老师是个非常好的人。助教们也都很尽职,很少能见到这种高质量的 Lecture Notes 和作业解答,为老师和三位助教点赞👍
摆成这样都快混到 80 分了,老师是奶做的吧。
这学期选修的 计算机图形学 课程中见到了不少运筹学的影子,只不过在理论的基础上加上了离散化,最经典的就是 Lab5(ARAP)中用到的最优化目标函数的算法本质上就是这门课中所讲的 ADMM 算法(老师上课也提了一下)。也许以后有精力会自己再去学一遍凸优化相关的内容。
21管统大四人,这学期一节课没去过。虽然说凸优化都学过一些,有些还是好生疏。做题技术基本上范数不等式和泰勒展开加矩阵求导。离考前还有9个小时,还有5个lecture没看,还有希望吗
复习的快要崩溃。压力最大的一个期末周,可能是大三老灯已经没有激情应付考试了。
讲课太平淡了没有什么起伏,太催眠了同志们
讲得好不好不知道,因为听不懂思密达
讲的真挺好的,学不好真是我的问题,泪目了。
1.最重要的改变:
有了能看的(系统\流畅\错误少\讲人话)讲义,自学不会痛苦。看过yzw的讲义的人都应该知道这是多么重要的一件事
2.关于课程内容:
线性规划,网络流(重点内容),非线性规划(算法多,介绍为主)。差不多20个算法,算法内容主要就是:①对问题抽象化② 引入对应的数学概念和工具,有些新概念也是根据对应问题量身定做③算法实现④收敛性分析
前三点尤为重要,这对于正常上好数分A2和线代的数院人,难度几乎是没有的,需要的是时间。第四点基本不要求,故这门课的难度甚至不如隔壁数值代数了
3.作业:
书面作业:一章几道题,是一些算法涉及的小gap,量少难度适中
程序作业:实现比较重要的算法,一共三个。语言无要求,建议用python,C++,MATLAB,配合AI难度不大,工作量主要是良好格式的实验报告(2024年了不会还有人写代码不用AI辅助吧)
4.考核:平时+期中(可选)+期末。期中可不来,比重划到期末,给分是非常捞的,水学分可无脑选
5.其他:
这门课是一门保姆课,陈老师基本已经把饭喂到嘴边了,这和yzw走了两个极端,不过显然,一份好讲义和一个好课堂更加珍贵
另,虽然讲义整理得很好,但是有些地方仍然可以参考知乎,会更易理解
最后,吐槽一下期末发卷,居然采用了蛇形方式,可能是助教gg最小化了效率吧(无恶意
去年选过但因期末考试比较密集退课了,今年再选。评价为老詹行为。
老师的投入大家都看在眼里,出卷也没有为难大家,只能说陈老师yyds