# Learn to Think Like Your Computer

#### **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 [PythonTutor](https://pythontutor.com/visualize.html#mode=edit) while tackling questions. Both of these help greatly in developing intuition.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://calnotes.gitbook.io/cs61a-guidebook/learn-to-think-like-your-computer.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
