https://caiscoding.github.io/CS61A-Spring2022/
This is my repository for labs, homeworks and projects when going through the course, CS 61A, Spring 2022, from U.C. Berkeley.
Warning This repository contains codes for tasks of CS 61A, so please be careful about not viloating the course's policies and not copy-pasting these codes.
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 dive deeper into interpreters, to which end we'll introduce the Scheme programming language as a way to explore functional programming, and Regular Expressoins and the SQL programming language as a way to explore declarative programming.
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.
- Homework 1: Variables & Functions, Control
- Homework 2: Higher Order Functions
- Homework 3: Recursion, Tree Recursion
- Homework 4: Python Lists, Object-Oriented Programming
- Homework 5: Trees, Linked Lists
- Homework 6: Scheme, Scheme Lists
- Homework 7: Scheme Data Abstractions, Programs as Data
- Homework 8: Regular Expressions, BNF
- Homework 9: Finale
- Lab 0: Getting Started
- Lab 1: Variables & Functions, Control
- Lab 2: Higher-Order Functions, Lambda Expressions
- Lab 4: Recursion, Tree Recursion
- Lab 5: Python Lists, Mutability
- Lab 6: Object-Oriented Programming
- Lab 7: Linked Lists, Trees / Tree Mutation
- Lab 8: Midterm Review
- Lab 10: Scheme
- Lab 11: Interpreters
- Lab 12: Scheme Data Abstraction
- Lab 13: Regular Expressions
- Lab 14: Final Review