This repo contains solutions to homeworks and labs belonging to CS61a, the Berekely course taught by John DeNero. The topics covered are: recursion, currying, metaprogramming, object oriented programming, testing, data structures, and abstraction. The files are all written in Python 3.
- A recursive, object oriented definition of a mobile, supporting balance and weight checks.
- Object oriented Connect-N for 4 to N sized boards. Object oriented Towers of Hanoi.
- Fibonnaci sequence as a curried function, as a closure.
- Interval arithmetic.
This first course concentrates mostly 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.
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. Mastery of a particular programming language is a very useful side effect of studying these general techniques. However, our hope is that once you have learned the essence of programming, you will find that picking up a new programming language is but a few days' work.