CS61A's course website now requires UC Berkeley credentials for access due to new legislation. However, the Spring 2020 website can still be accessed with the help of tools such as the Internet Archive, and starter code can be found across these repositories.
Because 61A prioritises teaching CS concepts over languages, it dives deeper into these concepts than any language-focused CS course. This course's philosophy is summarised in the course text's description:
In the tradition of SICP, this text focuses on methods for abstraction, programming paradigms, and techniques for managing the complexity of large programs. These concepts are illustrated primarily using the Python 3 programming language.
The examples and exercises within offered perspectives never seen before in other courses that I have completed; this was a course that made a Diploma in Information Technology holder struggle and realise how shallow their understanding really was.
No other "intro to CS" programme has ever been this challenging, yet so intriguing and rewarding to tackle. Going through a course like this is a great way to build a strong CS foundation, and this foundation will go a long way in making new languages and frameworks much easier to learn in the future.
This is the webpage for the course's Spring 2020 run. I watch the recorded lectures and attempt the assignments in order. Detailed instructions for setting up and using course-related tools can be found in the first lab activity.
The autograder tool works for ALL assignments and does NOT require a UC Berkeley email account to run, as long as the --local
parameter is passed in after the ok
command.