TO DO LIST·

  • 字幕和平台选择问题
  • 知乎或其他平台搜索学习经验、安排,自己总结
  • 课程组织结构及针对性的学习方法
  • 开GitHub repo,用以记录自己的Lab和笔记,如果有的话

前言·

看到标题应该就理解了,啧,自己打算采用CS61A的教学课程学习Python。

目的:

  1. 体验国外神课,为以后学习其他课程打个样,上一次看这种大型的课程还是[【计算机科学速成课】40集全/精校] - Crash Course Computer Science_哔哩哔哩_bilibili || 主要源于HDU-CS-WIKI + 北大的CS自学指南双重推荐
  2. 同上,其实Python的学习倒不是最重要,现在Python的入门资料应该是最多、最友好的吧,有很多替代,想借助本课程的学习,提升自己编程功底(?)

总之,自己在学习CS61A时,之前已经不是小白了,尽管还是很菜,呵;更多的是思维的提升、学习方式的转变,类似于看到官网:CS 61A: Structure and Interpretation of Computer Programs ,感觉已经很清晰了

Week Date Lecture Textbook Lab & Discussion Links Homework & Project

但对于这种全英文的授课还是相当的不适应,自己有Python的基础可能也会帮助自己避免把时间浪费在一些不必要的事上;另外课程直译过来可能:计算机程序的结构与解释,只不过以Python为授课语言罢了

之前看博客有个说法:伯克利的计算机专业学生可能编程平均开始年龄在7岁,所以入学的时候可能就已经是10年经验了,本来感觉很离谱,但想了想毕竟是美国名校;国内上海的顶级小学中学(可能甚至也是从小开始接触Arduino、树莓派等硬件)/江苏更是注重,甚至纳入考试,所以倒也没那么离谱(当然自己能接触的计算机教育大多是MS OFFICE之类的,一些计算机操作罢了)

前置TIPS:字幕和平台选择问题·

如果你像我一样也是第一次接触,可以看看:

关于字幕和平台问题:

先说平台,官方的课程估计只有在https://www.youtube.com/@cs61adepartmental39 上有

当然也可以选择B站,但通常会晚些,并且字幕看UP主良心 || 毕竟是学习计算机知识+国外授课方式熟悉的双重目的,最好还是在官网吧,这样能够更好地帮助自己

真的,谁再说对于计算机的学习英语不重要跟谁急,哪些这么说的要么是大牛要么就是初入茅庐的菜鸟(大多数人包括现在的自己,可能四年大学上下来,还只是菜鸡,就是类似于之前百度、CSDN等等的鄙视链,当然有些大众的知识CSDN还行)。

接下来说一下翻译,如果你选择了YouTube,那么通常它是单字幕的(只能选择源语言例如英语,或者翻译成中文),如果你需要中英双字幕,可以考虑使用插件:

YouTube™ 双字幕 - Chrome 应用商店 (google.com)

YouTube™ 双字幕 - 显示双语字幕(包括自动翻译)、字幕下载,以及自定义字幕样式- 小众软件 (appinn.com)

再再说一下,大一搜插件的时候没搜到,现在自己的搜索能力可能提高了(?),也可能是变得熟练了


CS自学指南 (csdiy.wiki)

CS61A、CS61B、CS61C 反复学,学反复 - asandstar - 博客园 (cnblogs.com)

博客园的一个介绍,讲解了课程内容,slides,hw,lab,video等结构

也就是说完成这三门课大部分的工作基本可以胜任至少应付各种intern和coop是不成问题了对于本科生如果一学期上一门CS61系列的课那正好大二有足够的实力去找实习对于学习能力强的人一学年就可以上完这三门课那也就是说大一的暑假就可以联系公司实习了

学习经验__CS61A__完结填坑__总结 - 知乎 (zhihu.com)

下面就让我们开始正式的学习吧!

Week1·

Disc 00: Getting Started

看不看无所谓,TRULY,课程的学分、规则介绍,是针对校内人员的,并没有课程本身介绍

如果想熟悉一下英语,看;反之,直接跳过。

Chapter 1: Building Abstractions with Functions·

1.1 Getting Started·

也就是主页的Textbook的ch 1.1 听说textbook、lab、hw才是真正的精髓,文本阅读肯定是要比视频效率高

A language isn’t something you learn so much as something you join.

告诉你计算机科学、Python的特性、受欢迎度、应用场景、安装(当然十分详细地讲解,只是自己这么总结罢了)

Broadly, computer programs consist of instructions to either

  1. Compute some value
  2. Carry out some action

First Example章节中介绍了Statements & ExpressionsFunctionsObjectsInterpreters的概念,还好有一定的编程基础,但有些还是看不懂,不止是概念介绍

computer = powerful + stupid

针对error的解决方案:Test incrementallyWhat is incremental testing? :增量式测试:3个功能点,一个成功后,再加入下一个测试,直到全部成功 )、Isolate errors(隔离错误,debug至最小代码片段,例如问题锁定到某个函数,甚至某一段循环)、Check your assumptions(检查你的设计,可能一开始你的问题分析就有bug)、Consult others(咨询他人)

可以google搜索真的不错,给出的答案简短有效,有时候要么博客专业,要么知乎有时过于繁琐专业,并且不是我想知道的

软件测试词典 - 介绍 (liushilive.github.io) :有意思

1.2 Elements of Programming·

http://composingprograms.com/pages/12-elements-of-programming.html

其中有相关的video视频,原来是塞在这里了,哭,自己没看

嗐,边看边猜,有些看不懂英文单词也能知道什么意思,有些有道翻译整段之后还是看不懂

Call Expressions调用表达式:https://www.cs.cornell.edu/courses/cs1380/2018sp/textbook/chapters/03/4/call-expressions.html

Importing Library Functions调用库函数(要是没有Python基础绝对一脸懵逼,因为国内的都是讲一下概念,然后实操,最后做出个project就行了)

We can use assignment statements to give new names to existing functions.()

1
2
3
4
5
>>> f = max
>>> f
<built-in function max>
>>> f(2, 3, 4)
4

Evaluating Nested Expressions计算嵌套函数

什么是纯函数 (Pure Function) ? - 简书 (jianshu.com)

如果一个函数是 纯函数 (Pure Function) ,它必须符合两个条件:

  • 返回结果只依赖于它的参数。
  • 并且在执行过程里面没有副作用。

What are non-pure functions in Python? - Stack Overflow

呜,好累,不咋懂

Homework 1: Functions, Control·

https://cs61a.org/hw/hw01/