Berkeley · Course Field Guide
First-time learner runbook · Fall 2026 reference
A practical guide to the first semester

Learn to think in programs.

CS 61A moves quickly from Python fundamentals into abstraction, recursion, data structures, interpreters, and software design. This field guide turns the course outline into a steady weekly plan—and a concrete way to prepare for exams.

Course facts below reference Fall 2026 · Check your own term's syllabus
300regular course points
4projects · 100 points total
8 → 5quizzes offered · best five count
160exam points across three midterms + final
01
Know the course

Structure & grading

The course is about managing program complexity, not memorizing one language. Python is the main tool; Fall 2026 also introduces Gleam, SQL, and a TypeScript application project.

ComponentFall 2026 formatHow to approach it
Midterm 120 points · paperEarly fundamentals; precise tracing and code writing.
Midterm 220 points · computer-basedThrough linked lists; code implementation and output prediction.
Midterm 345 points · paperLater topics; follow the published scope announcement.
Final75 points · paperTreat it as cumulative unless staff announces a narrower scope.
Quizzes10 points · best 5 of 8Usually a short variant of a homework problem.
Homework10 pointsWeekly practice; know why each solution works.
Four projects100 points totalLarger synthesis assignments; plan around checkpoints.
Lab + discussion10 points eachComplete work and follow the section's attendance rules.
Projects are a core part of the course: 100 of 300 points, one-third of the total. Give them real calendar space. They are substantial programming assignments that bring ideas together, while exams assess whether you can reason about related ideas independently. The syllabus expects most students to earn full homework, quiz, project, lab, and discussion credit. A is 285/300; A− is 270/300. Exam recovery can raise each midterm percentage to at least 90% of the final percentage if you take the final during finals week.

Fall 2026 projects: Hog, Cats (computer-aided typing), Ants vs. SomeBees, and 4Animator. A two-week software-application unit is new in Fall 2026. Follow the live collaboration and AI rules: the general syllabus prohibits AI tools from filling in or correcting assignment code; the AI-focused project has its own instructions.

How the quiz fits in

Most weeks, lab includes a 10-minute, one-problem computer quiz based on a slight variation of homework. Re-solve the relevant homework problem from a blank page after you finish it. Practice quizzes, when released, appear on PrairieLearn. The best five of eight count in Fall 2026.

02
What to master

The knowledge map

For every topic, practice two moves: predict what code does, then write a small program that does something similar. Strong understanding means you can trace, explain, and construct.

Functions & control

Expressions, scope, conditionals, loops, return vs. print, and short-circuit behavior. Predict exact output and side effects.

Environments & higher-order functions

Call frames, lexical scope, closures, and functions passed or returned. Draw the parent frame and each call frame.

Recursion & tree recursion

State a base case, make progress toward it, and combine results. Sketch the call tree before simplifying.

Sequences & abstraction

Lists, tuples, strings, dictionaries, and abstract data types. Use an interface without depending on its representation.

Mutation & aliasing

Shared references, identity vs. equality, mutation vs. rebinding. Draw boxes and arrows before and after changes.

Linked lists & trees

Representations, recursive traversal, and transformations. Work through a tiny structure one pointer or branch at a time.

Classes & inheritance

Instances, methods, self, class attributes, and lookup. Track which object owns an attribute and which method runs.

Lazy evaluation & generators

yield, suspended state, and nested iteration. Trace one next call at a time.

Functional programming & Gleam

Immutability, functions, algebraic data types, and recursive processing of structured values.

Interpreters

Syntax vs. values, evaluation rules, and environments. Understand how an evaluator breaks down an expression.

SQL & tables

Filtering, joins, grouping, and aggregation. Be explicit about the rows that remain after each operation.

Software design & verification

Break features into parts, understand module boundaries, and verify code against requirements with tests and careful reading.

Topic order and exam scope vary. The course calendar and staff announcements are authoritative. See the Fall 2026 calendar and syllabus.

03
Try before you peek

Sample questions

These original examples model the kinds of reasoning CS 61A develops. Work each one on paper first. Open the answer only after you have a prediction and can explain your steps.

Practice rule: for output questions, write each intermediate value. For coding questions, state the base case and recursive step before writing code.
01 · Environment diagramsWarm-up

What does Python display?

def make_adder(x):
    def add(y):
        return x + y
    return add

plus_three = make_adder(3)
print(plus_three(4))

Draw the function object and its parent frame. What value does x have when add runs?

Show answer & reasoning

It displays 7. Calling make_adder(3) creates a frame where x is 3, then returns add. The returned function keeps that frame as its parent. When plus_three(4) runs, its own frame binds y to 4; the free name x is found in the parent frame, so 3 + 4 is 7.

02 · RecursionCode reading

Trace the recursive calls

def digit_sum(n):
    if n < 10:
        return n
    return digit_sum(n // 10) + n % 10

print(digit_sum(527))

List the argument to each recursive call, then compute the displayed value.

Show answer & reasoning

It displays 14. The calls reduce the number: digit_sum(527) becomes digit_sum(52) + 7, then digit_sum(5) + 2 + 7. The base case returns 5, giving 5 + 2 + 7 = 14. Each call removes one rightmost digit, so the input gets closer to the base case.

03 · Mutation & aliasingCommon exam skill

Which list changes?

a = [1, 2]
b = a
a.append(3)
a = [0]
print(a)
print(b)

Track the list objects separately from the variable names. Does rebinding a change the object referenced by b?

Show answer & reasoning

It displays [0], then [1, 2, 3]. Initially, a and b refer to the same list. append mutates that shared list. The later assignment a = [0] makes a refer to a new list; b still refers to the original, now mutated list.

04 · Tree recursionBuild a solution

Count the leaves

A tree is represented as a non-empty Python list: the first item is the label, and each remaining item is a branch represented by another tree. A leaf has no branches. Write count_leaves(tree), which returns the number of leaves.

Show one solution & reasoning
def count_leaves(tree):
    branches = tree[1:]
    if not branches:
        return 1
    return sum(count_leaves(branch) for branch in branches)

Why: a tree with no branches contributes one leaf. Otherwise, its leaves are exactly the leaves in its branches, so recursively count each branch and add the results. For example, [1, [2], [3, [4]]] has two leaves: [2] and [4].

05 · GeneratorsState tracing

When does the generator continue?

def steps():
    print("start")
    yield 2
    print("middle")
    yield 5

g = steps()
print("A", next(g))
print("B", next(g))

Write the complete output in order. Remember that creating a generator does not run its body.

Show answer & reasoning
start
A 2
middle
B 5

The first next begins execution, prints start, and pauses at yield 2. After the outer print displays A 2, the second next resumes after that yield, prints middle, and pauses at yield 5.

For more practice, use the current course's past exams and topic-sorted questions. Always follow your semester's exam scope.

04
Keep a steady pace

A weekly operating routine

Before lecture

  • Read assigned Composing Programs sections and watch the required video playlist.
  • Preview discussion problems; bring questions to section or office hours.
  • Put every deadline, checkpoint, quiz, and exam on one calendar.

During the week

  • Attend lecture, discussion, and lab if you are in regular sections.
  • Start homework early; use tests and debugging to isolate mistakes.
  • Keep an error log: scope, off-by-one errors, mutation, recursion cases.

For assignments

  • Redo homework problems from memory to prepare for quizzes.
  • Start project checkpoints early; reserve time for integration and debugging.
  • When pair programming, switch driver and navigator so both understand the work.

When stuck

  • Ask early at office hours, tutoring, discussion, or with peers.
  • Ask for reasoning and hints rather than copied answers.
  • At week's end, explain the idea, trace an example, solve a new one, and justify your answer.
A mega section is self-paced. Fall 2026 recommends that format only for students with considerable prior programming experience who are comfortable learning that way.
05
Active practice beats rereading

Prepare for midterms

The official course study guide recommends starting early, spreading study over multiple days, solving problems actively, and reflecting on your reasoning. Use past exams after you understand the basics.

Days 14–10

Map the scope

List announced topics and mark each green, yellow, or red. Revisit videos/readings for red topics, then try worksheet problems closed-book.

Days 9–6

Practice by type

Focus on one family at a time: environments, recursion, mutation, trees. Record the key idea and your near-misses.

Days 5–3

Simulate & diagnose

Take a timed practice exam under realistic conditions. Sort errors into concept, tracing, edge case, syntax, or timing.

Days 2–1

Refresh & rest

Redo misses from a blank page, review a one-page concept sheet, sleep, and plan your exam time.

High-value drills

  • Tracing / WWPD: write each evaluation step; draw environment diagrams for nested calls.
  • Recursion: specify the smaller subproblem and base case before coding; test boundary inputs.
  • Mutation: diagram references before and after each operation.
  • Trees and linked lists: trace branches and pointers explicitly.
  • Generators: track the suspended state and each yielded value.
  • Code writing: outline the plan in plain language, implement it, then test tiny inputs.
Practice until you can solve a new variant. Reddit advice ranges from one problem a day to several complete practice exams. Those are personal experiences, not official requirements; independent problem-solving is the better measure.
06
Make it cumulative

Prepare for the final

Assume the final is cumulative until staff posts a narrower scope. Start by repairing weak spots from all midterms, then alternate old and newer topics so you can switch problem-solving modes.

  • Use topic-sorted exam problems to target gaps; return to a mixed timed set to practice switching topics.
  • Explain solutions out loud or to a study partner. If you cannot explain the approach, repeat the problem without notes.
  • Use at least one timed practice set to find pacing issues before exam day.
  • Exam recovery can raise midterm percentages based on the final, but it is a safety net, not a study strategy.
The Fall 2026 syllabus lists the final on December 18, 2026. Dates and final scope are semester-specific; check the current calendar and announcements.
07
A major course pillar · 100 points

Projects: a learning progression

Projects are not side activities. They account for a third of the Fall 2026 points and make you combine ideas into programs larger than a single exam question. The syllabus describes projects as larger assignments that combine course ideas in interesting ways.

How were these projects selected? The public syllabus does not give a formal selection rubric. A reasonable reading of the project lineup is that it gives students several different settings in which to practice managing complexity: a game simulator, a typing application, an object-oriented simulation, and a larger multi-language application. The common thread is applying concepts in working software—not any one language. This progression is an interpretation of the published course materials, not a quoted staff rationale.
OrderFall 2026 projectWhat it lets you practiceHow it is organized
1Hog
Dice-game simulator
Control flow, functions, higher-order functions, separating rules from simulation, and strategy functions.Build game rules first, then add strategies; the checkpoint asks for an early working phase.
2Cats
Typing and autocorrect
Strings and sequences, functional abstraction, recursion/edit distance, memoization, then client/server multiplayer.Progress from typing metrics to autocorrect and then multiplayer; a checkpoint precedes the later phase.
3Ants vs. SomeBees
Tower-defense simulation
Use this project to consolidate classes, inheritance, mutation, object collaboration, and simulation logic as those topics arrive in the course.The course calendar schedules it after mutation, classes, and inheritance. Check the live project spec for required phases and checkpoints.
44Animator
Application project
Software/application design, web technologies, multiple components, code reading, testing, and verification with AI-agent tools.Concludes the course after foundational programming units; Fall 2026 lists a checkpoint and standard/TypeScript paths.

How the work is organized: Within a project, questions are grouped into phases that usually build on earlier functions. Follow that order, make a small piece work before adding the next one, and treat checkpoints as real milestones rather than last-minute submissions. The semester calendar also places the projects after the relevant concepts have begun appearing in lecture, lab, discussion, and homework.

Make each project teach you something

  1. Read for the model first. Describe the program's pieces and how they interact before writing code.
  2. Plan the phases. Mark dependencies, checkpoint requirements, tests, and your own work sessions.
  3. Implement incrementally. Finish one requirement at a time; use the provided tests, then manually trace a small example.
  4. Explain the result. For every function, say what it assumes, what it changes or returns, and why it works. Project interviews/checkoffs in some offerings make this understanding especially useful.
  5. Keep a recovery buffer. Debugging and integration take time. Avoid scheduling all project work on the due date.

Pair programming is encouraged where allowed; alternate roles and ensure both partners can explain the whole result. Follow the current semester's collaboration and AI policy. Fall 2026 requires Provenance logs and restricts AI on the standard projects; the final AI-assisted project has specific, separate instructions, so follow its live spec.

08
Anecdotal perspective

What students say online

Reddit is self-selected and mixes semesters. Treat it as lived experience, not a guarantee about difficulty, grading, or course policy.

Students often describe exams as harder than homework and lecture examples. Take that as a reason to practice unfamiliar variants, not only complete assigned coding.

A former student and TA recommends moving from memorizing syntax to practicing problem solving: explain solutions to peers, group similar problem types, and revisit them later from scratch.

First-time programmers report mixed outcomes. Some say consistent effort worked well; others found the pace demanding. Plan extra practice and ask for help early.

Office hours, CSM tutoring, HKN reviews, and study groups come up often. Check which resources are active in your semester.

Claims that 61A is a “weeder” or that everyone must complete a particular number of practice exams are opinions. The official grading page says there is no curve and publishes fixed thresholds.

09
A repeatable plan

Your weekly checklist

  • Read the current syllabus; confirm scope and deadlines.
  • Set up course tools and know where assignments are submitted.
  • Watch assigned videos and read before lecture.
  • Start homework and project checkpoints early.
  • Redo quiz-relevant homework problems without notes.
  • Practice tracing and writing code every week.
  • Use office hours while a question is still small.
  • Diagnose missed exam problems and redo them from scratch.
  • Leave time for timed practice before each exam.
  • Protect sleep during exam week.
10
Keep details current

Sources & currency

This guide references the Fall 2026 public course offering. The official syllabus, calendar, resources, and studying guide are primary sources. Reddit links are student perspectives only. HKN's public course guide is a useful overview but was last edited in 2020, so live course information takes precedence.