/pilot

进入编程世界的第一课

Primary LanguageJupyter Notebook

进入编程世界的第一课

没有自学能力的人没有未来

前言

这个仓库(repo)里保存的是教材,也就是需要你阅读和学习的内容。我们另外还有个 repo 是你的学习用书,我们会在下面告诉你如何使用这两个仓库。

编程(programming)并不算是一门科学,更像是一种手艺,里面有科学,有理论有**,也有经验和体会。学习编程最有效的方法是——赶紧动手开始写程序,如果不自己动手,听再多、再牛的课程讲解也没用。

在动手写程序的前提下,优秀的课程才能发挥作用——那就是缩短你走弯路的时间,就好像学踢足球或者打高尔夫球,一开始就掌握正确的姿势很重要,之后就能够事半功倍

这门课程就能够发挥这样的作用——但必须你亲手开始编程。

为了帮助你做到这一点,我们设计了一个学习方案,你的每个学习单元都由 听课自学提问 三个环节组成。

听课

这部分以讲解原理和思维方法为主,重点在学习“学习的方法(learn to learn)”和“如何解决问题(problem solving)”。

课程的讲解大致上每周一次,在课程讲解的最后会给大家布置自学任务,就是下面这个环节。

自学

你要通过我们提供的教材和学习用书完成 自学任务。方法很简单:

  • 使用下面的课程大纲打开指定章节进行阅读;
  • 一边读一边在 学习用书 中完成代码的编写和运行。

我们的教材和学习用书都是用一种叫做 Jupyter Notebook 的格式编写的,这种格式编写的 notebook 中除了文字,还有可运行的程序代码(!)。

学习用书和教材的区别只有一个:教材中所有写着程序代码的段落都被清空了,等着你自己动手填进去。

所以学习用书就好像我们小时候学写字时用的“描红本”,你可以对着教材“描”和“抄”。不要小看了这个“描”和“抄”的过程,无数实践证明,自己输入一遍和光看就是不一样;而且,程序和描字不同,很多时候你可以自己修改一些地方,改的越多你就掌握的越多。

为了使用 学习用书,你首先需要配置好一个(你可以用一辈子的)编程环境,然后从我们的共享代码仓库获取学习用书并运行,具体来说按照下面的两个指引操作即可:

  1. 编程环境配置指南
  2. 如何使用配套学习用书

自学过程中遇到问题是正常的,所以下面这个环节很重要。

提问

我们鼓励大家提问,在学习过程中遇到问题就及时提出来,及时解决。

万事开头难,一开始快速清障前进,后面就会越来越顺。

可以使用 GitHub 提供的 Issues 功能来提问,只要访问 这个页面,点击右上的 New 按钮即可提出问题,记得选择 question 这个 label(如果提的是关于课程教材中的错误或者改进建议可以选择 bug 或者 enhancement 这样的 label)。

提问是有一些技巧的,经过思考的问题更容易得到靠谱答案。

关于这个问题,有个近乎标准的答案在网上已经存在很久了,那就是大牛 Eric S. Raymond 2001 年发表在 BBS 上的 How To Ask Questions The Smart Way,这篇文章从发表之后一直在不断更新修订,内容清晰详实,附有丰富的“好问题”和“蠢问题”样例,一看就明白;另有质量很不错的 中文译文(也是开源的)。请务必仔细阅读,尽量按照里面的建议来思考和组织你的问题。

课程大纲

附录

  1. 编程环境配置指南
  2. 如何使用配套学习用书
  3. Git 与 GitHub 入门

重要的附注

由于 GitHub 的某些 bug,点击上面的这些链接打开 notebook 时可能会出现 Sorry, something went wrong. Reload? 的错误,这时可打开下面的链接,改用 Jupyter Notebook 官方提供的阅读器:

https://nbviewer.jupyter.org/github/neolee/pilot/tree/master/

ipynb 后缀的文件就是 notebook 文件,文件名最开始的数字对应第几章(a 对应第十章,b 对应最终章,x 开头的则是附录)。

比较推荐的学习方式是,用一个浏览器窗口打开上面列出的课程内容,同时在你自己机器的学生用书目录下运行 jupyter lab,并在学生用书的对应 notebook 下自己输入代码尝试。

具体可参考这个 视频指引

问题与反馈

如果在学习过程中遇到问题或者发现教材中的错误,可以通过 GitHub 的 Issues 系统提出,这个系统基本上就像一个问答论坛,但它集成了一些功能,让它目的性更强、更容易跟踪问题解决的进度状态。

访问我们课程教材的 Issues 页面:

https://github.com/neolee/pilot/issues

点击右上的 New 按钮来提出问题或者反馈,如果是问题请选择 question 这个 label,如果是关于教材中的错误或者改进建议可以选择 bug 或者 enhancement 这样的 label

遇到问题的时候其实也可以到这个 Issues 页面去搜索一下,看看是不是有人提过,得到了怎样的答案;如果没人提过,那就正好可以由你来提出,所有人都会从中获益。

有些常见或者特别有价值的问题我们会整理出来放到课程项目的 Wiki 中,方便大家查阅。