CS61A: Structure and Interpretation of Computer Programs
Descriptions
- Offered by: UC Berkeley
- Prerequisites: None
- Programming Languages: Python, Scheme, SQL
- Difficulty: 🌟🌟
- Class Hour: 50 hours
This is the first course in the Berkeley CS61 series, and my introductory course to Python.
The CS61 series is composed of introductory courses to the CS major at Berkeley, where
- CS61A: Emphasizes abstraction and equips students to use programs to solve real-world problems without focusing on the underlying hardware details.
- CS61B: Focuses on algorithms and data structures and the construction of large-scale programs, where students combine knowledge of algorithms and data structures with the Java language to build large-scale projects at the thousand-line code level (such as a simple Google Maps, a two-dimensional version of Minecraft).
- CS61C: Focusing on computer architecture, students will understand how high-level languages (e.g. C) are converted step-by-step into machine-understandable bit strings and executed on CPUs. Students will learn about the RISC-V architecture and implement a CPU on their own by using Logism.
CS61B and CS61C are both included in this guidebook.
Going back to CS61A, you will note that this is not just a programming language class, but goes deeper into the principles of program construction and operation. Finally you will implement an interpreter for Scheme in Python in Project 4. In addition, abstraction will be a major theme in this class, as you will learn about functional programming, data abstraction, object orientation, etc. to make your code more readable and modular. Of course, learning a programming language is also a big part of this course. You will master three programming languages, Python, Scheme, and SQL, and in learning and comparing them, you will be equiped with the ability to quickly master a new programming language.
Note: If you have no prior programming experience at all, getting started with CS61A requires a relatively high level of learning ability and self-discipline. To avoid the frustration of a struggling experience, you may choose a more friendly introductory programming course at first. For example, CS10 at Berkeley or CS50 at Harvard are both good choices.
Course Resources
- Course Website: spring2024, fall2023, spring2023, fall2022
- Recordings:
- Textbook: https://www.composingprograms.com/
- Assignments: refer to the course website
Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in PKUFlyingPig/CS61A - GitHub
CS61A: Structure and Interpretation of Computer Programs
Descriptions
- Offered by: UC Berkeley
- Prerequisites: None
- Programming Languages: Python, Scheme, SQL
- Difficulty: 🌟🌟
- Class Hour: 50 hours
This is the first course in the Berkeley CS61 series, and my introductory course to Python.
The CS61 series is composed of introductory courses to the CS major at Berkeley, where
- CS61A: Emphasizes abstraction and equips students to use programs to solve real-world problems without focusing on the underlying hardware details.
- CS61B: Focuses on algorithms and data structures and the construction of large-scale programs, where students combine knowledge of algorithms and data structures with the Java language to build large-scale projects at the thousand-line code level (such as a simple Google Maps, a two-dimensional version of Minecraft).
- CS61C: Focusing on computer architecture, students will understand how high-level languages (e.g. C) are converted step-by-step into machine-understandable bit strings and executed on CPUs. Students will learn about the RISC-V architecture and implement a CPU on their own by using Logism.
CS61B and CS61C are both included in this guidebook.
Going back to CS61A, you will note that this is not just a programming language class, but goes deeper into the principles of program construction and operation. Finally you will implement an interpreter for Scheme in Python in Project 4. In addition, abstraction will be a major theme in this class, as you will learn about functional programming, data abstraction, object orientation, etc. to make your code more readable and modular. Of course, learning a programming language is also a big part of this course. You will master three programming languages, Python, Scheme, and SQL, and in learning and comparing them, you will be equiped with the ability to quickly master a new programming language.
Note: If you have no prior programming experience at all, getting started with CS61A requires a relatively high level of learning ability and self-discipline. To avoid the frustration of a struggling experience, you may choose a more friendly introductory programming course at first. For example, CS10 at Berkeley or CS50 at Harvard are both good choices.
Course Resources
- Course Website: spring2024, fall2023, spring2023, fall2022
- Course Website (backup): spring2022
- Recordings:
- Textbook: https://www.composingprograms.com/
- Assignments: refer to the course website
Personal Resources
All the resources and assignments used by @PKUFlyingPig in this course are maintained in PKUFlyingPig/CS61A - GitHub
CS61A: Structure and Interpretation of Computer Programs
课程简介
- 所属大学:UC Berkeley
- 先修要求:无
- 编程语言:Python, Scheme, SQL
- 课程难度:🌟🌟🌟
- 预计学时:50 小时
伯克利 CS61 系列的第一门课程,也是我的 Python 入门课。
CS61 系列是伯克利 CS 专业的入门课,其中:
- CS61A: 强调抽象,让学生掌握用程序来解决实际问题,而不关注底层的硬件细节。
- CS61B: 注重算法与数据结构以及大规模程序的构建,学生会用 Java 语言结合算法与数据结构的知识来构建千行代码级别的大型项目(一个简易的谷歌地图,一个二维版的 Minecraft)。
- CS61C: 关注计算机体系结构,让学生理解高级语言(例如 C)是如何一步步转换为机器可以理解的 01 串并在 CPU 执行的,学生将会学习 RISC-V 架构并自己用 Logisim 实现一个 CPU。
CS61B 和 CS61C 在本书中均有收录。
回到 CS61A,注意这不仅仅是一门编程语言课,而是会深入到程序构造与运行的原理。最后你将在第 4 个 Project 中用 Python 实现一个 Scheme 的解释器。此外,抽象将是这门课的一大主题,你将学习到函数式编程、数据抽象、面向对象等等知识来让你的代码更易读,更模块化。当然,学习编程语言也是这门课的一大内容,你将会掌握 Python、Scheme 和 SQL 这三种编程语言,在它们的学习和比较中,相信你会拥有快速掌握一门新的编程语言的能力。
注意:如果此前完全没有编程基础,直接上手 CS61A 需要一定的学习能力和自律要求。为避免课程难度过高而导致的信心挫折,可以选择一个更为友好的入门编程课程。例如伯克利的 CS10 或者哈佛大学的 CS50。
课程资源
- 课程网站: spring2024, fall2023, spring2023, fall2022
- 课程网站 (页面备份):fall2022, fall2020
- 课程视频: fall2022, fall2020
- 课程教材: https://www.composingprograms.com/
- 课程教材中文翻译:https://composingprograms.netlify.app/
- 课程作业: 课程网站会有每个作业对应的文档链接以及代码框架的下载链接。
资源汇总
@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/CS61A - GitHub 中。
CS61A: Structure and Interpretation of Computer Programs
课程简介
- 所属大学:UC Berkeley
- 先修要求:无
- 编程语言:Python, Scheme, SQL
- 课程难度:🌟🌟🌟
- 预计学时:50 小时
伯克利 CS61 系列的第一门课程,也是我的 Python 入门课。
CS61 系列是伯克利 CS 专业的入门课,其中:
- CS61A: 强调抽象,让学生掌握用程序来解决实际问题,而不关注底层的硬件细节。
- CS61B: 注重算法与数据结构以及大规模程序的构建,学生会用 Java 语言结合算法与数据结构的知识来构建千行代码级别的大型项目(一个简易的谷歌地图,一个二维版的 Minecraft)。
- CS61C: 关注计算机体系结构,让学生理解高级语言(例如 C)是如何一步步转换为机器可以理解的 01 串并在 CPU 执行的,学生将会学习 RISC-V 架构并自己用 Logisim 实现一个 CPU。
CS61B 和 CS61C 在本书中均有收录。
回到 CS61A,注意这不仅仅是一门编程语言课,而是会深入到程序构造与运行的原理。最后你将在第 4 个 Project 中用 Python 实现一个 Scheme 的解释器。此外,抽象将是这门课的一大主题,你将学习到函数式编程、数据抽象、面向对象等等知识来让你的代码更易读,更模块化。当然,学习编程语言也是这门课的一大内容,你将会掌握 Python、Scheme 和 SQL 这三种编程语言,在它们的学习和比较中,相信你会拥有快速掌握一门新的编程语言的能力。
注意:如果此前完全没有编程基础,直接上手 CS61A 需要一定的学习能力和自律要求。为避免课程难度过高而导致的信心挫折,可以选择一个更为友好的入门编程课程。例如伯克利的 CS10 或者哈佛大学的 CS50。
课程资源
- 课程网站: spring2024, fall2023, spring2023, fall2022
- 课程网站 (页面备份):spring2022,fall2022, fall2020
- 课程视频: fall2022, fall2020
- 课程教材: https://www.composingprograms.com/
- 课程教材中文翻译:https://composingprograms.netlify.app/
- 课程作业: 课程网站会有每个作业对应的文档链接以及代码框架的下载链接。
资源汇总
@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 PKUFlyingPig/CS61A - GitHub 中。