The CS 61 series is an introduction to computer science, with particular emphasis on software and on machines from a programmer's point of view.
- CS 61A concentrates on the idea of abstraction, allowing the programmer to think in terms appropriate to the problem rather than in low-level operations dictated by the computer hardware.
- CS 61B deals with the more advanced engineering aspects of software, such as constructing and analyzing large programs.
- CS 61C focuses on machines and how they execute programs.
In CS 61A, we are interested in teaching you about programming, not about how to use one particular programming language. We consider a series of techniques for controlling program complexity, such as functional programming, data abstraction, and object-oriented programming.
CS 61A primarily uses the Python 3 programming language. Python is a popular language in both industry and academia. It is also particularly well-suited to the task of exploring the topics taught in this course. It is an open-source language developed by a large volunteer community that prides itself on the diversity of its contributors. We will also use two other languages in the latter half of the course: the Scheme programming language and the Structured Query Language (SQL).
Mastery of a particular programming language is a very useful side effect of CS 61A. However, our goal is not to dictate what language you use in your future endeavors. Instead, our hope is that once you have learned the concepts involved in programming, you will find that picking up a new programming language is but a few days' work.
I spent two weeks to finish all the homework, labs and projects. If you are a fresher in coding, this lesson will be a fantastic tour for you to learn the core ideas in programming. Even if you already have some experience in programming, you will certainly learn something that you've never thought of before. For me, I had a much deeper understanding of the higher order function and the use of tail recursion to optimize recursion. What's more, the python tutor will help you clearly understand the logic behind program frame and variable bindings.
By the way, I also highly recommend you to read the textbook written for this lesson(the link is above). It is adapted from the legendary book ----《SICP》. If you feel painful to read 《SICP》from head to tail, this book may be a good alternative.
At last, all the start codes and test program for homework, labs and projects are on the course website. You can download them for free. This repository contains my solution specified to the 2020 summer course. Hope this can help you.
Check out this repository which contains all my self-learning materials : )