Official Documentation & Learning Manual

Python Cloud Studio

The enterprise-ready, browser-based Python notebook and data analysis studio. Zero local setup, instant kernel execution, real-time code intelligence, and isolated multi-tenant workspaces.

0 sec
Local Setup Required
100%
Isolated Workspace Sandbox
Monaco
IntelliSense Autocomplete
Live
Interactive DataFrame Tables

Welcome to Python Cloud Studio

Learn what Python Cloud Studio is, why it eliminates traditional Python configuration headaches, and how it compares to local Jupyter and Google Colab.

What is Python Cloud Studio?

Python Cloud Studio is a modern, enterprise-grade cloud workspace for writing, executing, and sharing Python code. Unlike traditional Python workflows that require installing Python interpreters, configuring virtualenv or Anaconda, and debugging environment path collisions on your local computer, Python Cloud Studio runs entirely inside your web browser.

Under the hood, Python Cloud Studio pairs a high-performance frontend editor powered by Monaco (the engine behind Visual Studio Code) with a containerized Python kernel communicating over high-speed ZeroMQ and WebSocket connections.

Why Browser-Based Cloud Execution Matters

Traditional local Python setups frequently break due to conflicting C-libraries, missing dependencies, or OS permission limits. With Python Cloud Studio:

  • Zero Local Installation: Open your browser to http://localhost:8765 (or your organization's URL) and start coding instantly.
  • Consistent Hardware & Environment: Every session runs with a verified Python runtime, pre-configured data science libraries, and allocated system resources.
  • Cross-Platform Parity: Windows, macOS, Linux, and Chromebook users receive the exact same intuitive interface and execution environment.

How Python Cloud Studio Compares to Other Tools

Capability Python Cloud Studio Traditional Jupyter Lab Google Colab
Setup Time Instant (0 sec) Requires Terminal, pip, conda (10-30 min) Instant with Google Account
Multi-Tenant Isolation Strict Tenant & Guest Sandbox Single-user / Local file access only Single Google Drive boundary
Pandas Table Viewer Interactive DataTableView (Filter, Sort, Export) Static HTML table Basic interactive filter (extension required)
Autocomplete & Signature Help Monaco Engine + Viewport-Aware Dropdowns Standard CodeMirror completions Custom autocomplete popup
Institutional / LMS Integration Built-in Classrooms & SuperAdmin Console Requires JupyterHub setup No native classroom gradebook
Who Is This Guide For?
This documentation is designed for both complete beginners writing their very first line of code and data science professionals analyzing complex datasets. Each section includes clear visual explanations, practical code examples, and keyboard shortcuts.

First 5 Minutes Tutorial: Zero to Running Code

Follow this fast-track guide to launch Python Cloud Studio, write your first code cell, execute it, and see your output in under five minutes.

1

Open the Application in Your Browser

Navigate to http://localhost:8765 (or the web address provided by your administrator). The Studio opens immediately in Guest Mode, with a clean workspace ready for coding.

Notice the top navigation bar displays Guest Mode — Private Workspace and the kernel indicator shows Python 3 (idle).

2

Locate the Active Code Cell

In the central notebook area, you will see a rectangular block bordered in subtle gray with a left gutter showing [ ] and a circular ▶ Run button. This is a Code Cell.

Click inside the dark editor box to place your cursor. A thin colored border highlights the active cell.

3

Type Your First Python Command

Type the following greeting code inside the cell:

Python
name = "Python Explorer"
greeting = f"Welcome to Python Cloud Studio, {name}!"
print(greeting)
4

Execute the Cell

To run your code, you have two options:

  • Mouse: Click the circular ▶ button on the left gutter of the code cell.
  • Keyboard (Recommended): Press Shift + Enter (or Ctrl + Enter).

While executing, the gutter button shows a spinning indicator. Within milliseconds, the execution counter changes to [1] and your output appears directly below the cell:

Output [1]
Welcome to Python Cloud Studio, Python Explorer!
5

Add a Second Cell and Reuse Variables

Click the + Code button on the notebook toolbar or press Alt + Enter in your first cell. In the new cell, type:

Python
# Notice that 'name' is remembered from the previous cell!
print(f"Character count in your name: {len(name)}")

Press Shift + Enter to run it. You have successfully created, connected, and executed your first multi-cell notebook!

Logging In, Logging Out, and Guest Mode

Understand how workspace isolation works, the difference between Public Guest Mode and Private Tenant Workspaces, and how your data remains strictly protected.

The Two Workspace Modes

Python Cloud Studio provides a dual-tier workspace architecture designed for both friction-free experimentation and high-security enterprise isolation:

Guest Mode (Private Workspace)

Private, No Login

  • No Login Required: Anyone who opens the application starts here immediately, with a few starter files.
  • Private to This Browser: Your files, notebooks and Python kernel are your own. Other guests (another browser, another person, a private window) cannot see or change them.
  • Kept in This Browser: A copy of your files and notebooks is saved in this browser, so they are still there after a refresh or when you come back. If the server removed an unused guest workspace, it is restored from this copy. Variables in Python are not kept: re-run your cells after a long break.
  • Limits: Clearing site data, or a private window once closed, removes the browser copy. The banner tells you when this browser cannot keep one. Sign in to keep your work on the server and use it on other devices.
Authenticated (Private Workspace)

Isolated Multi-Tenant Security

  • Secured by JWT Authentication: Accessible only after logging in with your email and password.
  • Strict Tenant Isolation: Stored in storage/workspaces/user_{id}/default/. No other user can view or alter your files.
  • Persistent Storage: Your notebooks, CSV datasets, and environment secrets remain saved indefinitely.
  • SuperAdmin Oversight: Instructors and administrators can audit and manage workspaces without compromising tenant privacy.

How to Log In

  1. Click the Sign In button located at the top-right corner of the navigation bar.
  2. An authentication modal appears over your current screen.
  3. Enter your registered Email and Password, then click Sign In.
  4. If you are a new student or team member, click Create an account, enter your full name, email, desired password, and click Register.
  5. Upon successful authentication, the top navbar instantly updates to display your name and a green Signed In — Private Workspace badge.
Important: What Happens When You Log Out?

When you click the red Sign out button in the top navbar:

  • Your JWT session token is instantly destroyed from browser memory.
  • All active file editor tabs and notebook handles associated with your private account are closed immediately.
  • The left file explorer automatically switches back to this browser's private guest workspace.
  • Your private files are NEVER visible to anyone who uses the browser after you log out.

Understanding the Studio Interface

An in-depth visual breakdown of every toolbar, sidebar, panel, and indicator across Python Cloud Studio.

Python Cloud Studio uses a cohesive, high-density layout inspired by Google Colab and Visual Studio Code. The interface is organized into five primary regions:

Python Cloud Studio — Layout Architecture
Workspace Badge
Notebooks Modal Run All Restart Kernel Kernel Status (idle)
Secrets Theme User Profile / Sign In
FILES EXPLORER
+ File | + Folder | Upload | Refresh
📁 data/
  📄 sales.csv
📄 analysis.ipynb
📄 script.py
📓 Untitled.ipynb + Code | + Text | Save (Ctrl+S)
[1] ▶
import pandas as pd
df = pd.read_csv('data/sales.csv')
df
Interactive DataTableView (Sort, Filter, Download)
[Interactive Table Rows]
═ Drag to Resize Cell Height (80px - 800px) ═
Files | AI | Vars | Stats
Tabbed File Editor
Edit .py, .csv, .md side-by-side with unsaved dirty bullet ●

Detailed Region Breakdown

1. Top Navigation Bar (Navbar)

Always Visible
  • Brand & Workspace Badge: Shows the active mode (Guest Mode or Private Workspace).
  • Notebooks Button (): Opens the Notebooks Manager dialog to switch, download, duplicate, or delete notebooks.
  • Run All (): Sequentially executes all code cells from top to bottom.
  • Restart Kernel (): Wipes kernel memory and starts a fresh Python interpreter session. Rotates with an animation while restarting.
  • Kernel Status Pill: Live color-coded indicator:
    • Python 3 (idle) — Kernel is ready to receive commands.
    • Python 3 (busy) — Currently executing code.
    • Python 3 (restarting) — Kernel process is rebooting.
    • Disconnected — Network connection lost.
  • Secrets (): Configures workspace environment variables and API keys (e.g., OpenAI, Gemini, HuggingFace).
  • Theme Toggle: Switches seamlessly between System, Dark, and Light themes.

2. Left Sidebar (Files Explorer)

Collapsible (Ctrl+B)
  • Toolbar Actions: + File creates a new file; + Folder creates a subfolder; Upload uploads files from your computer; Refresh reloads the tree.
  • Drag-and-Drop: You can drag files directly from your computer's desktop into the sidebar to upload them.
  • Context Menu: Right-clicking any file or folder reveals: Rename, Download, and Delete.
  • Double-Click to Edit: Double-clicking any non-notebook file (like .py, .csv, .txt, .md) opens it directly in the Right Panel Tabbed Editor.

3. Central Notebook Canvas & Resizable Cells

Core Work Area
  • Code Cells: Monaco-based editor with syntax highlighting, line numbers, autocomplete, and diagnostics.
  • Execution Counter: Shows [ ] before execution and [n] after, displaying the order in which cells were run.
  • Drag-to-Resize Handle: Every code cell features an ergonomic drag handle at the bottom edge. Click and drag vertically to resize the editor height anywhere from 80px to 800px. Cell heights are automatically saved in notebook metadata!

4. Right Side Panel

Auxiliary Tools
  • Files Tab: Tabbed editor for working with companion scripts, configuration files, or viewing raw CSV text.
  • AI Assistant Tab: Built-in intelligent programming assistant to generate code, explain errors, and insert snippets directly into your notebook.
  • Variables Tab: Inspect active Python variables stored in kernel memory.
  • Metrics Tab: Monitor real-time CPU, RAM, and Disk allocation.

Your First Notebook: Creation, Structure & Cells

Learn how Jupyter notebooks are organized, how to create and rename notebooks, and the fundamental anatomy of code cells.

What is a Jupyter Notebook (`.ipynb`)?

A notebook is an interactive computational document that combines runnable code, formatted text, equations, and rich visualizations into a single file. Under the hood, notebooks are saved in standard Jupyter Notebook Format v4 (JSON structure), which means your work is 100% portable and can be opened in VS Code, JupyterLab, or Google Colab.

Creating and Managing Notebooks

You can create a new notebook in two simple ways:

  • Click the Notebooks button in the top navbar and click + New Notebook.
  • Click the + File button in the left sidebar and enter a filename ending with .ipynb (e.g., data_analysis.ipynb).

Cell Anatomy: Code vs. Markdown

Code Cells

Used to write executable Python code. They feature:

  • Left execution gutter with run button ▶
  • Execution order number: [1], [2], etc.
  • Output area below the editor for text, tables, and images.
  • Monaco editor with full IntelliSense and diagnostics.

Markdown (Text) Cells

Used to document your work, explain methodology, and create headers:

  • Supports standard Markdown: # Headers, **bold**, *italics*.
  • Rendered automatically when you click outside or press Shift + Enter.
  • Supports lists, links, tables, and LaTeX math equations.

Cell Action Toolbar

When you hover over or select a cell, an action toolbar appears allowing you to:

  • Run Cell: Execute the cell immediately.
  • Move Up / Down: Reorder cells within the notebook document.
  • Duplicate Cell: Create an exact copy of the cell directly below.
  • Delete Cell: Remove the cell (with an undo safety buffer).

How to Write Python Code & IntelliSense

Master the code editor and its shortcuts, smart autocomplete suggestions, parameter signature hints, and real-time syntax diagnostics.

The Code Editor

Every code cell is a Python-aware editor with line numbers, automatic indentation, auto-closing brackets and quotes, comment toggling, and IntelliSense. The .py file editor in the right panel supports the same indentation and comment shortcuts.

  • Comment / uncomment: Ctrl + / (⌘ + / on macOS) adds or removes # on the current line, or on every selected line. Comments are aligned with the block's indentation, blank lines are left alone, and your selection is kept so you can press it again to undo.
  • Indent: Tab inserts four spaces, or indents every selected line.
  • Outdent: Shift + Tab removes one level (up to four spaces) from the current or selected lines.
  • Auto-indent: Enter keeps the current indentation and adds one level after a line ending in : (for example after def, if, for).

1. Python IntelliSense Autocomplete

As you type Python code, Cloud Studio actively inspects both the Python Abstract Syntax Tree (AST) and the live runtime kernel namespace to offer context-aware suggestions:

Viewport-Aware Dropdown Positioning (Google Colab Style)
  • Intelligent Placement: The autocomplete suggestion dropdown appears directly below your typing cursor. If there is insufficient room at the bottom of the viewport (<260px), it smoothly flips above the cursor.
  • Keyboard Navigation: Use Arrow Down and Arrow Up to move through candidate functions, methods, and variables. The list scrolls smoothly to ensure the highlighted item is always in view.
  • Accepting Suggestions: Press Tab or Enter to insert the exact matched token.
  • Dismissing: Press Escape to close the autocomplete dropdown without altering your text.
Visual Simulation: Autocomplete Dropdown in Action
import pandas as pd
pd.read_
f read_csv Read a comma-separated values (csv) file into DataFrame
f read_excel Read an Excel file into a pandas DataFrame
f read_json Convert a JSON string to pandas object
f read_parquet Load a parquet object from the file path

2. Parameter Signature Help

When you type an opening parenthesis ( after a function name (e.g., pd.read_csv( or plt.plot(), a dedicated Parameter Signature Help box appears.

  • Displays parameter names, default values, and the function's documentation.
  • Always visible: The box sits on the opposite side of the line from the autocomplete dropdown, and otherwise on whichever side has more room. It is sized to fit the visible part of the notebook (below the toolbar) and repositions as you scroll.
  • Interactive: Move the mouse into the box to scroll long documentation with the wheel, touchpad or scrollbar, and select text to copy it with Ctrl + C. After clicking inside it, ↑/↓ and Page Up/Page Down scroll it too.
  • Close and reopen: Escape closes the autocomplete dropdown first, then the signature box, and returns the cursor to your code. Press Ctrl + Space inside the parentheses to bring it back.

3. Real-Time Code Diagnostics

Python Cloud Studio continually checks your code for syntax mistakes, unclosed parentheses, and unresolved imports:

  • Red Squiggly Underlines: Highlight the exact error token in your code. Hover your mouse over the red line to view a clear explanation of what needs to be fixed.
  • Typing Suppression: To avoid distracting you while actively typing, diagnostics are automatically suppressed until you pause or finish your statement.
  • Automatic Refresh: When you run a cell, restart the kernel, or install a new package via %pip, diagnostics automatically re-evaluate and clear immediately.

Executing Code & Execution Controls

Learn all the ways to run code, understand the cell execution counter, run the entire notebook at once, and cancel stuck calculations.

The Three Execution Shortcuts

Mastering keyboard shortcuts is the single most effective way to accelerate your Python workflow. Python Cloud Studio provides three distinct execution actions:

Ctrl + Enter

Run & Stay in Current Cell

Runs the active cell without moving focus. Perfect when iteratively testing adjustments to the same function or chart.

Focus Preserved
Shift + Enter

Run & Advance to Next Cell

Runs the active cell and automatically advances cursor focus to the next cell. If you are on the last cell, it creates a new empty cell!

Primary Workflow
Alt + Enter

Run & Insert New Cell Below

Runs the active cell and immediately inserts a brand-new blank cell directly below, moving your cursor into it.

Rapid Expansion

Running a Python (.py) File

You can keep code in .py files and run them from your notebook:

  1. In the Files panel on the left (open it with the top-left panel button or Ctrl + B), click + File, type a name ending in .py (for example hello.py) and confirm. The file opens in the editor on the right.
  2. Write your code, for example print('Hello!').
  3. Click the green ▷ Run button above the editor. The file is saved, and a new cell %run hello.py is added at the end of your notebook and run. Its output appears under that cell.

You can also right-click a .py file in the Files panel and choose Run in notebook, or type %run hello.py in any code cell yourself. Variables and functions defined in the file are available in later cells (for example, call a function from the file in the next cell). Paths are relative to your workspace folder, so a file in a folder runs as %run "my scripts/report.py".

Formatting Text Cells (No Markdown Needed)

Text cells hold your notes and explanations. Click + Text (or double-click an existing text cell) and a formatting toolbar appears above the text, with a live preview beside it. Select some words and click a button, just like in a word processor:

  • Style menu: Heading 1, 2, 3 or normal text.
  • B, I, strikethrough, inline code, highlight and text colour.
  • Bulleted list, numbered list and checklist. Press Enter to add the next item; Enter on an empty item ends the list; Tab / Shift + Tab nest or un-nest an item.
  • Link and image: type the web address in the small form (or choose an image from your computer, up to 1.5 MB; it is stored inside the notebook). Quote and divider.
  • Code block (choose the language) and maths: inline $x^2$ or a maths block, shown with proper mathematical typesetting.

Shortcuts: Ctrl + B bold, Ctrl + I italic, Ctrl + Shift + S strikethrough, Ctrl + Shift + H highlight, Ctrl + E inline code, Ctrl + K link, Ctrl + Shift + 7 / 8 / 9 numbered list / bulleted list / checklist, Ctrl + Alt + 1–3 headings (0 normal text), and Ctrl + Z / Ctrl + Shift + Z to undo and redo. On macOS use ⌘.

Press Esc, Shift + Enter or click another cell to see the text formatted. The toolbar writes standard Markdown, so your notebooks look the same in Jupyter and Google Colab, and text you wrote in Markdown yourself is kept exactly as written. Hide or show the live preview with the button at the right of the toolbar.

Understanding Errors

  • While you type: a problem Python would refuse to run (for example an IndentationError or a missing module) is underlined in red, with a red dot next to the line number. Hover over the underline or the dot to see Python's exact message, the error type and the line and column. Click the red note at the bottom of the cell to jump to the problem.
  • After running: the line that raised an error (NameError, TypeError, ValueError…) is marked the same way; hover over it for the details. The complete traceback stays in the output. Under the error, Where: lists the places the traceback points at: click one to go to that line in the notebook, or to open a .py file of your workspace at that line.

Editor Font and Indentation

Code uses JetBrains Mono at 14 px. Change the size from the ⋯ menu in the top bar (Editor font size); your choice is remembered in this browser and applies to notebook cells and the file editor. Indentation is four spaces: Enter indents after a line ending in : and inside brackets, and goes back a level after return, pass, break, continue and raise; Backspace in the spaces at the start of a line removes a whole level; typing else:, elif, except or finally: lines it up with its if or try.

Command Mode (Keyboard Cell Editing)

As in Google Colab and Jupyter, a cell is either being edited (the caret is in its code, accent border) or selected (accent bar on its left, no caret). Press Esc in a cell, or click its header, to select it; press Enter to edit it again. While a cell is selected:

  • ↑ / ↓ (or K / J): select the cell above / below.
  • A / B: insert a code cell above / below.
  • D D (press D twice): delete the cell; the next one is selected.
  • M / Y: change the cell to Markdown text / code.
  • Shift + Enter and Ctrl + Enter run it as usual.

Ctrl + F8 runs all cells above the current one, and Ctrl + F10 runs the current cell and all below; both are also in each cell's ⋯ menu. Clicking a cell's buttons (Run, Move, Duplicate) never takes the caret out of your code.

Understanding the Execution Gutter

On the left side of every code cell is the execution gutter. It communicates three distinct states:

  • [ ] Not Yet Executed: The cell has not run in the current kernel session.
  • Spinning Circle Running: The code is currently executing on the cloud kernel and the cell shows [*]. The run button turns into a red Stop square inside the spinner: click it to stop the cell. The top navbar displays Python 3 (busy). Running the same cell again while it is still running is ignored, so its output is never mixed with a second run.
  • [1] Executed: The number indicates the exact sequential order in which this cell was executed in the current session.

Using "Run All"

Located on the top navbar, the Run All button (▶) sequentially executes every code cell in your notebook from the first to the last. This is standard practice before sharing your notebook or generating final reports, ensuring all variables and results are computed in top-to-bottom order.

Stopping a Long-Running or Infinite Loop

If your code runs too long or gets stuck in an infinite loop (for example, while True: pass), stop it without reloading the page. Any of these does the same thing:

  • Click Stop in the top navbar. It turns red while code is running.
  • Click the red Stop square on the running cell's run button.
  • Press Ctrl + C (⌃ + C on macOS) while a cell is running. If text is selected, Ctrl + C copies it instead, as usual.

The cell ends with a KeyboardInterrupt message. Your variables are kept, so you can fix the code and run it again. Cells still waiting from Run All are cancelled. Programs the cell started, such as a web server launched with !uvicorn or subprocess, are stopped too. Clear Outputs only clears what is displayed; it does not stop running code.

When Stop is not enough

Some code cannot be interrupted, for example code stuck inside a native library call or code that ignores interrupts. If a cell is still running about 8 seconds after you press Stop, a yellow banner offers Restart kernel. Restarting always stops the code, but it clears all variables and imports, so you will need to run your cells again. Choose Keep waiting to give it more time. You can also click Restart in the top navbar at any time.

Understanding Output

Learn how Python Cloud Studio captures, formats, and renders different types of cell output, from basic print statements to rich multimedia.

Standard Output vs. Expression Return Values

In Python notebooks, there is an important difference between printing something and evaluating an expression on the last line:

1. Standard Output (`print()`)

Text sent to Python's sys.stdout stream. Rendered in a clean monospace font below the cell:

print("Calculating results...")
print("Step 1 complete.")
Calculating results...
Step 1 complete.

2. Last-Line Expression Value

If the final line of your code cell evaluates to an object or expression, the notebook displays it automatically without needing print():

score = 95
score * 1.05  # Automatically rendered!
Out [2]:
99.75

Rich Output Types Supported

Python Cloud Studio automatically detects and renders rich MIME types:

  • Pandas DataFrames: Automatically transformed into interactive, searchable, sortable tables (see Chapter 10).
  • Matplotlib & Seaborn Charts: High-resolution PNG images rendered inline with crystal-clear vector sharpness.
  • HTML & Markdown: Rendered directly using safe DOM sanitization.
  • ANSI Error Tracebacks: Python exceptions and stack traces are color-coded in high-visibility red, amber, and cyan, making errors effortless to diagnose.

Multi-Cell & Kernel State

Understand how memory persists across different cells, the golden rules of notebook execution order, and how to avoid hidden state bugs.

The Shared Global Namespace

In a Python Cloud Studio notebook, all code cells share a single running Python kernel process. When you define a variable, import a library, or declare a function in one cell, it remains stored in the kernel's memory and is immediately accessible to all other cells.

How Notebook Cells Share Kernel Memory
Cell 1 [Executed]
total_revenue = 450000
── stores into ──▶
Active IPyKernel Memory
total_revenue: 450000
tax_rate: 0.15
◀── reads from ──
Cell 2 [Executed]
net = total_revenue * (1 - tax_rate)

The Out-of-Order Execution Pitfall

Because you can run cells in any order you choose, you might run Cell 3 before Cell 2. While flexible, this can lead to confusing bugs where code works on your screen but fails when someone else runs the notebook from top to bottom.

Best Practice: The "Restart & Run All" Test

Before saving your final work or turning in an assignment, always do this quick two-step check:

  1. Click the Restart button in the top navbar to clear all kernel variables.
  2. Click Run All to verify that every cell executes cleanly from top to bottom with zero errors.

If all cells pass, your notebook is 100% reproducible and ready for production or grading!

NumPy & Pandas DataFrames (Interactive DataTableView)

Learn how to manipulate tabular data with Pandas and leverage Python Cloud Studio's upgraded interactive table viewer.

The Power of Pandas in Cloud Studio

Pandas is Python's premier data manipulation library. Whenever you display a Pandas DataFrame (for example, by typing df on the last line of a code cell), Python Cloud Studio automatically intercepts the HTML table output and upgrades it into a rich, interactive DataTableView component.

DataTableView — Interactive Component Architecture
📋 Copy TSV ⬇ Download CSV Show 10 rows ▾
# Employee Name ▲ Department Salary ($) ▼ Performance
1 Alex Rivera Engineering $124,500 Excellent
2 Elena Rostova Engineering $138,200 Exceptional
3 Marcus Vance Engineering $115,000 Good

Key Capabilities of DataTableView

1. Instant Column Sorting

Click any column header to sort in ascending order (▲). Click again to sort in descending order (▼). Works seamlessly on text, numbers, dates, and currency.

2. Live Real-Time Filtering

Type into the filter bar to immediately isolate rows matching your search query across all columns simultaneously—no code modification needed.

3. Customizable Page Sizes

Choose from 10, 25, 50, 100, or "All" rows per page. High-density virtualization ensures smooth scrolling even on massive datasets.

4. One-Click TSV Copy & CSV Export

Click Copy TSV to paste directly into Microsoft Excel or Google Sheets. Click Download CSV to save the table to your local hard drive.

Example Code: Creating an Interactive DataFrame

Python
import pandas as pd
import numpy as np

# Create a sample DataFrame
data = {
    "Employee": ["Alex Rivera", "Sarah Chen", "Elena Rostova", "Marcus Vance", "Priya Patel"],
    "Department": ["Engineering", "Product", "Engineering", "Engineering", "Marketing"],
    "Salary": [124500, 132000, 138200, 115000, 98000],
    "Tenure_Years": [3.5, 4.0, 5.2, 2.1, 1.8]
}

df = pd.DataFrame(data)
df  # Simply evaluate 'df' on the last line to activate DataTableView

Charts & Visualizations

Create publication-quality charts using Matplotlib and Seaborn, rendered directly inside your notebook output.

Built-in Visualization Libraries

Python Cloud Studio comes with Matplotlib and Seaborn pre-configured. When you call plt.show(), the chart is captured as a high-density PNG graphic and embedded directly beneath your code cell.

Python
import matplotlib.pyplot as plt
import numpy as np

# Generate sample trend data
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.figure(figsize=(9, 4), dpi=100)
plt.plot(x, y1, label="Sine Wave", color="#2563eb", linewidth=2.5)
plt.plot(x, y2, label="Cosine Wave", color="#10b981", linewidth=2.5, linestyle="--")

plt.title("Trigonometric Signal Analysis", fontsize=14, fontweight="bold", pad=12)
plt.xlabel("Time (seconds)", fontsize=11)
plt.ylabel("Signal Amplitude", fontsize=11)
plt.legend(frameon=True, loc="upper right")
plt.grid(True, linestyle=":", alpha=0.6)
plt.tight_layout()
plt.show()
Rendered Output: Inline Matplotlib Plot
Sine Wave Cosine Wave

Uploading & Using Datasets

Step-by-step instructions for uploading CSV, Excel, and JSON files, inspecting them in the Tabbed Editor, and loading them into your code.

Uploading Files to Your Workspace

Python Cloud Studio makes uploading datasets effortless. You can use either the file toolbar or direct drag-and-drop:

1

Click the Upload Button in the Left Sidebar

In the Left Files Sidebar, click the Upload button (or drag files from your computer folder directly into the sidebar panel). Select your dataset (e.g., housing_data.csv).

2

Verify in the Files Tree

The file appears immediately in your file tree. If you are logged in, it is securely stored in your private workspace. If you are a guest, it is stored in the public workspace.

3

Optional: Inspect in the Tabbed File Editor

Double-click the CSV file in the sidebar. A new tab opens in the Right Panel displaying the raw data with row numbers. You can make quick edits, save changes, or close the tab.

4

Load into Pandas with Relative File Paths

Because the Python kernel runs with its working directory set to your workspace root, you can read the file directly without typing complex system paths:

Python
import pandas as pd

# Load the uploaded file directly
df = pd.read_csv("housing_data.csv")

# Display the first 5 records
df.head()

Using the Python Debugger

Learn how to pause execution, inspect local variables, and step through complex functions using Python's built-in debugger.

Current Debugging Architecture & Roadmap
In Python Cloud Studio, interactive debugging is powered by Python's standard breakpoint() hook and the pdb engine, paired with ANSI-color tracebacks. A visual DAP (Debug Adapter Protocol) gutter breakpoint tool with step-over/step-into buttons is actively on our development roadmap.

How to Set Breakpoints in a Code Cell

To pause code execution at a specific line and inspect variables, insert breakpoint() where you want Python to pause:

Python
def calculate_discount(price, customer_tier):
    rate = 0.05
    if customer_tier == "vip":
        rate = 0.20
    
    # Pause execution here to inspect variables
    breakpoint()
    
    final_price = price * (1 - rate)
    return final_price

result = calculate_discount(150.0, "vip")

Essential Debugger Commands

Command Name What It Does
p variable Print Variable Evaluates and prints the current value of variable (e.g., p rate).
n Next Executes the current line and advances to the next line in the function.
s Step In Steps inside the function call on the current line.
c Continue Resumes normal program execution until the next breakpoint.
q Quit Terminates the debugger immediately.

Python Errors & How to Fix Them

A beginner's visual field guide to understanding common Python exceptions, identifying the root cause, and applying the permanent fix.

Errors are an expected part of every programmer's journey. When Python encounters an issue, Cloud Studio prints an ANSI-formatted error traceback showing the file, line number, and exact reason.

SyntaxError: invalid syntax Most Common

Cause: Python cannot understand the structure of your code—often a missing colon :, unclosed quotation mark, or mismatched bracket.

❌ Broken Code
if age >= 18  # Missing colon!
    print("Eligible")
✔ Fixed Code
if age >= 18:  # Added colon
    print("Eligible")
NameError: name '...' is not defined Frequent

Cause: You are trying to use a variable or function that has not been defined yet, misspelled the name, or forgot to run the cell above where it was declared.

❌ Broken Code
user_name = "Jordan"
print(username)  # Misspelled underscore!
✔ Fixed Code
user_name = "Jordan"
print(user_name)  # Exact match
TypeError: can only concatenate str to str Frequent

Cause: Combining incompatible data types, such as adding a string to an integer.

❌ Broken Code
age = 25
print("Your age is: " + age)
✔ Fixed Code
age = 25
print(f"Your age is: {age}")  # Use f-strings
ModuleNotFoundError: No module named '...' Environment

Cause: Attempting to import a package that is not yet installed in your runtime environment.

❌ Broken Code
import rich
# Fails if 'rich' is not installed
✔ Fixed Code
# Run in a cell first:
%pip install rich

import rich  # Now succeeds immediately!

Saving & Managing Your Work

Learn how to save notebooks, download `.ipynb` files to your computer, duplicate templates, and organize workspace files.

Saving Notebooks (`Ctrl+S`)

Whenever you edit code or generate new cell outputs, press Ctrl + S (or ⌘ + S on macOS). A toast notification confirms the save, and the file is written to your workspace storage in valid Jupyter Notebook format v4 JSON.

Using the Notebooks Manager Modal

Click the Notebooks button () in the top navbar to open the comprehensive Notebooks Management Dialog:

Action Button Description
Switch Active Click Notebook Card Switches your active editor canvas to the selected notebook without page reload.
Download Download .ipynb Downloads the raw notebook directly to your computer's Downloads folder.
Duplicate Duplicate Creates an exact clone of the notebook (e.g., analysis_copy.ipynb) for safe experimentation.
Delete Delete Deletes the notebook after a confirmation prompt.

Python Runtime & Kernel Management

Understand the underlying IPyKernel architecture, how ZeroMQ channels handle code execution, and how to safely reboot the runtime.

Kernel Architecture & Execution Pipeline

When you click Run or press Shift + Enter, your browser does not execute Python directly. Instead:

  1. The code string is packaged into a JSON execution message and sent via WebSocket to the FastAPI backend.
  2. The backend relays the request through high-performance ZeroMQ sockets to an isolated IPyKernel process.
  3. Output streams (stdout, stderr, display_data) stream back in real-time to your notebook canvas.
ZeroMQ & IPyKernel Execution Flow
Monaco Editor
User presses Shift+Enter
── WebSocket ──▶
FastAPI Backend (8765)
Dispatches via ZeroMQ
── ZeroMQ ──▶
Python IPyKernel
Executes in Sandbox

Restarting the Kernel

If your kernel becomes unresponsive or you want to wipe all variables from memory to start fresh:

  1. Click the Restart button () in the top navbar.
  2. The icon spins (animate-spin) and the status pill turns pulsing blue (restarting).
  3. A toast banner announces "Kernel restarted successfully".
  4. All active variables are wiped, and diagnostics refresh automatically.

Installing Packages with %pip

Learn how to install third-party Python libraries using magic commands, understand isolated user site-packages, and why restart is no longer required.

Installing Libraries Directly in a Code Cell

Need a package that isn't pre-installed? You can install it on-the-fly directly inside your notebook using the standard %pip magic command:

Python
# Install any PyPI package into your workspace
%pip install rich polars scikit-learn
How Python Cloud Studio Protects the System Environment
  • Automatic User Isolation: When you run %pip install, Cloud Studio automatically injects --user behind the scenes. Packages are placed into your personal .local/lib/python3.x/site-packages.
  • No Kernel Restart Needed: Cloud Studio immediately invalidates Python's sys.path_importer_cache. You can import your newly installed library in the very next cell without restarting the kernel!
  • Guest Protection: Guest accounts are restricted from altering the system environment. Sign in to install custom libraries.

Terminal & Shell Magics

Execute operating system shell commands safely using the `!` prefix, run IPython line magics, and understand security restrictions.

Current Shell Workflow & Web PTY Roadmap
In the current release, command-line operations run through safe IPython cell execution (using ! and %). An embedded, full-featured web terminal (PTY / xterm.js) is on our development roadmap for enterprise deployment.

Running Shell Commands with `!`

Prefix any line in a code cell with an exclamation mark (!) to execute it in the underlying operating system environment:

Bash
# Inspect files in the current workspace directory
!dir

# Check active Python interpreter version
!python --version

Common IPython Magics

Magic Purpose Example
%time Measures execution time of a single statement. %time sum(range(1000000))
%timeit Runs code multiple times to compute average benchmark. %timeit [x**2 for x in range(1000)]
%who Lists all defined variables in the kernel namespace. %who
%pip Installs packages into user site-packages. %pip install rich

Profile, Secrets & Themes

Manage API keys with the Secrets Modal, configure environment variables, and switch between System, Dark, and Light visual themes.

Managing API Keys with SecretsModal

Never hardcode sensitive API keys or database passwords in your notebook code! Python Cloud Studio includes a dedicated Secrets Manager:

  1. Click the Secrets button () in the top navbar.
  2. Choose from preset templates (OPENAI_API_KEY, GEMINI_API_KEY, ANTHROPIC_API_KEY, HUGGINGFACE_API_KEY) or click + Add Custom Secret.
  3. Secrets are stored securely in your private workspace .env file and automatically injected into Python's os.environ.
Python
import os

# Safely read secrets from environment variables
api_key = os.environ.get("OPENAI_API_KEY")
print("Key configured:", bool(api_key))

Switching Visual Themes

Click the Theme dropdown in the top navbar to choose:

  • System: Automatically matches your operating system's light or dark mode setting.
  • Dark: High-contrast modern dark palette engineered for low eye fatigue.
  • Light: Crisp, clean high-contrast light theme ideal for classroom presentations and daytime work.

Sharing & Collaboration

Export your notebooks for colleagues, give new guests starter files, and present findings cleanly.

Ways to Share Your Work

1. Export as `.ipynb`

In the Notebooks Modal, click Download .ipynb. The file can be uploaded to GitHub, emailed to colleagues, or imported into Google Colab.

2. Starter Files for Guests

Guest workspaces are private, so guests cannot share files with each other. An administrator can place notebooks and data in the server's storage/workspaces/public/ folder: every new guest workspace starts with a copy of them.

3. Classroom Assignments

Instructors can publish assignment templates to classrooms where students can complete and submit their solutions.

Student Features & Assignments

How students join classrooms, complete coding assignments, run automated test cells, and submit their coursework.

Joining a Classroom

Instructors provide an enrollment join code (e.g., CS101-FALL). When enrolled as a student:

  1. Sign in to your private account using your student email.
  2. Assignments appear in your workspace under the assignments/ directory.
  3. Open the assigned .ipynb notebook to begin your coursework.

Working with Autograded Test Cells

Many courses include validation cells containing assert statements:

Python
# Exercise: Define a function 'celsius_to_fahrenheit'
def celsius_to_fahrenheit(c):
    return (c * 9/5) + 32

# Automated Test Cell:
assert celsius_to_fahrenheit(0) == 32.0, "Test failed for 0°C"
assert celsius_to_fahrenheit(100) == 212.0, "Test failed for 100°C"
print("✔ All tests passed!")

If all assert statements execute without an AssertionError, your solution is verified!

Instructor & SuperAdmin Console

Comprehensive administration guide for managing users, installing system-wide packages, auditing workspaces, and reviewing security logs.

Users with super_admin or admin roles see an amber shield Admin button in the top navbar. Clicking it opens the SuperAdmin Dashboard:

1. System Overview

Live health metrics, active kernel process counts, memory utilization, and real-time user session activity.

2. User & Role Management

Manage users, assign roles (student, instructor, admin), suspend accounts, or reset user access.

3. System Packages Manager

Install or uninstall Python packages across the entire server environment with authorized package governance.

4. Workspaces & File Audit

Inspect tenant file trees, check quota allocations, and enforce organizational data retention policies.

5. Runtime & Kernel Controls

View running kernel sessions across all containers and force-restart hung kernels to reclaim server RAM.

6. Security Audit Logs

Immutable event log recording all logins, privilege escalations, package installations, and system configuration changes.

AI Coding Assistant

Harness the built-in AI assistant to generate Python code, explain tricky tracebacks, and insert working code directly into your notebook.

Accessing the AI Assistant

  1. Click the AI Assistant tab located in the Right Collapsible Panel.
  2. Type your question or coding request into the chat box (e.g., "How do I filter rows with missing values in Pandas?").
  3. The AI streams an explanation alongside a tested code snippet.
  4. Click Insert in Notebook to automatically append the code into a new cell on your active notebook canvas!

Keyboard Shortcuts Matrix

Every keyboard shortcut in Python Cloud Studio, for Windows, Linux, and macOS. The same list is available in the app: click Shortcuts in the notebook toolbar.

Run & control

Action Windows / Linux macOS Where
Run cell and stay on it Ctrl + Enter ⌘ + Enter Code cell
Run cell and move to the next one (adds a cell at the end) Shift + Enter Shift + Enter Code cell
Run cell and insert a new code cell below Alt + Enter ⌥ Option + Enter Code cell
Render a Markdown cell Ctrl + Enter or Shift + Enter ⌘ + Enter or Shift + Enter Markdown cell
Stop running code Ctrl + C ⌃ Control + C While a cell runs and no text is selected (otherwise it copies)
Submit a value typed into an input() box Enter Enter Input box under a running cell

Editing code

Action Windows / Linux macOS Where
Comment / uncomment the current or selected lines Ctrl + / ⌘ + / Code cell, .py file editor
Indent (insert 4 spaces, or indent the selected lines) Tab Tab Code cell, file editor
Outdent the current or selected lines Shift + Tab Shift + Tab Code cell, file editor
New line keeping indentation (one level deeper after :) Enter Enter Code cell, .py file editor

Suggestions & function help

Action Windows / Linux macOS Where
Show suggestions and function help Ctrl + Space ⌃ Control + Space Code cell
Move through suggestions ↑ / ↓ ↑ / ↓ Suggestion list open
Accept the highlighted suggestion Enter or Tab Enter or Tab Suggestion list open
Close suggestions, then function help Esc Esc Popup open

Notebook & workspace

Action Windows / Linux macOS Where
Save the notebook (or the open file while you are editing it) Ctrl + S ⌘ + S Anywhere
Show / hide the Files sidebar Ctrl + B ⌘ + B Anywhere
Close dialogs and menus Esc Esc Dialog or menu open
Search this user guide Ctrl + K ⌘ + K This documentation

Troubleshooting Knowledge Base

Step-by-step diagnostic trees and resolution procedures for common operational issues.

Issue: Kernel Status Shows "Disconnected"

Symptom: The status pill in the top navbar shows red Disconnected and code cells will not run.

Solution: Check your local network or backend server. If running locally, ensure uvicorn on port 8765 is active. Refresh your browser tab. Cloud Studio automatically attempts reconnection.

Issue: ModuleNotFoundError Immediately After Installing

Symptom: You ran pip install package in a terminal or cell, but Python says module not found.

Solution: Always use %pip install <package> (with the percent % prefix) inside a code cell. This guarantees the package is installed into the exact Python interpreter running the notebook kernel.

Issue: Code Stuck in Busy State (Infinite Loop)

Symptom: The run button continuously spins and the status remains Python 3 (busy).

Solution: Click the Restart Kernel button in the top navbar. This sends a SIGTERM/SIGKILL signal to the hung process and restarts a clean kernel.

Issue: File Not Found When Reading CSV

Symptom: FileNotFoundError: [Errno 2] No such file or directory: 'data.csv'

Solution: Check the Left Files Sidebar. Confirm the exact spelling and extension of the file. If inside a subfolder, include the folder path (e.g., pd.read_csv("datasets/data.csv")).

Frequently Asked Questions (FAQ)

Answers to the most common beginner, technical, and administration questions.

Q1: Do I need to install Python on my computer to use this?

No! Python Cloud Studio runs entirely in the cloud. All code execution happens on the remote server kernel.

Q2: Will my work be saved if I close the browser?

If you are signed in to a private account, your notebooks and uploaded datasets remain permanently saved in your private workspace. Remember to press Ctrl+S to save recent changes before closing.

Q3: Can I export my notebooks to run on Google Colab or VS Code?

Yes. Open the Notebooks Modal and click Download .ipynb. The downloaded file is a standard Jupyter Notebook v4 file compatible with Google Colab, VS Code, and JupyterLab.

Q4: How do I resize tall code cells?

Hover your cursor over the horizontal drag handle at the bottom of the code cell. Click and drag up or down to set any height between 80px and 800px. The height is saved automatically!

Quick Start Cheat Sheet

High-density, printable quick-reference sheet for everyday Python coding in Cloud Studio.

Python Basics

# Variables & Printing
x = 10
print(f"Value: {x}")

# Lists & Loops
items = [1, 2, 3]
for item in items:
    print(item * 2)

Pandas Essentials

import pandas as pd

df = pd.read_csv("data.csv")
df.head()        # View top 5 rows
df.describe()    # Summary stats
df[df["col"] > 5] # Filter rows

Matplotlib Plotting

import matplotlib.pyplot as plt

plt.figure(figsize=(8, 4))
plt.plot(x, y, label="Trend")
plt.title("Title")
plt.legend()
plt.show()

Comprehensive Glossary

Clear definitions for every core concept, architecture component, and terminology used in Python Cloud Studio.

Kernel
The background Python process that receives code from the web frontend, executes statements in memory, and returns stdout/outputs.
ZeroMQ (ZMQ)
The high-performance asynchronous messaging library used to route commands between the web server and the IPython kernel.
Monaco Editor
The open-source code editor component powering Visual Studio Code and Python Cloud Studio's code cells.
DataTableView
Cloud Studio's interactive table component for sorting, filtering, and exporting Pandas DataFrames.
Diagnostics
Real-time static code analysis that flags syntax errors and missing imports with red squiggly underlines.
Guest Workspace
The zero-login workspace each browser gets: private to that browser, with a copy kept in the browser so work survives a refresh or a return visit.
Private Workspace
The isolated tenant storage directory assigned to a registered user, protected by JWT authentication.

Tutorial A: Hello World & Modern String Formatting

Learn the universal first step in programming: creating variables, formatting strings using Python f-strings, and printing output.

Goal: Write a program that greets the user with their name and displays the current year using Python.

Python
import datetime

user_name = "Alex"
current_year = datetime.datetime.now().year

# Use Python 3.6+ f-strings for clean formatting
greeting = f"Hello, {user_name}! Welcome to Python Cloud Studio in {current_year}."
print(greeting)
Output [1]:
Hello, Alex! Welcome to Python Cloud Studio in 2026.
Pro Tip: Why f-strings?
Always prefer f"..." strings over old-style string concatenation ("Hello " + name). They prevent TypeError when embedding numbers and make your code much easier to read.

Tutorial B: Simple Calculator & Numerical Types

Explore integers, floats, arithmetic operators, and how Python handles mathematical calculations.

Goal: Calculate the monthly payment and total cost of an equipment purchase with tax and interest.

Python
# Define base parameters
item_price = 1200.00
sales_tax_rate = 0.0825  # 8.25%
months = 12

# Calculate totals
total_tax = item_price * sales_tax_rate
total_price = item_price + total_tax
monthly_installment = total_price / months

print(f"Base Price:       ${item_price:,.2f}")
print(f"Sales Tax:        ${total_tax:,.2f}")
print(f"Total Purchase:   ${total_price:,.2f}")
print(f"Monthly Payment:  ${monthly_installment:,.2f} / month")
Output [2]:
Base Price:       $1,200.00
Sales Tax:        $99.00
Total Purchase:   $1,299.00
Monthly Payment:  $108.25 / month

Tutorial C: Lists, Dictionaries, and Loops

Organize collections of real-world information using Python lists and dictionaries, and iterate through them with loops.

Goal: Manage student grade records and compute passing status.

Python
# List of dictionaries representing students
students = [
    {"name": "Liam", "score": 88, "major": "Computer Science"},
    {"name": "Emma", "score": 94, "major": "Data Science"},
    {"name": "Noah", "score": 67, "major": "Engineering"},
    {"name": "Olivia", "score": 91, "major": "Mathematics"}
]

print("--- Course Grade Audit ---")
for student in students:
    passed = student["score"] >= 70
    status = "PASS" if passed else "RETAKE"
    print(f"Student: {student['name']:<8} | Score: {student['score']} | Status: {status}")
Output [3]:
--- Course Grade Audit ---
Student: Liam     | Score: 88 | Status: PASS
Student: Emma     | Score: 94 | Status: PASS
Student: Noah     | Score: 67 | Status: RETAKE
Student: Olivia   | Score: 91 | Status: PASS

Tutorial D: Interactive Pandas Table Exploration

Build a Pandas DataFrame and test the sorting, searching, and exporting powers of the interactive DataTableView component.

Goal: Create a multi-column dataset and use DataTableView's interactive tools.

Python
import pandas as pd

# Create a sample sales dataset
data = {
    "Region": ["North", "South", "East", "West", "North", "South", "East", "West"],
    "Product": ["Laptops", "Desktops", "Tablets", "Phones", "Monitors", "Laptops", "Phones", "Tablets"],
    "Units_Sold": [140, 85, 210, 340, 115, 195, 290, 180],
    "Revenue": [168000, 68000, 105000, 272000, 46000, 234000, 232000, 90000]
}

df_sales = pd.DataFrame(data)

# Evaluating df_sales activates the interactive DataTableView automatically!
df_sales
Try These Interactive Features!
  • Click the Revenue column header to sort highest to lowest.
  • Type North into the search box to filter instantly.
  • Click Copy TSV and paste directly into Excel or Google Sheets.

Tutorial E: CSV Upload & Summary Statistics

Upload a comma-separated values (CSV) file, inspect missing values, and calculate statistical summaries.

Goal: Load a local file and run an automated statistical profile.

Python
import pandas as pd

# Load dataset (upload 'customers.csv' via left sidebar first)
# For this tutorial, we will generate synthetic data:
data = {
    "Age": [22, 35, 58, 41, 29, 63, 38, 47],
    "Annual_Spend": [1200, 4500, 8900, 5200, 3100, 11200, 6400, 7100],
    "Loyalty_Years": [1.0, 3.5, 7.0, 4.0, 2.0, 10.0, 4.5, 5.0]
}
df = pd.DataFrame(data)

# Generate 5-number statistical summary
df.describe()

Tutorial F: Matplotlib Chart Creation

Generate an attractive comparative bar chart showing quarterly business revenue.

Python
import matplotlib.pyplot as plt

quarters = ["Q1 2025", "Q2 2025", "Q3 2025", "Q4 2025", "Q1 2026"]
revenue_millions = [3.2, 4.1, 4.8, 6.2, 6.9]
colors = ["#93c5fd", "#60a5fa", "#3b82f6", "#2563eb", "#1d4ed8"]

plt.figure(figsize=(8, 4.5), dpi=100)
bars = plt.bar(quarters, revenue_millions, color=colors, width=0.55)

plt.title("Quarterly Revenue Growth (USD Millions)", fontsize=13, fontweight="bold", pad=12)
plt.ylabel("Revenue ($M)", fontsize=11)
plt.ylim(0, 8)
plt.grid(axis="y", linestyle="--", alpha=0.5)

# Add values above each bar
for bar in bars:
    height = bar.get_height()
    plt.annotate(f"${height:.1f}M",
                 xy=(bar.get_x() + bar.get_width() / 2, height),
                 xytext=(0, 4), textcoords="offset points",
                 ha="center", va="bottom", fontweight="bold")

plt.tight_layout()
plt.show()

Tutorial G: Find & Fix Syntax Error

Experience Cloud Studio's real-time squiggly line diagnostics and learn how to resolve syntax mistakes.

Scenario: You type code with an unclosed bracket. Notice the red squiggly line appears in the editor.

Python (Corrected)
# Notice how brackets must always balance in pairs () [] {}
temperatures = [72, 68, 75, 79, 81]  # All brackets closed

avg_temp = sum(temperatures) / len(temperatures)
print(f"Average temperature: {avg_temp:.1f}°F")

Tutorial H: Debugging a Function with breakpoint()

Step into a running function, inspect its local parameters, and confirm variable values before they cause bugs.

Python
def calculate_bonus(salary, performance_score):
    multiplier = 0.05
    if performance_score > 90:
        multiplier = 0.15
    elif performance_score > 80:
        multiplier = 0.10
        
    bonus = salary * multiplier
    return bonus

# Test with employee record
bonus_payout = calculate_bonus(95000, 92)
print(f"Calculated Bonus: ${bonus_payout:,.2f}")

Tutorial I: Save & Download Your Work

Protect your progress with keyboard shortcuts and export your notebook to your local computer.

  1. Press Ctrl + S to save all recent cell additions and outputs.
  2. Click the Notebooks button in the top navbar.
  3. Find your current notebook card and click Download .ipynb.
  4. The file is saved to your computer, ready to submit to an instructor or open in VS Code.

Tutorial J: End-to-End Multi-Cell Data Pipeline

Connect three code cells together: Cell 1 ingests data, Cell 2 cleans and computes KPIs, and Cell 3 charts the results.

Cell 1: Ingest Raw Data

import pandas as pd
import matplotlib.pyplot as plt

raw_data = {
    "Month": ["Jan", "Feb", "Mar", "Apr", "May", "Jun"],
    "Signups": [1200, 1450, 1900, 2300, 2800, 3400],
    "Churn": [45, 52, 60, 71, 80, 89]
}
df_metrics = pd.DataFrame(raw_data)
print("✔ Cell 1 Complete: Raw metrics ingested.")

Cell 2: Compute Net Growth

# Notice df_metrics is shared across cells!
df_metrics["Net_Gain"] = df_metrics["Signups"] - df_metrics["Churn"]
df_metrics["Growth_Pct"] = df_metrics["Net_Gain"].pct_change() * 100
df_metrics

Cell 3: Visualize Growth Trend

plt.figure(figsize=(7.5, 3.8))
plt.plot(df_metrics["Month"], df_metrics["Net_Gain"], marker="o", color="#2563eb", linewidth=2.5)
plt.title("Net Monthly User Acquisition", fontweight="bold")
plt.ylabel("Net New Users")
plt.grid(True, linestyle=":", alpha=0.6)
plt.tight_layout()
plt.show()