# CS61A - All Practice Problems and Notes

Below are a list of Notes and Practice Problems related to this course. Notes are longer explanations of topics that are discussed in class. They include simpler examples and are aimed at being conceptual. Practice problems are tougher, discussion-level and exam-level material that allows you to practice what you have learned. Almost all problems include solutions but allow you to work before viewing the answers. If you have any questions about adding more material, contact me.

### Notes:

### Practice Problems:

Below are a list of practice problems, test what you've learned!

- All Distinct Elements in Logic Challenge Logic
- Implementing Not Equal in Logic Challenge Logic
- Greater Than or Equal to in Logic Challenge Logic
- Includes in Logic Logic
- Reverse a List in Logic Logic
- Double List in Logic Logic
- Length in Logic Logic
- Subtraction in Logic Logic
- Modulus In Logic Challenge Logic
- Finding the Greatest Common Divisor using Logic Challenge Logic
- Group By Iterator Challenge Iterators
- Drop While Iterator Challenge Iterators
- Repeat Iterator Iterators
- Range Iterator Iterators
- List Cycle Iterator Iterators
- Fibonacci Iterator Iterators
- Once an Infinite Sequence, Always an Infinite Sequence Challenge Iterators
- Fibonacci Stream Streams
- Zip Generator Challenge Generators
- Chain Generator Generators
- Fibonacci Generator Generators
- Count Occurrences Scheme
- Rotate List k Times Challenge Scheme
- Zip Two Lists Challenge Scheme
- Nested Reverse List Challenge Scheme
- Reverse Scheme List Scheme
- Flatten Nested Lists Challenge Scheme
- Better Fib Memoization
- Tree to Reversed List Challenge Tree Recursion
- Is My Tree Binary and Searchable? Challenge Tree Recursion
- Insert Into Binary Search Tree Challenge Tree Recursion
- Post Order Traversal of a Binary Tree Challenge Tree Recursion
- Pre Order Traversal of a Binary Tree Challenge Tree Recursion
- In Order Traversal of a Binary Tree Challenge Tree Recursion
- Flip Tree Challenge Tree Recursion
- Orders of Growth Practice Orders Of Growth
- Designing Classes and Using Inheritance Inheritance
- In Place Functions Challenge Mutable Data
- Pets Own the Owners Object Oriented Programming
- Tuples Practice Iterables
- Append Rlists Iteratively Challenge Rlists
- Rotate Rlist by k Challenge Rlists
- Mutating Reverse Rlist Challenge Rlists
- Delete Last Item Challenge Rlists
- Sort Rlist (Object Version) Challenge Rlists
- Filter Rlist (as a method) with Mutation Challenge Rlists
- Map and Filter Rlist (Object Version) Challenge Rlists
- Sort Rlist Challenge Rlists
- Filter Rlist Rlists
- Map Rlist Rlists
- Mutable Reverse List Challenge Recursion
- Merge Sort Challenge Recursion
- Binary Search Recursion
- Find Secret Using Recursion Challenge Recursion
- Longest Length of the Same Character in a String Challenge Recursion
- Finding the Greatest Common Divisor Challenge Recursion
- Sum Digits Recursion
- Newton's Method Practice Challenge Newtons Method
- What Would Python Print? Challenge Lambdas
- More Higher Order Functions Practice Challenge Environment Diagrams
- Higher Order Functions in Environment Diagrams Challenge Environment Diagrams
- Nested Functions Challenge Environment Diagrams
- Which Function is Higher Order? Challenge Higher Order Functions
- Functions Inside Functions Higher Order Functions
- Renaming Functions Basics
- What Are Functions? Basics