LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

品鉴一下在线课程#1:MIT Missing Semester【更新中】

cover

本文是对MIT Missing Semester点评而非笔记。课程笔记建议直接参考官方给出的讲义及其中文版,笔者自己整理的笔记不会超出官方讲义的知识点范围。

课程介绍参见CS自学指南,视频参见B站搬运或者B站字幕组

本系列前言

随着某CS自学指南的流行,大家很容易了解计算机学科的各种分支领域,以及该领域较为优秀的课程,笔者仍在初学阶段,是这些指南的使用者、受益者,对这些课程的理解不可能超过这些指南本身。但这些资料对学习体验和学习效果的介绍比较宽泛,而且全部刷完显然是不适合UCAS寄系壬的学习状态的。我希望从更细节的角度对CS自学指南等资料做一点补充,同时督促自己刷完自己想看的课,自己挖的坑自己填完(

老实说我也不太希望我的卷王同学们看到我写的博客(不然就被卷死力),但是我寄吧谁啊,谁TM稀罕我这博客啊🤣我写的文章都没人赞的,谁是小丑不用我多说了吧🤣👉

总之这只能作为一个参考,如果你希望现学现用而不知道该看哪个章节,我希望这篇文章可以帮到你。你甚至可以把它看成作为一个吐槽节目,大家把我当小丑看就行🤡

为什么要学

每一个翻开csdiy.wiki的人都会看到MIT出品的The Missing Semester of Your CS Education课程,这门课是否推荐,不用我多说了。我在大一下暑假就开始看起来了,但由于课程中第2讲的信息量和主讲老师的口音对我的冲击实在太大,我只挑了一些自己感兴趣的章节刷完了(分别是第1、2、3、6讲)。同时我平时没有太多的锻炼机会,平时用git也只会用到那几个最基本的命令而不会分支,因此我认为这是远远不够的。

最近在导师的安利下开始着手某项目的学习(是什么项目我不说),用了一节课告诉你为什么要学Linux,还用了一整个实验要求你熟悉Linux下的各种工具,从命令行、vim到gdb全都要学,而我对这些都非常不熟悉。

那怎么办?学!学tama的!

此外,得益于笔记软件的发展,我逐渐找到了在电脑端记笔记的乐趣。之前我只会用Typora或者VSCode写Markdown。虽然我可以在电脑端记笔记的时候形成一个顺手的的工作流,但原教旨主义的Markdown功能比较有限,写出来的笔记在美观性和知识点间联系性等方面都非常拉胯。因此我强烈安利支持双向链接功能的笔记软件,比如Obsidian和Logseq,这个寒假稍微学了一点,真的很大程度上提高了我的笔记效率和使用率,让我的笔记更好查找、更有层次关系,写完了可以被真正利用起来而不是吃灰,甚至可以说让我逐渐爱上了记笔记。

课程内容

视频总长度10小时,但是如果想配置一下这些原始的工具并且真正把需要讲的内容用熟练是需要时间的,这个时间上不封顶。因此我看这个课的速度非常慢(也可能是因为现在是寒假吧😢)

主讲老师有三位:Anish、Jon和Jose。

警告

据字幕组反映,Jose是西班牙人,口音非常严重,严重影响了课程观感。Jose出现在了第2讲、第5讲、第7讲和第10讲,建议做好提前预警,建议选择汉化组提供的中文字幕版本,或者自己看讲义。

剩下两位老师的英语都很标准,讲课也很棒,没有雷。

第1讲 课程概览与Shell

豆瓣评分9.0

神中神,非常适合入门,除了需要适应英文课程的快节奏。

本节课主要介绍了Shell中的常用命令行工具,基于最基本的bash介绍最最基础的命令行知识。主要讲了cdlsrm这些最最常用的命令、输入输出流重定向和管道,此外也介绍了root权限的获取方式和sudo的含义,补充了pwd、绝对路径和相对路径等概念。同时课堂的操作演示性很强,不建议只看文档

如果你是第一次接触英文的课程视频,那你很可能手忙脚乱不知所措。视频节奏事实上非常快,我看过一遍的都觉得快,如果你觉得快那大概率不是我的问题。但是如果手忙脚乱不知道如何应对的话,这大概是学习的工作流问题,慢慢适应一段时间,就能找到适合自己的打开方式了。我想说的是,不要放弃,这集视频的门槛真的很低了,作为shell的入门真的很合适了。不相信的同学请自己去看著名教程The Art of Command Line,说是需要一定基础才能看懂,但你这基础也太高了吧,我都没看懂过_(:з」∠)_总之完全不推荐给初学者。

第2讲 Shell工具和脚本

西班牙口音警告!非战斗人员请立即撤离!

豆瓣评分6.9

本身知识点非常散,而且助教的口音实在太难顶了,感觉不如直接看讲义。

本节课前半部分介绍了在Shell中写脚本以实现复杂控制流的方式,包括传参方式、$0等特殊变量的含义、Error Code等;后半部分的知识点就非常散了,比如通配符、查看帮助的方式、find工具和grep工具及其替代品、Shell中的历史记录查找方式等。

由于后半部分的知识点多而且杂,很多地方都是一笔带过,给我的感觉就是只告诉你了有这么个东西,但看完了视频,你大概率还是不知道怎么用。其实这也是一个两难的问题,比如findgrep这些命令在传递参数时本来就很复杂,很多时候需要大家自己RTFM。但是这段内容给我的感觉是,我最基本的用法都没掌握,在上一章中这是很容易做到的。

因此感觉你仍然需要自学,需要自己RTFM。由于讲义很详细而且课堂的演示对你理解这些内容帮助不大,我建议你直接看讲义。

此外网上有很多相关的资源,比如写Shell脚本的教程

第3讲 编辑器(Vim)

豆瓣评分9.5

非常适合Vim的入门,当然不想学Vim的同学可以略过。

由于某项目的教程里直接让我用学Vim,实在没办法,就试图入坑一下Vim吧。这集视频介绍了Vim背后的设计理念、各种模式的含义和跳转方式、各类快捷键命令的功能以及在编辑文本时的应用等。

这节在半年前不懂地看过一遍,事后也只记住了hjkl:q或者:wq这种最基本的操作。这次看还是有不少收获的,至少课上讲过的命令都可以弄懂。

Vim的官方文档看起来挺简陋的,因此我也不知道上课讲的命令是否完全,但是对我来说很够用了,也够我消化好一阵子了。此外实战的演示挺清楚的,至少关掉视频我能回忆起很多内容。当然看视频本身是不够的,下面就需要大家自己配置Vim、反复练习了,这个就靠大家自己了。

第4讲 数据处理

豆瓣评分7.5

这讲的实用性我表示一定的怀疑。这讲内容非常之多,尤其是涉及了一大堆编程性质较强的工具。很多工具同样是点到为止,或者是只给了一些复杂的样例,我是没心思看。

上节课末尾提到过第4讲和第6讲换了,感觉这就很没道理。这讲的内容是数据处理,感觉已经是相对小众的需求了。而第6讲是Git,Git的重要性不用我多说了吧(

这节课介绍了各种和数据处理相关的工具,比如grepsedsort等。个人感觉这节最重要的内容是正则表达式,但是似乎讲的不是很系统。推荐一下这个教程以及一个在线解释正则表达式的网站,至少我就是靠这两份资料入门的。由于在iGEM讲课时需要讲一遍正则表达式,而为了备课我自己再学了一遍,故正则表达式部分我也没仔细听。

最后是教学案例的问题。本节课使用了sshjournalctl命令,但是试了一下在我的Windows和WSL终端上都不管用。因此数据整理需要用到的数据源似乎比较难找(像极了在打美赛的你),不过似乎可以看一下课后练习中的数据。

showimg