# ACM班小透明分享

#### 前言

ACM班是致远学院计算机科学与技术（致远荣誉计划）的俗称，谈到这个班级，身边同学的反应应该是神秘和“全是大佬”。从招生方式来看（2017年），在没有变更为强基计划之前，主要来源为OI比赛现场签约和两轮面试，两轮面试是安排在高考后的，第一批面向上海综合评价、浙江三位一体和全国自主招生，第二批面向全部入学同学。由于有一部分同学在进大学之前已经有了非常好的计算机科学基础，于是在编程算法上，班级的平均初始水平非常高。ACM班截止目前大部分课应该都是班内同学单独上（不参与大平台课程），作业体系也完全独立。因此给人以神秘和“大佬扎堆”的感觉。

然而，平均水平高并不意味着每个人都很强。事实上，像作者这样进入ACM班的时候能力水平只能玩儿新手村的同学是不少的。此外，ACM 班并不意味着强者认证，真正的强者认证是通过自己认证的。

我想通过一个小透明的视角来讲述一下 ACM 班的几年学习生活经历，描述的很多事项都是以我第一视角呈现的，因此内容仅供参考。同时因为我不是 ACM 队成员，所以对于 ACM 队不做描述。

我是 17 级 ACM 班的学生。撰写于大四上学期。

#### 课程

ACM 班的课程体系和传统 CS 不太相同，大一大二有非常多的基础课程。大一上程序设计（5学分）分为A、B班，对应有基础的同学和零基础同学，大一下数据结构（4学分）以及大一暑假PPCA（6周，每周一到周五）组成了编程的基础教学体系。大二的体系结构、操作系统和编译器组成了和系统相关的体系。

* 大一的编程课程体系是对零基础同学快速跟上的重要过程。程序设计和数据结构的机考难度是不确定的（取决于助教），考砸了也不要紧，一般占比都是不大的。日常的大作业小作业是快速学习某些算法和锻炼工程能力的难得机会。自此之后，能磨砺码力的只有编译器了。
* 大二的系统相关课程都是由梁老师上的，整体的压力不会很大。如果没有课后自己的琢磨，你会发现到期末的时候水平差异很夸张。然而这种差异是不会体现在成绩上的，因此不要因为有了不错的成绩而沾沾自喜。
  * 体系结构：当时学习的内容主要是David Patterson的CS252课程，内容是基于CAAQA的，架构是RISC-V。课上不会全部覆盖CAAQA的内容，课后的自学拓展极其重要，不然对体系结构的理解可能仅仅停留在大概结构，而对于具体的实现细节一无所知。
  * 操作系统：内容基于的是Modern Operating System。当时我上这门课的时候，内容距离当时的OS其实有一定的距离，除开课上讲解的内容之外，还有不少东西需要靠自己去覆盖。
  * 编译器：自己写一个编译器。越早开始越占便宜。

值得注意的是，这些基础课程除了课堂教学之外，习题课是极其重要的组成部分。这6门课的大作业里可以感受到浓厚的传承气息。大作业可能都是传承了很久很久，具有班级特色的东西。很值得好好做，而且未来没有机会再修一遍了。写这些作业对于能力的提升是非常巨大的。

除了专业课之外，还有一门唯 ACM 班独有的课程叫学子讲坛。开设于大一大二总共4次。务必珍惜珍惜在珍惜。内容是每个人上去做一个30分钟左右主题演讲，话题不限制。从传统文学到物理学原理背后的故事，从天文地理到理想社会中人的存在意义。自己设定话题自己准备，然后在全班面前演讲。这真的是为数不多能在一群人面前自由交流你想交流的话题的机会了。我自己觉得像我这种不善于表达的社恐怪是一个很好很好的锻炼机会。

大三就只剩下专业课了，这个时候大家都各上各的了，你会发现你的生活就主要是和实验室绑定起来了。而且大家日常的交流也会相对减少一些，脱单的脱单，实验室科研的科研。集体的课程基本上就结束了。

#### 助教

ACM 班有一个任务是要担任至少一次助教。这是个非常有价值的事情，因为除了学子讲坛之外可以锻炼表达能力的就只有当助教了。助教分为两大类，一种是基础课程的助教（如程序设计、数据结构、PPCA），还有一种是专业课的助教（编译器、OS等）。如果恰好遇到巧妙的情况，你就成了别人口中助教的助教。

助教工作可以锻炼很多，最开始我做助教的时候其实压力很大，所以经常腿会发抖，讲话会不由自主加快很多。讲了多了就会发现自己能适应了，甚至在更多的场合也不惧怕演讲了。

助教本身是很有趣的一项工作，但是一定要量力而行。如果某个学期你有很多的ddl，有发paper的计划，有要陪的人，最好还是权衡一下自己的时间再决定。一般来说，课程助教开始比较忙的时间会比较早——有的甚至会在学期开始前就要筹划。此外和自己上课不同的是，做助教要考虑更周全些——不是有人会了就可以了，目标是要让尽可能多的人会。后者才是更难达到的。

#### 嗑盐

大家统一进入实验室是比较晚的，分阶段说说看我的理解。

1. 大一大二上：这个时候最好学好基础课，避免成为实验室打工人。
2. 大二下：会有一些专业课加进来，做好大作业和课程项目，选一个自己感兴趣的方向。最好提前了解某个实验室在做什么，实力如何。
3. 大二暑假：进实验室开始跟着科研，期间多读论文多交流。交流的对象可以是实验室学长也可以是ACM班前辈做过某个方向的，甚至是自己班级的同学。千万不能陷入自闭。

随着进入了实验室以后，差异开始出现了，可能能经常听到同班同学又发了xx顶会或者是获得了什么巨大的成就，此时关键是要做好自己做的东西，不要被影响到。切记不能挂机，在实验室里真的是非进即退的地方，一时挂机可能会让自己花更多的时间恢复状态。

#### ACM 班强者认证？

ACM 班提供了一个很好的平台，但一定不是强者认证。强如迟先生的同学哪怕在自己有ACM班加持的情况下仍然可以吊打自己的水平。很快你就能发现，强者不仅仅在ACM班，到处都是。

#### 最后

ACM班的日常压力很大，因此一定要保持一个良好的心态。享受大学生活本身才是重要的，俞老师曾经说过：“教育就是忘掉知识剩下之后的那些东西。“内卷没有价值，那些除开知识的东西才是更加重要的。

ACM 班压力是不小的。刚刚进入学院的时候有一份抗压测试不是走流程。不必给自己太大压力，更没必要去内卷。俞老师说过：“教育就是忘掉知识剩下之后的那些东西。“那些除开知识的东西才是大学生活最值得回味体验的。好好体验这种生活才是更为重要的。
