0%

20240210 总结

总结大一上做的事。

Missing Semester

介绍常用工具的入门课。视频大部分看了,作业太难了只选做了一些。

熟练运用工具需要在实践中大量训练,这门课的主要意义在于拓展视野,以后遇到问题的时候能迅速学习正确的工具解决问题。“正确”除了实用之外,也有些审美与习惯的考量。比如终端操作,统一管理 dotfile,这些是符合程序员审美与习惯的方式,也更为高效。

浙大有学生开了类似的课,还介绍了 markdown、LaTeX 等,也符合这样的特征。我还不习惯 LaTeX,markdown 倒是挺熟的,用 marp 插件做 ppt 很方便。之前和学生组织说大一下我也想开类似的课,现在觉得纯属发电,毫无可行性且我jb谁啊。

CS61A

今天做完了 CS61A 的最后一个 HW,这篇本来是叫 CS61A 总结的。

这门课断断续续从 11 月做到现在终于结束了,基本上是有空想起来就做几题的状态,中间还有期末前一个月也没怎么碰。这门课质量确实很高,对得起网上的好评;但网上评论所说的这门课带来的震撼我却没有感受到,也没有全神贯注地投入其中,感觉课程内容挺平淡的。

CS61A 涉及了 python、scheme 和 SQL 三种语言,内容书上说主要是关于抽象(abstraction 不是网络用语)。我并不完全理解“抽象”的含义,但我想这涵盖了几个方面:

  • 过程抽象。包括第一章的内容,以及后面的 scheme 函数式编程等。python 足够高级(语言上的),能够很方便地操作函数,一些 lambda 操作和 iterator 等内容很有意思。scheme 有点折磨。
  • 数据抽象。包括第二章的链表与树等。这部分比较平凡。
  • 围绕抽象的设计原则。包括面向对象等,写完 project 后加深了一些理解。
  • 编译。是挺抽象的?

CS61A 的前身是 MIT 的 SICP,所以也可以这样解释,Structure 程序的结构,Interpretation 编译原理,加上作为入门课的 python 语法和 SQL 等内容。

我个人觉得内容平淡则可能是竞赛的影响,一些内容以前见过。思维上确实简单了点,但很多旧思维模式其实是有害的。写了这么多年的 C with STL 并没有什么设计或者架构可言,我也不会写实际中具有一定规模的代码,甚至还有卡常解封装等坏习惯。比起在平地盖楼的神奇,拆除违章建筑是很无聊的过程,不过我相信这样的转变有意义。

名义上是完结撒花了,但也有很多偷懒,中间有些 Lab HW 跳过了,project 中 cat 没做,考试题也没做,当然这些意义并不大;留了一些遗憾,scheme 还不够熟悉,书和早期的几节课没认真看。另外 CS61A 和真正的 SICP 是有区别的,如果有时间我想看看原版课和原著,这就不知要拖到什么时候了。

CS50x

入门通识课,选了几节课看。

全栈当然很有吸引力,但无穷无尽的配环境、读文档、找 API 是折磨人的。还有某国特色 GFW 拦路,一般这时候心态就崩了。

学业

GPA 全寄,令人感叹。但 CS61A 告诉我们:Don’t Compare. 什么自我安慰(

课内没有做什么有意义的事,除了这个建模做的船挺酷的。

计划

勉强算是出新手村了,之后能学的方向有很多。

  • CS61B:java、算法与数据结构
  • CS61C:C、汇编、OS。OS 和计算机组成的资料还挺多的,比如更入门的 Nand2Tetris,或者更难的直接看 CSAPP
  • Python 全栈:很多应用方面的,并不紧急,但 py 到用时方恨少。想写个脚本抢课。
  • AI:机器学习。这年代可以算常识,总要学一点。

……以及其他方向,我也想玩单片机,想了解一点 CTF,想做游戏等等似乎不务正业的事。时间和精力是有限的。