Dianfu Zhou bio photo

You are unique.

Email

Github

Zhihu

RedNote

Bilibili

计算机学习指北

[!NOTE] 本帖为个人经验,非面面俱到,请酌情参考!

前言: 在大学生活中获得了很多他人的帮助,所以很早以前就想写写自己的这一路,分享出去,对他人有帮助的话那就很棒了。索性就在保研结束后,总结这平淡却艰辛的一路。至于网络上已经有很多大神的帖子,为什么我还要写的这个问题?我想的是,第一,大神的帖子大多适用于同为大神的人,我想写写一个普通的大学CSer。第二,不管有没有人看我都要写,这是我曾经定好了的。如果你有兴趣并且也有时间的话,不妨继续往下看!


首先推荐一份计算机指南:https://csdiy.wiki/
推荐北大同学的整理入门书籍:https://github.com/ZangXuanyi/getting-started-handout

本人情况

​ 高考结束后,发挥的不太好,最后在我姐的推荐下误打误撞选择了某211的计算机大类中的信息安全专业,当时的理由是计算机吃香,信息安全可以去政府部门或者厂里上班都行。现在来看专业选择,我仍是不后悔的,虽然目前计算机专业已经饱和,但是在我学计算机专业的路上我学到了很多,思维方式和解决问题是最受益的。关于对计算机的认识?那时候我只会电脑的开关机,仅此而已。

​ 一切从电脑最基本的使用开始,从大一的c语言开始。其实大部分人刚开始都大差不差,只有小部分人是因为信息竞赛提前接触过,所以不必妄自菲薄,完全来得及。对于什么人适合学习计算机这个问题,其实我也不能一概而论。会考试会学习应试的人(我的大部分人格?)这种肯定是能过的,并且也应该也学得不错,但是实践能力往往不太强,也就是整体的思维以及coding能力。我最推荐’爱折腾的人‘学习计算机,没错就是喜欢折腾,我相信一定能学得很棒,即使纸面成绩可能一般,但ta对计算机的理解一定是最棒的。

​ 记得大二时候数据结构老师说过,往往成绩好的学生反而不会从事计算机相关行业,会做例如公务员等。其实我觉得是有一定理解的,就正如上述的这种会考试的学生而言。因为对于这类学生而言,其实不管学什么,ta都不会太差,所以能够转变自己从事其他行业。对写代码有passion,后者说当完成一个项目或bug后很开心,就像高中数学解了一道很难的题很有成就感一样,只是现在的解决方法更偏向实践动手,而不是光用脑子。

​ 除了大一时候的高数课我是全程跟着老师走的,大学其余的课我都是看网课自学。想取得一份不错的成绩,对于大学大部分课程都是有迹可循的,因为大部分课程几乎一成不变,只要知道去年试卷和考试重点,期末突击大都能不错结果。我不是推荐大家都不跟着老师学,大学也有很多不错的老师,找到自己的节奏最好。还有即使很多课没有听懂,你都能通过互联网学到,只要愿意花心力。所以我是一个零基础且跌跌撞撞地学习计算机,并且大多都没有良好的规划,我相信大家提早规划,能学得更好。

​ 现在的我,还是很底层,跟优秀的人相比,相形见绌。写到这里,不想往下写了,因为我觉得我不是高手,写这个会有人看吗?就算有人看很可能也是喷这种水平还来写什么。高考时候梦校是NJU,其实我知道我考不上,高三那一年只有一次模拟成绩能够得着,但我还是很喜欢。现在保研也没去成NJU,其实差一点了,遗憾也还是有。失之毫厘,差之千里。其实现在的我早走出来了,只是曾经那个少年意气的自己太想要证明自己了。如果有看到这里的朋友高考失意,祝你能圆满遗憾。

课程学习

如下是我学过的大部分信息安全专业课程的网课,但有一些资源已经忘记或找不到。

有些课程没有完美的视频学习推荐,将就看最合适的!

备注:F 表示忘记具体资源,推荐其他替代。 表格中的课程点击都有链接,只是未显示。

课程名 课程链接 备注
高等数学I(1) 兆筱小分队 nice!
高等数学I(2) 兆筱小分队 nice!
程序设计(一) 翁恺教你C语言 nice!
程序设计(二) The Cherno F
线性代数 3Blue1Brown nice!
大学物理Ⅲ 东北大学-马文蔚 good!
数据结构 Harsha Suryanarayana and青岛大学-王卓 nice!
离散数学Ⅱ 温柔老师 nice!但不完整
计算机组成原理 B姐 nice
算法设计与分析 2024南京大学 good!
概率论与数理统计Ⅱ 翔翔的学习频道 nice!
计算机网络 湖科大教书匠 and B姐 nice!
信息论与编码理论 斐多课堂 and 主要知识点梳理 good!
密码学 可厉害的土豆 nice!
编译原理Ⅱ 致爱意 nice!
数据库原理 没睡醒冬 nice!
操作系统 B姐 nice!

实验推荐:

课程名 实验名
计算机缺失的一课 missing-semester
计算机系统概论 csapp
计算机网络 cs144
操作系统 mit6.828

每个人的习惯和品味不同,没有最好的课程,只有最适合自己的课程。还有很多的课程忘记看的课程,以及一些是没有合适的线上课程,所以我无法推荐,只能啃书自学。当然还有很多好的课程和实验我没有列举出来,比如jyy老师的os课等等。

实践动手

我很难命名这个小节标题,关于的是大学从零基础开始推荐动手的过程,加强动手能力,学习一些必要技能。网上已经有很多教程,而如果让我回到大一,我会这样推荐自己学:

  • 1.科学上网,会正确Google提问搜索。科学上网,而该如何搜索,如何正确提问等等,我推荐提问的智慧
  • 2.通过missing- semester学会基本命令行的使用。学会基本使用git、vim、linux基本命令。
  • 3.学会跟着教程动手配置vscode中c/c++的环境,简单GDB调试。大一学习c语言,网上搜索教程一步步配置。
  • 4.基本了解GitHub、Kaggle、Huggingface等,是什么平台 有什么用 以及怎么简单使用。
  • 5.学会用笔记软件管理做笔记或者写blog。笔记比如notion、obsidian或者typora都OK。
  • 6.基本使用make或者cmake。当做类似图书管理系统大作业时候,学会用make或cmake管理编译运行。
  • 7.学习数据结构和算法时候跟着刷leetcode,跟着代码随想录刷,csp考考多刷分。
  • 8.作为队长参加大创或者比赛项目,做一个前后端结合的项目,收获管理和协调经验。
  • 9.学会基本latex编写文档,用于作品报告等等,在线推荐overleaf。
  • 10.使用conda等管理python环境,克隆下的项目可以自己动手配置环境。
  • 11.zotero阅读文献论文,学会快速阅读英文论文、且适合自己的工作流。

上述是我暂时想到的,对我自己比较有用的基础技能。后续有补充再更新。

科研竞赛

笔者没什么科研竞赛,所以这部分介绍不多。

科研

​ 大二的寒假可以发邮件联系老师做大创或者项目了,开开组会看看论文,这里建议找能力强的年轻老师。如果自己投入的多,并且运气也不错,最终有论文产出那是相当nice!当然如果像我啥也没有,大创草草结题也okay。学会了提前对研究生去魅了,研究生并不是什么高大尚的!现在并且对组会十分厌恶哈哈哈。

​ 这里推荐一个从零自己学LLM的基本路线:

竞赛

​ 关于竞赛,个人觉得含金量最高的就是ACM和打CTF,这个需要现场动手实践,而其余大部分比赛则是PPT水赛。在大一时候就可以花两三周时间了解和感受一下这两个竞赛,不一定真参加,可以看看自己感兴趣不,排斥不排斥。不要一上来就先入为主觉得自己不适合编程,先尝试过再下定结论。另外也要参加“水赛”,比如软件杯、计算机设计大赛等等之类的作品赛,拿两个奖就差不多,对于以后的简历和综测保研等等也很不错。

大学经验

我不太喜欢给别人建议,也不喜欢别人指着我说我应该干嘛,每个人的视角不一样,都有不同的局限性。但我还是分享一下我自己大学三年对自己最有价值的三条经验(仅供参考):

  • 1.提前规划自己。这里的规划可以包括以后想做什么,以及想成为什么样的人。对于想做什么,可以是努力进大厂,可以是当计算机老师,可以是考研,可以是考公进体制等。至于想成为什么样的人,想发展什么样兴趣爱好,比如一个更强壮的身体,更流利的讲话,会唱歌弹吉他等等。我列举不了太多,因为实在是太多方面了。这里思考得具体一点更好,比如找工作目标就是腾讯什么什么岗或者哪个学校当老师,可以规划的稍微细一点,但也别太细了,只要大方向一致朝目标移动就好,用笔写在纸上。可以花一周时间想,花一个月时间想,甚至一年时间想,只要最后知道自己想要什么就好。这个我觉得比高数考98分重要多了!
  • 2.联系上一届学长学姐,模仿是学得最快和最简单的方式。认识上一届的直系学长学姐,他们提前一年经历了你要经历的。跟学长学姐处好关系,问问学长学姐这个课有什么注意事项考什么,这个事怎么样,保研该怎么办等等。当然这样显得很功利,所以我觉得能和几个学长学姐处成好朋友就最好了,而不会显得很冒昧。并且要对学长学姐感谢,不要认为是理所当然的,他们也可以选择不回复。请吃吃饭,喝喝奶茶,发个小红包,时常保持联系,开开心心的!总之学长学姐就是你最大的经验。
  • 3.是否太功利和卷?这里使用问句,是因为我不能说谁好谁坏,不是非黑即白的。关于卷和功利,我周围有同学,像贪心算法一样,每一步都要走当前最优解。一门课想高绩点,退了本专业固定老师的课,选其他专业的老师,因为给分更高。太过功利容易表现得太明显,让人难以相处,我觉得顺其自然就好。就像走弯路和走捷径,我觉得两者都要走,分情况选择。走弯路可以增加更多经历,走捷径可以耗时更短。最坏的结果就是走弯路,但后面回想起来有时候最大的捷径就是走弯路。醒悟暂时的失利也许是为了以后走向更好的全局最优,如果每一步都走当前最优,反而可能陷入局部最优。

总结

​ 上述为我个人总结,但我也没有起到”授人以鱼,不如授人以渔“。我只是将信息收集展示出来,减少信息的密度和寻找所耗费的时间,减少信息的不确定性。理论上,拥有一台电脑,你能学到你所有想学的知识和技能。

​ 我的看法和建议都是基于我自身的经历,而每个人的环境不同,不是所有人都适合。学习的路上,这里引用翁凯老师的一句话,“学计算机一定要有一个非常强大的心理状态,计算机的所有东西都是人做出来的,别人能想出来的,我也一定能想得出来。在计算机里头,没有任何黑魔法。所有的东西,只不过是我现在不知道而已。总有一天,我会把所有的细节,所有的内部的东西,全都搞明白的。“

​ 大学并不是只有学习,还有身体健康、开心快乐,还有好多不同的生活方式。不要被困住。

​ 最后感谢你能看到最后,祝好!


自我评价