2025.1.11 Update:评论 part
2025.1.13 Update:转人工,省流:最后一段
作为同学(22f)
(叠甲:我学过 OI,所以觉得我有失偏颇的可以选择性跳过这个部分。)
我一开始对于这门课程的期望,是基于我学习的过程的认知,和学长告诉我的已知信息(包括以身入局 CS10121f 等),得出的 “我可能不需要系统性的认真学,但是我需要定时 Review。” 的结论。而事实是确实如此。每次考试的范围都有我不甚了解的部分,如前半学期的 AVL,后半学期的 Reduction 等内容,(我相信大多数之前学习过相关内容的同学,包括一些 OIer,所学过的内容应该也不会 cover 整个课程。),而无论是线上考试的 final 还是线下考试的 mid(甚至前一天还熬夜了),我认为我都因为 review,而不是仅仅是因为我的 OI 经历,获得了较好的成绩,也就是说,我认为学习方式也是学习这门课程重要的一环。
去除完这些碎碎念后,我对这门课程的态度其实是较为不满意的:一方面,考核形式断档性的割裂,不管是 PA,还是 hw 的大题,小题。PA 的难度自不必多说,22f 的 PA 被人诟病也不是一天两天了,小题又较为应试而非强调于考察算法本身,这使得小题的得分率和大题的得分率对于相同掌握程度的人来说区别很大。大题考察内容相对传统,一般都是关于结论和算法的推导。另一方面,我也听讲了课程的前半段,由于和张老师关系不错再加上学期初无所事事,于是早八起来听听课。但是听课效果着实一般,一方面是几乎不存在的教学反馈让老师就像在舞台上演独角戏,另一方面是老师教学和念 PPT 的区别着实相较不大,两点综合起来让我在期中过后打消了上课的念头,也让我有了想要去当助教的想法。
但是 23s 我去当 CS100 的助教时,着实让我无语了好一阵子。尽管如此,我还是报名了 23f 的 CS101 的助教。
作为助教
(叠甲:我以下所有的评论都是针对思想和概念,除非特指否则不针对个人。)
在 23f 的时候,作为一个 “半新人”,我和一位学长搭班上习题课,不点名这位学长,但是我认为他是另一位学长的孝子(那位学长不在 TA 团队里,但是在教学团队里)。我在 23f 涉及设计的作业内容是 HW4(分治与 Master 定理),HW8(MST),在 24f 其实也延续了下去。
23f
23f 刚开始时,我们的团队提出的方针是 “去竞赛化”,我认为初衷是非常不错的。但是 PA1 的出现,让我觉得这有些矫枉过正了,举例说 PA1 的链表,Modern C++ 的内容比例远超算法设计的范围,我也在 TA 群里与很多人爆发了争吵,争吵妥协的结果是没有结果。我认为 Modern C++ 的使用程度应当介于 “会” 和 “用了能更好” 之间,而不是强制将它们认为是一个前置的知识点逼迫学生去按照语言律师的范式写一些做梦一样的东西,这会让我怀疑我们真的在考 CS101 吗。
(因此我也不认为没经历过的人对此事件的评价有什么参考价值,特指某评论。)
PA1 的高开低走实际上也有些将 TA 团队分化成两部分人,好在 PA2 出现了, 我认为 cst 出的 Huffman Coding 彻底把去 OI 化这种思想做到了极致,难度也把握的非常好,然后 gk 出的多项式乘法也属于不错的题目,有不同的解的同时也让我见到了很多种不同的风格,知识拓展与衔接也是做的很不错的,再加上一道平衡树的板子,这种 PA 确实是理想中的形式,但很可惜,在我当 TA 的两年里,我似乎就只见过一次这种风格的好 PA。(24f 的 PA3 我认为还是较为不错的,但是与这个 PA2 的风格不是很类似。)(24f 的 Mid 分治大题,其实就是基于 PA2 的多项式乘法的一种。)
总的来说,23f 我作为 TA 的感觉还是不错的,不管是习题课讲评,反馈,还是 PA 和 HW 的自反馈,唯一美中不足的地方可能确实就是因为老师本身专攻领域与某些内容不是很匹配,导致老师可能没法讲好一部分内容(如 NPC),而习题课又只有十分钟复习根本不够,这导致了可能还是依赖学生的能动性。
还有一个有争议的事情,是线下 check,我个人是偏向于不支持的,但是也不反对,线下 check 确实能让同学自己写的时候就理解自己要写的东西,但是问题是 check 可能太过耗费大家时间。我认为效果挺好,可能形式要改
过渡
我和 flash 其实在 24s 的时候就讨论过 24f 的课程设计,一方面我想把课程内容顺序交换,把分治向后,贪心向前,树结构和图结构连在一起,再单独讨论 dp 等思想,再其次是 anti-pattern;另一方面是把 check 改为类似解题报告的形式,不仅省去了线下的时间,还增大了自由度,也锻炼了同学的 latex 能力。(事实证明,还好没加,加了就是 GPT 乱飞。)
24f
24f 的开始,我认为会延续这样好的结果,结果赵老师直接在群里说:“我们要加入人工智能和大模型的部分”。差不多得了。问为什么就是 “你别管”。事实证明,确实加入了,不过是学生写作业的时候加入的。
于是这学期开始,一方面要与人工智能议题对抗,一方面又要提升课程质量,被整的焦头烂额。很具宿命感的是,PA123 的高开低走程度还是和 23f 类似,PA1 矫枉过正的烂,PA2 回暖的简单,PA3 平稳落地。不过这次 PA1 的烂是因为,矫枉过正又矫枉过正了。一方面,没有提前商量好导致内容出现了重叠;另一方面,对学生水平和难度之间的把控不是很好。
HW 的部分,许多同学抱怨难,抱怨做不出,更有甚者第一个交作业然后交了份 GPT 出的上来,大部分的交作业也集中在 ddl 最后的 2h 中。我们(包括老师)设想的知识体系,是上课→作业→习题课(quiz)→作业修改→考试,一个起码三遍的知识回滚,才敢认为知识是被嚼烂嚼透了。而每次我上课的反馈,只有寂静,或者笑声,我不敢苟同这种做法,但这也让我思考问题出在哪里。我尝试把习题课前的 review 加长(这甚至违反赵老师一开始的想法),加入例题,把 hw 的 ddl 调整,加入例题,piazza 交互也多次提醒提前开始,但是收效甚微。
所幸在 midterm review 之后,有不少同学上来提问,让我对同学的主观能动性又充满了信心(直到批完了卷子)。
我做了不少的反思,也提出过 hw 形式是否应该改变,但是在我们做出尝试之后,丝毫没有回应。这时我终于有些理解那个宁愿去当信导 TA 而不愿继续当这门课 TA 的学长了。
Workload 、内容与其他
不过我十分疑惑的是,同样是 4 分课,为什么 CS100、CS101、CS110 的 workload 会被区别考虑?明明都是 4 分课,被提到时却会被单独考虑,还是说 coding 的 workload 显然不如纸质作业,真的吗?我想可能是大家先天地认为这门课是 OIer 的课,OIer 都要花时间,那一定是不对的。但是事实并非如此,CS240 这种更难的课况且没有这种说法,又遑论 CS101?我不敢改变大家心里的成见,只能尝试着先改变课程。
24f 我还想的一个改变,就是继续 GK 提出的 “去 OI 化”,我认为矫枉过正的一部分原因,是因为大家都认为 PA 是 OIer 的重点输出部分。我着手于改变作业和 quiz,力图让大家意识到,“算法与数据结构” 不等于 OI。包括几次 quiz 考察的内容转为了分析,转为了思考,而不是 OIer 直接秒了的题目(如 quiz3 的最后一题)。在意识到收效甚微后,我对 quiz 和 hw 的想法思路就是 “扁平化”,老师课上讲不明白的,大家不肯听的,做的少的,我们来补充,帮助大家用基础方法理解算法的运行本质(如 quiz8 的倒数第二题,hw8 的第二题);或是整理结论,以考代学(quiz13)。但是可惜的是,收效甚微。我不清楚是形式的问题,但是我和 teafrogsf 聊了聊后豁然开朗,他跟我说:“你无法拯救所有人”。
我作为 leader team 的一员,在面对同事 / 同学装死时,也想过是不是干脆摆烂了其他人来搞得了,我也想过是否究竟要加入一些内容;另一方面,由于你校经典的 CV 特性,我又审视起这门课存在的意义,是面向哪些人群,想要让学生知道什么,我想让它成为一个专业与科研的衔接课吗,还是一个科普知识的课程,前者太深,后者太浅;我又把目光放回 CS100,一个我同样当过助教的课程,我想要 CS101 具有相同的深度,可能吗?
答案自不必我说。我决定听从同学的意见,我在习题课上发了一封调查问卷,数据显示,有超过 50% 的同学 “想了解算法与数据结构,并通过课程的成绩证明我掌握了课程内容(可能有额外的收获)”,我当时觉得,太好了,至少我对课程的努力还有意义。然后这个认知在那节习题课下课就被打破了,当时我们约谈了两个 GPT 写作业的同学,我问他们问卷选的是什么,一个同学满不在乎的跟我说选了上面我说的那个选项,同样也是满不在乎的跟我说就是 GPT 写的,然后我跟她讲完处罚后,她跟我说的第一句话是,“能不能扣分只扣一题不扣一次作业?” 另一位同学选的是 “拿到较高的成绩(A - 及以上)”,相比之下,他就谦卑很多,可能是知道自己出现错误的原因。我那天和 zsc 回去的时候就一直想,怎么回事呢?选项背后呈现出相反的心理。另一个例子是我的一个论文合作者,在发了大于等于 3 封邮件后通知他可能具有学术不端后,他缺席了大于等于 3 次习题课,也拒绝和我们沟通,我不知道是为了躲避还是单纯没看见。
以上种种例子让我感到真的非常矛盾,有很多同学能动性很高,一直课下来问我问题,或者发邮件,qq 来问我问题。也有很多同学 “拨一拨动一动”,仿佛课不是为了他上,而是为了他父母或者其他人上(不排除有这样的例子,如果有的话,我真心建议你转专业或是好好和你的原生家庭聊聊,至少能决定跑路还是留着,之后的批评也不针对你),而平日的生活就是拍拍 vlog 或是窝在宿舍不知道干什么,展现一下大学生的惬意。我也因为这种问题和很多人交流过,无论是上述说的蛙 (Teafrogsf) 还是其他课程的 HeadTA(包括但不限于 CS100),我在尝试着做的尽量好,也尽可能的欢迎每个人。
有的人会说,哦,那你出题目出的那么难。请问,你说的难表达在哪个地方?算法的设计?还是思路?还是证明?以 24f 期末的 MST 举例,我本意是仿照去年 gk 的新算法设计题,来引导学生去设计一个新的算法,原题目出出来一共 19 分,经过改造后成为了现在的情况,类似的情况还有 24f 期中的分治。因为前两次的成功,让我觉得这类题目是好的,我也讨论过要不要加送分题(原本是有一空:填写 Prim 基于的核心 property 的名字及其内容,但是被删了。),最终被改造成了现在的样子。本身 MST 的相关知识可能不是很被同学重视,认为难度不大,所以出出来也是可能吓了大家一跳。(但是我得说,与其猜哪个是压轴题,哪个是送分题,不如踏踏实实复习,本身涉及的内容都不超出课程范围。况且基本上作业原题改的 SAT 完成率和得分率也不高,这侧面说明了难度的感知是主观的。)
因此我不理解,为什么会有人超时空出警我两年前的文案在下面评论:“算法:还好。” 诸如词汇来阴阳我对 22f 的 CS101 的评价。一方面可能确实是因为 “知识的诅咒”,我第一次学习这些知识是在非常遥远的过去,这导致了我会更快速地接受或者使用一些通用框架,另一方面我的数学水平支持我去有效率地复现一些结论,而这门课确实需要较好的数学功底才能在很多方面学的非常流畅。那些大家都是初次接收的内容(如 reduction 等),我也尽可能在通俗易懂地解释给每一个人,然后通过适当的练习来巩固,所幸的是,这个我学的不是很久,所以我初学的情况被遗忘的不是很多。
最后,给分是老师和教务综合导出的结果,除了某些部分课老师不当人事,其余课助教是没有给分空间的,所以别再鼓吹了。
另外,我也没有什么类似 “辛苦了”“你很棒” 之类的话想说,大家一起过了就行。
(叠甲:我在当助教和给别人心理辅导危机干预的时候说的话的侧重点是不一样的。)
但是实际上我的思考在后来都被证明是多余的,因为没人在意。
(叠甲:我在直到 PA2 查重和 HWGPT 学术不端检测前,都是怀有 “拯救所有人” 的想法的。)
点草几个评论
从身边同学 coding & debugging 的过程来看,CS100 的代码量和问题深度尚不足以让同学们完全掌握 明确问题逻辑 -> 抽象、分解求解过程 -> 使用编程语言进行实现 类似这样一条完整路径。但是对于只是体验到了 C/C++ 中内存管理、指针、OO 等特性的同学来说,让他们直接写出优雅的代码是不现实的。
存不存在一种可能,上述问题一是广泛存在于 SKD 的 CS 与 SI 的大部分课程中,尤其是位于必修 / 方向必修的那些课程里,二是对于这类问题,不将问题归结为前置课程的不完善,反而归结于后来课程的难度。山一直在那里,前人攀的和后人攀的都是同一座山。后文所叙更是逻辑丝毫不通,一方面说想要 shitty code 怎么样怎么样,一方面又要把课程改回 CS100 + 的样子,难道丝毫没有意识到这两者本身就是矛盾的吗?天马行空的思路,但是很可惜不可行,实际放到执行就知道困难在哪里了。至于 OJ 的反馈,23f 我就提出了这个问题,我相信你们也有那个某位学长怒骂半分钟的语音回复。
个人认为更好的考核方式为:
取消 Quiz
课后作业全部改为 PA 的形式
PA 增加次数 & 题目量,增加模板题,减少竞赛风格题目(或为难度较高的题目添加提示,不用讲解额外占用同学时间)
只允许在难题中出现 shitty code
保留期中,取消期末考试,改为 Project
或者
放弃 PA, 作业全部为理论作业
取消期末考试,改为 Project
允许任何 shitty code
……
我支持 Gkxx 的改进方式,并且非常不理解为什么本学期选择与已经完成的改进背道而驰。
upd:不理解,不认可,并且我认为你说的太过理想主义了。你说 OI 的回归让你很不满意,但是你提出的议题是 “去除期末考试”“改为 proj” 或是 “取消 quiz” 这种明显利好于 OIer 的设计让我觉得你才是想要让 OI 回归的那个。“OI 回归” 本身就是一个伪命题,并且从你说的话,我无法理解你想表达的去除 OI 化,或是 OI 的不回归想体现在哪里。一方面,这门课程的 PA 不可能面面俱到,我们选择给出实际应用问题,就注定了要放弃一些模板套路的考察,这门课也不是编程课,不可能像 CS100 那样发个 8 次 PA,算法与数据结构本身就是推理演绎思考居多,纸质作业必定是其中重要的考察部分。你说你觉得这是 OI 的回归,那我想请问,什么样在你眼里不是 OI 的回归?还是你吃着作为 OIer 的红利却要求别人不许?另一方面,经典的考题与思想概念属实不多(稻草人除外),但是我们的原创和复用都不同程度地被不同角度地抨击。大部分原创的题被喷表述不清不知道出题人的思路,复用的题被指责逼着学生去网上抄答案。
你还提到,讲解是额外占用同学时间的,难道添加提示思考不也是增加同学的时间吗?(甚至还加多了同学的思考量,在没有引导的情况下,占用的时间只会更多。)只有有基础,或是有不用引导就能快速解决问题的人才会认为这是浪费时间。这是否是对应了前文所说 “你才是想要让 OI 回归” 的另一个佐证?
我之前也提到,23fPA2 就是我很满意的 PA,难道那次 PA 不也是 OIer 比非 OIer 快吗?其他学院竞赛生不也存在吗?难道他们提前学习还能成为他们的劣势吗?我们和老师也深层次的讨论过实现与设计的平衡问题,达成的一致就是目前现在 PA+hw 的样子,PA 的样子和所谓 project 真的有什么区别吗?难道你上 CA 还要问为什么 CA 有 lab 还有正课作业吗?你真的理解 GKxx 的改进方式是什么吗?我再次重复一下上文的那句话:(因此我也不认为没经历过的人对此事件的评价有什么参考价值。)
最后用 23f 和我搭班的学长的一句话来结尾:“那些学数分挂科喊数分难的,你让他们学高数也是挂科。”(本人无对此话的评价,仅引用,本人尊重任何学高数或数分的同学。)
Update Update:
讲解时间的问题也能被理解成滑坡,绷不住了。一方面不让有区分度,一方面又要说这个不行那个不行,另外,你不是已经提出 “取消 quiz” 这一和 “反对习题课” 议题类似的话了吗?(当然,你要是说这两个议题毫无相似性,那你说得对。)
(叠甲:我对 OIer 没有意见,我自己也是,仅针对又当又立的群体,因此你如果觉得是在喷你,那就是。)
你非要这么理解,声明难度 “不合适” 的任何补救措施都是滑坡,又重新定义了 “OI 化”,认为你指定的 OI 的 “部分题目” 可能具有的部分特点在 PA 上出现的不普遍现象就是 “OI 化”,那存不存在一种可能,是 OI 界给有些内容起了普遍性的应用名称,看上去高大上,这才是 OI 化的本质及其导致的问题?拿你说的话举例子,你说 3.1 是 wqs 二分 + MST,说实话我在回复这条评论时都不知道还存在 wqs 二分,你关于 “OI 化” 的定义是不是过于唯心?反而(一些不求甚解的)OIer 才会用 “cdq 分治”“wqs 二分” 这种让人云里雾里的名字(如同那些说 22f 出了 cdq 的那些人一样)来让别人以为很难然后跟随他们的言论反复复读。(但凡你说是整体二分我都当你不是这种目的了。)
并且你的标题以及开篇说的几句话,很难不理解为你在用新闻学吸引别人观看你表面想去 OI 化实际上满篇都是为 OIer(甚至不是所有 OIer,只有和自己类似的)着想的言论。另外,你从一开始就在说 shitty code 怎么怎么样,但是你把 shitty code 和 OI 划的联系我认为有失偏颇。一方面你说 “很多同学”,一方面你又把它当作 OI code(均源自你的原文),这些所谓的要求是否都是你的臆想?就如同你说助教提醒使用 scanf 而不是 cin 是 “幽默行为” 一样?还有,你又是认为 “我都想让 PA 有模板题了,我的意思肯定不是让同学抄答案啊。”,又是觉得 “例如 PA3 第一题,如果同学能想到把 MST 单独拎出来作为一个函数”,我不是很能理解你对同学水平的认知究竟有多高,不滑坡地说,我认为你认为的同学水平和实际上 CS101 的学生水平相差很大(起码应该差两个档)。你说 project 可以强调把实现解耦,那你有没有考虑过关于学生的一些问题?举个例子,很多同学(不是指责,只是提出这个现象)还习惯于向 OJ 提交来 debug,再其次很多同学根本无法快速适应多文件和长段代码的调试与书写,我小小的怀疑一下这是否可以被认为是对 OIer 的红利。一方面想当然的认为这么这么改就行,另一方面又说现在实际情况就是烂,这种话我也会说我也想过(参见上文 “过渡”),但是很明显这只是理想主义的看法,真实的情况会遇到从上至下的很多阻力,设想的情况往往无法和所有问题匹配,更何况你的这种专门为 OIer 不考虑普通学生的设想。
综上所述和上没述的各种槽点,我很难不怀疑你在以自身 OIer 的经历以及自己的不爽点片面地对 CS101 双标,可能有些痛点确实存在,但是你真的在以大众对这门课的看法思考吗?你都说 “可以看出题目已经尽量向着能多简单就多简单来出,但是已经有作业了,Quiz 没有意义。”,一个普通的 CS101 学生对 quiz 的抗拒是因为得分与难度还有接受与消化新知识的时间,如果你觉得 quiz 对你没有意义,说明你认为不需要消化与吸收这些知识,让我重复一下上文你并未回答的一个问题来作为我的结论:“你吃着作为 OIer 的红利却要求别人不许?”。(可能还有一条:因为你是 OIer 别人不是所以你觉得别人都不能比你得高分?)
(再说下去又要说我滑坡了)
要是你还想继续为你说的话开脱,我建议是不要占用公共资源了,私下解决吧。我相信 gk 看到你写的这些也会气得飞回 skd 来喷你的。
零基础问的问题使得零基础同学被歧视或者嘲笑。部分 TA 秉持着「菜就多练」的信条,认为 CS101 是一场考试,而不是一门课程。令人忍俊不禁。“似乎只能帮到少数人” 的原因就是大家都不敢问。因为菜是原罪,你说对吗?
对吗?和我接触过的学生中,他们有高分的也有低分的,如果你想把自己的问题往他人身上找借口,我希望你换个不那么蹩脚的理由。自己不敢去做去攻击那些敢去做的人,真的不是串子吗?
(才发现是 23f 的,那我不好说。)
好喜欢周宇轩助教,每节助教课都有小剧场看,最近一次课更是别出心裁,课上一半被另一个助教锁在了教室里,还是向隔壁班助教求救才开的门呜呜呜
?(不可发送单个标点符号)