MIT600SC笔记1&2


总课时38课,2011年春。我想系统的从头学点东西。MIT课程主页

第一课:6.00课程介绍

600是MIT计算机入门课程,旨在帮助没有编程经验的学生进入6系课程,树立编写中小型程序的自信,培养将问题导入计算机框架的能力,帮助学生参加校内研究和找暑期工。

课程主要着眼于如何解决问题而不是记忆。

课程鼓励协作,但是不要单纯的抄袭。

什么是计算(Computation);陈述性(Declarative)知识,Guess & Check; Imperative知识,平方根近似值,G-new=(G-old+X/G-old)/2。
Algorithm(算法)=How to perform a Computation; Converged(暂停指令),Instructions,Flow of control,Termination Condition.

计算器以及过去的计算机都是设计电子线路进行单独目的计算。Fixed program computers(只能做一件事,1941年第一台计算机用于计算弹道轨迹, 图灵机用于破解德国enigma code),Stored program computer(程序和数据从此木有区别,程序可以生产数据=程序,图灵认为只要6个基本指令就可以控制电脑),Interpreter(计算机本身就是数据)

编程语言之间的区别在于Instructions,Flow of control两部分,以及两者的结合。

计算机完全按照你的指令来做。

用Python做教学工具。(Syntax – which sequences of characters and symbols constitute a well-formed string, Static semantics – which well-formed strings have a meaning, Semantics – what the meaning is), 良好的编程语言没有ambiguity。

程序常见错误:Crash(一个点的crash不能损害整个系统,local),Never Stop(Infinite Loop),Run to completion & produce wrong answer.

Interpreted VS Compiled 前者易于人类程序员理解

第二课:程序的核心元素

Python的IDLE(其他程序叫IDE):Text Editor+Shell+Syntax Hignlighting +Debugger

Object:Type(scalar-indivisible不可分割:int整数,浮点float(浮点不是真正的number),Non scalar-bool逻辑,nonetype临时占位数据,str字符(数字有无引号决定类型))

Expression(python当中3/2=1,3.0/2.0=1.5)Overloaded Operators have a meaning that depends upon
type of operands,python里面不同类型不能相加,是个强类型语言,不像PHP,类型转换str(3),int(‘3’),python有时候比较宽松,3.0会改善

Program-script, comment, print command,sequence of commands

Variable is a way to name an object, Assignment binds a name to an object,注释让程序更易读

rawinput-python将用户输入视为字符串

Straight line program-执行起来一行接一行

Conditioal – if else,python的缩进;

programs are read-debug,语法结构和代码布局应该一致

branching programs(与straightline program对比,运行时间由什么决定)

Looping construct–iteration

turing complete图灵完备性compute every function that could ever be computed