第二阶段课程(S2)已发布, 请阅读 对 S2 课程的说明。
这个仓库(repo)里保存的是教材,也就是需要你阅读和学习的内容。我们另外还有个 repo 是你的学习用书,我们会在下面告诉你如何使用这两个仓库。
编程(programming)并不算是一门科学,更像是一种手艺,里面有科学,有理论有**,也有经验和体会。学习编程最有效的方法是——赶紧动手开始写程序,如果不自己动手,听再多、再牛的课程讲解也没用。
在动手写程序的前提下,优秀的课程才能发挥作用——那就是缩短你走弯路的时间,就好像学踢足球或者打高尔夫球,一开始就掌握正确的姿势很重要,之后就能够事半功倍。
这门课程就能够发挥这样的作用——但必须你亲手开始编程。
为了帮助你做到这一点,我们设计了一个学习方案,你的每个学习单元都由 听课、自学 和 提问 三个环节组成。
这部分以讲解原理和思维方法为主,重点在“学会学习的方法(learning to learn)”和“问题解决的方法(problem solving)”。
课程的讲解大致上每周一次,在课程讲解的最后会给大家布置自学任务,就是下面这个环节。
你要通过我们提供的教材和学习用书完成 自学任务。方法很简单:
- 使用下面的课程大纲打开指定章节进行阅读;
- 一边读一边在 学习用书 中完成代码的编写和运行。
我们的教材和学习用书都是用一种叫做 Jupyter Notebook 的格式编写的,这种格式编写的 notebook 中除了文字,还有可运行的程序代码(!)。
学习用书和教材的区别只有一个:在学习用书中,所有写着程序代码的格子(cell)都被清空了,等着你自己动手填进去。
所以学习用书就好像我们小时候学写字时用的“描红本”,你可以对着教材“描”和“抄”。不要小看了这个“描”和“抄”的过程,无数实践证明,自己输入一遍和光看就是不一样;而且,程序和描字不同,很多时候你可以自己修改一些地方,改的越多你就掌握的越多。
为了使用 学习用书,你首先需要配置好一个(你可以用一辈子的)编程环境,然后从我们的共享代码仓库获取学习用书并运行,具体来说按照下面的两个指引操作即可:
自学过程中遇到问题是正常的,所以下面这个环节很重要。
我们鼓励大家提问,在学习过程中遇到问题就及时提出来,及时解决。
万事开头难,一开始快速清障前进,后面就会越来越顺。
可以使用 GitHub 提供的 Issues 功能来提问,只要访问 这个页面,点击右上的 New issue
绿色按钮即可提出问题,记得选择 question
这个 label(如果提的是关于课程教材中的错误或者改进建议可以选择 bug
或者 enhancement
这样的 label)。
提问是有一些技巧的,经过思考的问题更容易得到靠谱答案。
关于这个问题,有个近乎标准的答案在网上已经存在很久了,那就是大牛 Eric S. Raymond 2001 年发表在 BBS 上的 How To Ask Questions The Smart Way,这篇文章从发表之后一直在不断更新修订,内容清晰详实,附有丰富的“好问题”和“蠢问题”样例,一看就明白;另有质量很不错的 中文译文(也是开源的)。请务必仔细阅读,尽量按照里面的建议来思考和组织你的问题。
- 第一章 理解编程语言
- 第二章 程序的基本结构(一):值与变量
- 第三章 程序的基本结构(二):操作符与函数
- 第四章 程序的基本结构(三):逻辑判断与分支
- 第五章 程序的基本结构(四):循环
- 第六章 程序的基本结构(五):异常处理
- 第七章 理解对象与类:起源篇
- 第八章 理解对象与类:概念篇
- 第九章 理解对象与类:Python 篇
- 第十章 字符与字符串
- 最十一章 课程练习
- 第一章 函数定义再探
- 第二章 程序中的文档
- 第三章 模块
- 第四章 递归
- 第五章 函数也是数据:初级篇
- 第六章 字符串数据
- 第七章 Iterable 与 Iterator
- 第八章 列表
- 第九章 元组,集合,字典
- 第十章 树
- 第十一章 有限状态机
- 第十二章 数据和数据库
- 第十三章 函数也是数据:进阶篇
由于 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 页面:
点击右上的 New issue
绿色按钮来提出问题或者反馈,如果是问题请选择 question
这个 label,如果是关于教材中的错误或者改进建议可以选择 bug
或者 enhancement
这样的 label。
遇到问题的时候其实也可以到这个 Issues 页面去搜索一下,看看是不是有人提过,得到了怎样的答案;如果没人提过,那就正好可以由你来提出,所有人都会从中获益。
有些常见或者特别有价值的问题我们会整理出来放到课程项目的 Wiki 中,方便大家查阅。