code.cs61a.org is an online interpreter for all three of the languages (Python 3.9, 61A Scheme, and the SQLite variant of SQL) taught in this course. Using this interpreter, you can edit, run, debug, visualize, and share programs with staff.
The easiest way to get started with 61A Code is to visit
code.cs61a.org and play around with the interpreters.
Start Python Interpreter on the launch screen, and start interacting with
Note that the site may take a few seconds to load for the first time, since it's downloading interpreters for Python, Scheme, and SQL to your browser. In most modern browsers, these interpreters are cached, so subsequent loads should be a lot faster! In addition, the interpreters will all run offline after they enter your cache, so you can work even without an internet connection!
Rather than running code straight in an interpreter, you may want to edit a program in a file. To do so, you can
Newat the top menu bar
Create new fileon the launch screen
- Call the
editorfunction in an interactive interpreter (
(editor)in Scheme, and
To run code in a file, hit the green
Run icon at the top-right of the window.
An interactive interpreter will open showing the printed output of your code,
that will allow you to further interact with your program. You can use the red
Stop icon to the left of the interactive interpreter to stop a program that is
running for a long time.
To save a file, hit
Ctrl/Cmd + S or click the
Save As options at
the top menu bar. You will be given the option to either download a copy of your
code as a file, or to save it locally in your browser. If you choose to save it
in your browser, you should give it a meaningful name. If you give two files the
same name, the older file will be silently overridden, so be careful!
Once you open an editor, you can write code in any of the three languages, and
the editor will automatically detect the language. If you want to override the
language detected, add a
lang comment at the top of the file:
#lang pythonwill force the interpreter to use
;lang schemewill force the interpreter to use
--lang sqlwill force the interpreter to use
Alternatively, you can save a file with a
.sql extension to
force it to run with the corresponding language.
You may want to interact with programs written elsewhere using 61A Code. To do so, there are a number of options:
Openat the top menu bar, and upload a file to 61A code by dragging it into the drop target or selecting it manually.
Open existing fileon the launch screen, and upload a file using the previously described dialog.
- Select a file from
Recent Local Filesor
- Open a file from the course homepage.
When opening files, look in the
cs61a directory to find your OKPy backups for
the current semester. You will be prompted to log in the first time you try to
perform an action that requires OKPy authentication. You can open, edit, run,
and save backups, and they will be synchronized on OKPy and with your partner.
However, you cannot run OKPy test cases.
Files in the
home folder are stored in your local browser storage. Some
browsers may clear this storage periodically (Safari is known to do this), so
don't rely on it! Files stored in the
cs61a folder are saved as an OKPy
backup, and so will be accessible even if you clear your browser data, but will
be inaccessible from 61A Code after the semester ends (though they will remain
To open a file already saved in 61A Code, you can either use the
described previously to open a previously saved file, or access a direct link to
the file (such as those on the course homepage). Note that publicly accessible
direct links can only be created by course staff.
To make your code more readable, click the blue
Format icon at the top right
of the window. Especially for Scheme, this can make your code easier to read and
debug, and will also catch simple syntax errors.
Visualizing Data Structures
To visualize data structures, call the
draw function (
draw(...) in Python,
(draw ...) in Scheme) with a data structure passed in as its only argument.
Lists and linked lists will be drawn as box-and-pointer diagrams, while (both
types of) trees will be drawn in the standard manner. The
structures, as well as the standard tree ADT functions, are already declared for
use in the Python interpreter.
You can also call the
autodraw function to draw all data structures that are
returned in the interactive interpreter. Call
disable_autodraw to stop this
To visualize code written in an editor, click the yellow
Debug icon at the top
right next to the
- If you are writing Python, the visualizer will use Python Tutor to draw an environment diagram of your code.
- If you are writing Scheme, the visualizer will show the tree-recursive execution of your code, along with an environment diagram.
- If you are writing SQL, the visualizer will let you interact with the tables
generated by your code, and step through the execution of most
To visualize code run in an interactive interpreter, call the
visualize() in Python or
(visualize) in Scheme) to view a similar
visualization of all the code run in the interactive interpreter. In SQL, you
can click the
Step-By-Step button in the console to view the step-by-step
execution of a particular
Tables from lecture are preloaded in the SQL interpreter, so you don't have to
create them yourself. Run
.schema to see all the currently
available tables, and run
.open --new to drop all tables.
Be aware that, while most code is run on your local machine, the Python and Scheme program visualizers run your code on the server, so there exist restrictions that prevent you from visualizing very long-running programs.
Remember that sharing code related to 61A assignments with any student (even one not taking CS 61A!) aside from your project partner is a violation of course policies.
However, you may wish to share code with staff members to help with debugging.
To do so, click the
Share button at the top menu bar to generate a unique URL
for your code, that can be accessed by members of staff but not students.
Members of staff should log in to share files with students. When a file is
shared from the Share menu, edits will be visible to all collaborators.
To mess with the internals of the interpreter, click
Console at the top menu
bar. You will be able to interact with a minimal terminal-esque interface. Type
help to view the commands enabled. In particular, note that you can delete
To save files in a directory, write the full path in the
Save As dialog,
rather just the file name.
Troubleshooting / Reporting Bugs
If you experience a bug, try using a different browser. This tool is most extensively tested in Google Chrome, but should work in most modern browsers. You should also consider clearing your browser's cache and localStorage. If the bug persists, make a post on Piazza or contact a member of staff.