跳到主要内容

建立领域 Overview

当你在心态上有所认识、方法与工具上有所准备,意味着你的 CS 学习之路也走向稳步起航,可以不用太着急切入某个领域,打好一个基础再出发。就如一个人来到一座新的城市,首先先找个地方落住脚,解决了最基本的生存问题,有了一个生活节奏,才有机会再去探索其中各个角落,攀上一座又一座的山峰。

在落脚的阶段,除了开发环境和工具的准备,对领域建立 Overview,也是学习中重要的一环。前文 面向入门的开发环境打造 所提到,前人已经挖好了许多好走的山路,要怎么走,需要对这座山的构成有一个大体的把握,进一步再界定合适的目标、规划等,有一些方向感和行动计划。

导论类课程

对于 Overview 的建立,CS 相关的导论课程可以帮到我们很多,这个过程也类似于坐上城市观光巴士,在计算机的各个领域先走马观花一下,大致有一个基本印象。从最基本的香农信息论、二进制思维出发,到基本的编程、数据结构、算法再到更具体的应用开发领域有个基础的认识。

这里的课程不限于课内还是课外还是 B站博主的视频等,可以结合自己的实际情况去选择合适的材料。针对这个领域,哈佛大学有一个非常优秀的导论课程,从计算思维到 Web 开发都有一些覆盖,根据 CS50x 2024 的规划,大概会涉及到这些内容:

  1. 计算思维、Scratch 编程语言
  2. C语言、编译、数组、简单的算法、内存和指针的概念
  3. 基础的数据结构
  4. Python 语言、人工智能
  5. Web 开发、数据库和 SQL 语言
  6. 网络安全

0xFFFF 此前有做过一些尝试,尝试就 CS50 出发去拉起一些线上讨论,虽然当时更多还是站长为主的单口相声,还是期待未来有更多有时间有动力的朋友尝试发起与组织类似的活动。

  1. 2021.6.26 - 2021.9.4 哈佛 CS50 课程共同学习计划
  2. 2022.5.28 - 2022.9.12 CS50 Summer 2022 Study Program

除了 CS50 外,根据 0xFFFF 坛友的测评Crash Course Computer Science 也是不错的选择。

工具的进阶

工具使用的学习,同样也是入门阶段一个很重要的话题,配置一个开发环境仅仅只是一个开始。工具属于各个领域思想、方法的现实落地,我们在熟悉工具的过程,也同时在熟悉对应领域的一系列的设计思想,但我们过往的计算机教学中并没有太多涉足这一领域。

麻省理工的 Missing Semester 系列讲座 也关注到了这方面的缺失,比较建议从这门课程开始。

Missing Semester,顾名思义,“计算机学习中消失的一个学期”,一门介绍在大学的课堂不常见,但又是各种生产力工具的系列讲座课程,包括终端、命令行、各种 Unix 工具脚本、Vim、Git、Tmux 等等等等。

课程定位:

  1. 对计算机领域中的足够稳定的知识体系建立整体认知
  2. 熟练使用领域通行工具,练成足以防身的功夫

它主要涉及到这些方面的内容:

  1. 环境适应:CLI、终端、Shell
  2. 核心技能:Vim、数据处理、CLI 高级用法、Git 的使用
  3. 进阶话题:代码调试、性能分析、构建、测试、依赖管理、安全与密码学等等

一些坛友的沉淀,以及可以参考的链接:

学习建议

根据我之前的实践,在这个阶段可能需要注意的几点:

  1. 从自身出发,从中慢慢找到学计算机的感觉,尤其是编程的直觉、习惯的培养
  2. 接纳自己不懂的状态,这只是一个 Overview,真正学通还需要带着疑问各个击破
  3. 在学习的过程中,对 Unix 体系下的工具有一个初步认识与掌握即可,许多技巧更多来自于不经意间的发现,而无需一开始就试图穷尽它