第一门课程是Berkeley的基于Python语言的SICP(计算机程序构造与解释)。该课程是Berkeley大一新生的第一门计算机课程,CS61A介绍了编程和计算机科学,重点是抽象技术作为管理程序复杂性的手段。
技术包括
- 过程抽象;
- 使用递归、高阶函数、生成器和流控制抽象;
- 使用接口、对象、类和泛型操作符进行数据抽象;
- 使用解释器和宏进行语言抽象。
- 提供编程范例,包括函数式、面向对象和声明式方法。
第一周:
- 课程介绍
- 学习Python的变量和函数
第二周:
- 学习Python的分支语句和while loop
- 学习高阶函数,基于函数的编程
第三周:
- 高阶函数,lambda表达式
- 抽象函数
第四周:
- 学习递归
- 学习高级递归Tree Recursion
第五周:
- 学习序列
- 学习容器
- 学习抽象数据
第六周:
- 学习数据结构-树
- 学习数据结构的可变性
- 学习迭代器
第七周:
- 学习生成器
- 学习类-对象
- 学习类-属性
第八周:
- 学习继承
- 学习面向对象-字符串表示
- 学习面向对象编程
第九周:
- 链表
第十周:
- Tree的递归
第十一周:
- 学习Scheme编程语言的函数和运算,Scheme这门语言比较像racket语言(这门语言在芝加哥大学,滑铁卢大学等大学会学习)
- 学习Scheme的list,链表,map,filter等方法
- 学习程序的编译原理
第十二周:
- 学习Scheme的lambda
- 学习尾递归
- Python的模块和包
第十三周:
- 学习Scheme的pair
- 学习Scheme的面向对象编程,二叉树
- 学习Scheme的evel,apply
- 学习Scheme的宏
第十四周:
- 学习正则表达式
- 学习SQL语句
第十五周:
- 学习web程序的原理
- 学习更复杂的树的问题
第十六、十七周:
- 假期,期末考试
# hw03
def count_coins(total)
def move_stack(n, start, end)
def make_anonymous_factorial()
# lab03
def div_by_primes_under(n)