CS61A 课程介绍与学习建议#
CS61A 是一门入门级程序设计课程。与许多侧重语法和代码编写的程序设计课相比,它更关注程序为什么会这样运行,而不只是如何写出程序。课程非常重视函数抽象、递归、作用域和程序求值过程等内容,因此整体难度并不低。
主要内容#
课程前半部分使用 Python 讲解程序设计,涉及高阶函数、递归、数据抽象、面向对象、迭代器和生成器等内容。学习这些内容可以帮助我们熟悉程序设计,并对程序结构和运行过程形成更清晰的认识。
后半部分会学习并使用 Scheme 和 SQL。课程还会引导学习者使用 Python 实现一个 Scheme 解释器,这是整门课程极具吸引力的部分。无论是前半部分的程序设计内容,还是后半部分的 Scheme 和 SQL,对初学者来说都有一定的学习门槛。
学习方式#
学习时可以选择观看课程视频,也可以阅读课程教材。如果教材比较难理解,老师的视频讲解通常会更加直观,各部分内容也讲得很清晰。
课程练习主要包括以下几类:
- Lab:用于熟悉课堂中讲解的知识点。
- Homework:帮助进一步理解和运用课程内容。
- Project:在给定的项目框架中完成特定部分,综合性更强。
- Discussion:可以用于梳理思路和加深对知识点的理解。
这些练习是课程的精华,应该重点完成。
学习建议#
Project 通常会提供基本框架,并引导学习者实现其中的特定部分。不过,一些题目的描述比较长,要求也较为抽象。遇到这种情况时,需要反复阅读题目、代码框架和测试用例,才能真正理解需要完成的内容。
学习过程中不必只关注代码是否通过测试,还应该尝试理解程序的求值过程、抽象方式和不同实现之间的联系。这样才能充分体会这门课程的价值。
总结#
总体来说,CS61A 是一门非常好的程序设计入门课程。完成课程后,可以对程序的组织方式和运行过程形成更加系统的理解,也能为后续学习计算机科学相关内容打下良好基础。