πŸ–₯️
Berkeley CS61A: Notes
  • 🌍Hello, World!
  • πŸ’­Learn to Think Like Your Computer
  • Building Blocks
    • ❗Expressions in Python
      • ℹ️Mathematical Statements
      • 🀫Variables
      • πŸ‘Data Types in Python
    • 🚧Introduction to Functions
      • πŸƒβ€β™€οΈHow Python Executes a Function Call
      • 🚱Functions that Don't Return Anything
    • 🌊Control Flow
      • ⁉️What is an if statement?
      • πŸ’ΎWhat is a Loop?
      • 🚨What are Logical Operators?
        • πŸ˜–Logical Operators, Seemingly Illogical Behavior
      • 🚰How Does Control Flow?
    • ⚑Higher-Order Functions
      • ⏸️What are Higher-Order Functions Used For?
      • πŸ‘†Self-Reference
    • πŸ‘ΎEnvironments and Scope
      • πŸ–ŠοΈHow to Make Environment Diagrams
  • STRUCTURES OF DATA
    • ➰Recursion
      • πŸ«€Anatomy of Recursion
      • β›½Recursive Leap of Faith
    • πŸŽ„Tree Recursion
      • ⬇️The Use It/Lose It Principle
    • πŸ“€Iterables
      • βœ‚οΈList Slicing
      • πŸ’€Deep Lists
      • πŸŒ‹Iterable Functions
      • πŸ’½List Comprehensions
    • πŸ™ˆAbstraction
    • Trees
    • Linked Lists
    • Iterators and Generators
    • Efficiency
  • Extra Topics
    • 🎭Errors and their Types
      • 🏹Error vs Exception
      • πŸ”™What is Backtracing?
    • 🚑How the Terminal and the File are Different
    • 🍬Decorators
  • Debugging Tools
    • πŸ–¨οΈDebugging with Print Statements
    • πŸ›Debugging with the Debugger
Powered by GitBook
On this page

Was this helpful?

Learn to Think Like Your Computer

What CS61A is all about.

PreviousHello, World!NextExpressions in Python

Last updated 3 years ago

Was this helpful?

Being able to do this is what separates a mediocre computer programmer from a great one.

Human beings are special because we are excellent at lateral thinking. We can look at a statement, consider the many different interpretations, and select the one that makes most sense in the context. Computers cannot do anything like so β€” they are bound by the strict set of rules we hand them, and execute programs in these fixed, deterministic ways.

Throughout CS61A, our goal is to teach you to start thinking as methodically as a computer. Done correctly, this will give you the ability to look at a piece of code and know exactly what it's trying to do, where the bugs are, and how to fix it.

To be able to do this, we need to set a challenge for ourselves: no hand-waving. We must force ourselves to not shrug away misunderstandings β€” it is much easier to move on when you sort of understand something than to suffer in the discomfort of not completely understanding it. However, what is executed in what order is extremely important, and critical to deep understanding of class material.

I'd highly recommend investing a lot of time in practicing Environment Diagrams (more on this later) and using while tackling questions. Both of these help greatly in developing intuition.

πŸ’­
PythonTutor