MIT 6.00 Introduction to Computer Science and Programming learning notes
Lec 4
主要讲的是这两个部分
Decomposition:分解
Abstraction:抽象
因为在面对写10万行和100万行以上代码的时候,会有很多困扰,应用这两个部分可以很好的解决问题
而定义functions以及modules,可以隐藏计算的细节,在使用的时候不需要看细节,只要知道输入什么参数即可,课程利用解数学题的方法来讲解,是算农场里有鸡和猪,一共有20个头,56只腿,解有多少只鸡和多少头猪
一般我们可以采用二元一次方程组进行解,用代码解可以把所有的可能性都列出来
课程里提到
元组和列表很像,但有时会出错,会再Lec5详细讲解
最后提到这两种思维方式,把不同问题进行分解到同一问题等的方法
recursion,递归
iteration,迭代
要养成思考问题的思维习惯
Lec 5
介绍了浮点计算的相关内容
以及要学会对计算机的结果进行质疑
Lec 6
二分法和牛顿法开根号的计算逻辑
代码的规范要一致,方便后续修改
Lec7
讲述了列表的赋值概念,a=1,a=b,a=2
结果是b=1,a=2,需要理解内部的概念不然会有疑惑
字典类型是没有顺序的,需要用到hashins
伪代码(Pseudocode)是一个很重要的方式,在写代码前需要先思考各种模块,不同步骤需要怎么进行,以及数值怎么传达,然后再开始写
出了问题后要先对Pseudocode进行调整再对代码修改
对于函数上,是将函数分为一个模块和执行的部分,这样就不用去管内部的运行细节,只要输入相关的参数。
强调了效率,现在电脑运行速度很快,为什么还需要对效率进行强调,因为有趣的问题增长速度快于电脑速度的增长。而效率是可以归纳为选择一个对应处理的算法
1、时间上,取决于运行的编程语言,算法,大小,什么机器,python版本,
效率是需要用于时间和空间进行衡量的
1、空间:计算真正需要用到多少内存
2、时间:what is the number of the basic steps needed as a function of the input size,
这个消除了在任何机器上运行的问题。
input size取决于解决什么问题
basic steps,基础运算,比较等
需要计算的步骤有三种情况
best case min 最好的情况
worst case max 最坏的情况
expected case avg 计算预期的情况
一般情况考虑的是worst case
1、这个意味没有惊喜,运行的时间有上限
2、最坏的情况往往是发生的情况
Lec 8
这节主要讲效率
设计一个优秀的算法,选择不同的方式,运行的时间不一样。
如果运行的慢,估计在有生之年都看不到最终的结果
以及需要将如何将简单的问题再划分为几个更简单的问题
时间有限,有趣的问题集却不断的增加,效率很重要
Lec 9
这一节主要讲算法,怎么用算法,以及怎么选择算法,思考算法背后的逻辑
要思考如何改进算法
提到一个循环不变量,指的是每次通过循环时,都适用该结构的属性
Lec 10
主要是算法的结构设计逻辑
1、需要多少个模块分开,最小基本可以到多少
2、问题的基本情况
3、能不能很简单的方式组合起来
另外提到Python会给出异常的反馈
异常分两种,1、未处理的异常。2、已处理的异常
设计代码的时候要进行分块设计,就可以清楚知道异常出现的地方
