10-Day Studio Index
Brick by Brick — The Mad Hatter’s Guide
1 Introduction
This R-based Studio is 10 FULL days of studio work. I intend to use a “Brick by Brick” approach, where a new concept, or a piece of code, are introduced for say 15 minutes max, and the students get to play while I walk around the class to meet them at individual group tables to clarify doubts. Any discovery made by the students is immediately announced and braodcast to all groups. The students use these “bricks” to create their own metaphorical R based Analysis / Viz wall, complete with creepers and Rick-Morty colour palettes, all using RStudio and Quarto + Github and Netlify.
2 How to use this page
Each brick is at most 15 minutes of introduction from me. Then they play. While I walk the tables.
A discovery at one table is announced to the room and becomes a brick for everyone.
By the end of Day 10, each group has one Quarto site on GitHub + Netlify: an analysis / viz wall, with creepers, a palette that is theirs, and at least one claim they can defend.
Rule of the wall: a brick that does not appear in their question, their data, or their map does not count.
My Literary asides and calling them “peasants” stay. They are part of my rhythm.
3 Day 1 — What data even is
Wall by evening: one Quarto page, one dataset they chose or were handed, variables named as Quant / Qual.
| Brick | 15-minute target | Make |
|---|---|---|
| Tools on the bench | RStudio + Quarto file opens, one chunk runs, they know ⌘/Ctrl + Enter | Render hello.qmd with their names as the title |
| Sushi groups | A “characteristic” reorganises the room; they can say what moved | Write 5 lines: what grouped you, what would have grouped you differently |
| Kandinsky nouns | Concrete vs abstract; which abstracts are measurable | List 8 abstract nouns from the room; circle the ones that could become variables |
| Nature of data | Experiment vs observation; a row is a case | On their dataset, point to one row and say what the case is |
| Variable types | How many / what kind / who → Ratio, Interval, Ordinal, Nominal | Tag every column in their table as Quant or Qual (and subtype) |
| Tidy data | Column = variable, row = case, cell = value | Sketch the tidy shape of a messy table from their phones (timetable, expenses, Swiggy) |
Steal-this cue: first peasant who notices that a number (BirthOrder, Year, PIN) is still Qual.
4 Day 2 — Look, then summarise
Wall by evening: two plots + one summary table on the Quarto page. Git repo exists, even if ugly.
| Brick | 15-minute target | Make |
|---|---|---|
| Inspect | glimpse, head, missingness, “what would I ask this table?” |
Three questions the data could answer; one it cannot |
| Grammar of a graph | Aesthetic ↔︎ variable; geom as metaphor | Same two variables, two different geoms; say which metaphor is honest |
| First scatter / bar | One working gf_ / ggplot from their data |
Plot that answers one of yesterday’s questions |
| Favstats | Mean, median, sd as descriptions, not verdicts | One sentence: “typical X is …, but …” |
| Counts | Tables of Qual variables; a bar that is a count | A count bar with readable labels, not default Var1 |
| Git born | git init / GitHub repo / first commit |
Push the Quarto page. Broken is allowed. |
Steal-this cue: first group that puts units in the axis title without being told.
5 Day 3 — Groups, amounts, and “compared to what?”
Wall by evening: a grouped comparison. Netlify URL live (can be ugly).
| Brick | 15-minute target | Make |
|---|---|---|
| Quantities | A number that means amount; a plot that respects scale | One plot of a Quant vs a Qual they care about |
| Groups | Split-apply-combine as a design move, not a slogan | Same plot, faceted or filled by a group that changes the story |
| Colour = Qual | Default qualitative scale; legend that can be read | Recolour yesterday’s plot by a categorical variable |
| Colour = Quant | Sequential vs diverging; when a midpoint matters | Recolour the same plot by a continuous variable; caption why the scale type changed |
| Netlify | Drag-and-drop or Git-connected deploy | Paste the live URL at the top of the Quarto page |
| Caption as claim | Title + subtitle + caption do rhetorical work | Rewrite the title so it is a sentence, not a variable name |
Steal-this cue: first peasant who refuses a rainbow scale on ordered data.
7 Day 5 — Artful stuff (the creepers)
Wall by evening: the page looks designed: type, annotation, highlight, scale. Creepers allowed.
| Brick | 15-minute target | Make |
|---|---|---|
| Colour with intent | Brewer / paletteer; qual vs seq vs div again, now as craft | Swap palette; keep accessibility in the caption (can a colour-blind peasant read this?) |
| Fonts in ggplot | One display face, one text face; showtext if needed |
Title in one family, axis in another — no ransom-note third font |
| Annotate | annotate, labels, a box around the thing that matters |
One sentence on the plot, not only in the Quarto prose |
| Highlight | Grey the field, colour the point of argument | A “this, not that” version of an earlier chart |
| Scales | Axis limits, log or not, % and ₹ | Fix one dishonest default scale from Days 2–4 |
| Patchwork | Two plots as one argument | A two-panel figure with a shared title that is the claim |
Steal-this cue: first peasant who uses annotation instead of a third colour.
8 Day 6 — Space (the city is a drawing)
Wall by evening: one static map and one leaflet of their place. Listing times on the site are a lie; the labs are the quarry.
| Brick | 15-minute target | Make |
|---|---|---|
| Map as mark | Choropleth vs cartogram vs symbol — what is the mark doing? | Point at an example and name the mark |
| Bounding box | Klokan or getbb("…, Bangalore") |
A bbox for a place they can walk to |
| OSM tags | One key–value family (amenity or highway or natural) | Download one layer; write .gpkg; do not hammer OSM |
| Points / lines / polygons | pluck the geometry they actually need |
Plot that one layer; caption the geometry type |
| Grammar of a static map | ggplot + geom_sf or tmap — roads + one more layer |
A dressed static map (no default grey soup) |
| Leaflet brick | Marker vs popup vs label; pixel radius vs metres | Interactive map with their points and one honest popup |
Optional late brick (only if a table asks): contours, or Rapid Editor so they add a missing bench to OSM.
Steal-this cue: first group that maps something they verified with their feet.
9 Day 7 — No free hunch (morning field, afternoon claim)
Wall by evening: a written hunch, a sample, a plot, a test that matches the question, a sentence they will stand behind.
9.1 Morning — design the hunt (bricks)
| Brick | 15-minute target | Make |
|---|---|---|
| Hunch as a sentence | Not a vibe. A claim that could be false | Write the hunch on the wall in one line |
| Question type | Mean difference / several means / proportion / association | Circle the type; do not pick the test yet |
| Sample | Who, how many, how they will not cheat the sample | A 6-line protocol: population, sample, question, recording sheet |
| Ethics brick | Consent, no names on the site, subgroups large enough | One line in the Quarto: how people were asked |
Then they collect. You walk. You do not lecture.
9.2 Afternoon — the card (do not repeat ANOVA at every table)
Hunch → question type → test
| If the hunch is… | Question type | Reach for |
|---|---|---|
| Group A’s typical value differs from Group B | Two means | Two-sample test + a plot of both distributions |
| Three or more groups differ (B.Des / B.Voc / B.Cra, three shows, …) | Several means | ANOVA + a grouped plot; then “which pairs?” only if they ask |
| More than half of peasants think X | One proportion | prop.test against 0.5 (or the rate they named) |
| Two groups have different rates (Art vs Design, tattoo yes/no by gender) | Two proportions | prop.test on a 2×2 |
| Category vs category (pronouns × college, …) | Association | Chi-square + a mosaic or stacked bar |
| “Looks bigger” with no group | Stop | That is EDA. Do not p-value a vibe |
| Brick | 15-minute target | Make |
|---|---|---|
| Match the card | They can point at the row of the card that is theirs | Write “we used ___ because the question was ___” |
| Plot before p | The figure should make the test unsurprising | The comparison plot above the p-value |
| Uncertainty | A interval or a plain-language “this could still be noise” | One sentence that a parent could read |
| Broadcast | First correct mismatch (“wrong test”) is announced | The mismatch becomes a sticky note on the card |
Steal-this cue: first peasant who changes the hunch after seeing the sample, and says so.
10 Day 8 — Workflow as craft
Wall by evening: the site has a structure: Welcome, Data, Viz, Claim, Map. Commits that a stranger could follow.
| Brick | 15-minute target | Make |
|---|---|---|
| Quarto as document | YAML, sections, embed of figures, one bibliography item |
A contents list that is the wall’s rooms |
| Code that can be replayed | Seed, data path, “run from here” notes (especially OSM) | A chunk a classmate can run without you |
| Git as history | Commit messages that say why | Five commits that are not all update |
| AI as apprentice | Prompt in English (or Kannada, Tamil, …) for one stuck brick | Paste the prompt and the chunk they kept; they must understand it |
| Refactor | Kill one duplicate plot; keep the one that argues | Before / after in the repo |
Steal-this cue: first group whose commit message is a claim, not a file name.
11 Day 9 — Compose the wall
No new concept unless a table is stuck. You introduce a brick only on demand (facets, ggrepel, a better map tile, a pairwise test).
| Brick | 15-minute target | Make |
|---|---|---|
| The question, again | One question at the top of the site | Delete pages that do not serve it |
| Argument order | Data → see → claim → map or test as needed | Reorder sections so a critic can walk them |
| Creepers | Ornament that still points | One decorative layer that would be missed if removed — or remove it |
| Accessibility pass | Contrast, alt text, colour not the only channel | A version that works in greyscale or a second encoding |
| Critique brick | 10 minutes per group, claim first, syntax last | Three notes from another group, one of which they accept |
Steal-this cue: a palette, annotation, or OSM tag from another table, credited on the page.
12 Day 10 — Publish and stand behind it
| Brick | 15-minute target | Make |
|---|---|---|
| Netlify final | Custom name, working links, rendered Quarto | Live URL on the board |
| The 90-second defence | Hunch or question, what they did, what they will not claim | Spoken, no slides required |
| Known limits | Sample, missingness, the test they did not run | A Limits section of 5–8 lines |
| Gift to the next batch | One steal-this | A palette snippet, a map tag, or an annotation trick, with their names |
| Close | What brick they will reuse in a studio that is not this one | One line in the README |
13 Steal-this strip
(Pin discoveries here as the days happen. Previous batches seed the first row.)
| Day | Who | Brick they invented | Where it lives |
|---|---|---|---|
| 3 | — | — | — |
| 5 | — | — | — |
| 6 | — | — | — |
| 7 | — | — | — |
14 Honest times for Space
The course listing understates the quarry. Use these as studio times, not reading times:
| Page | What it is | Studio use |
|---|---|---|
| Space (hub) | Door, not a lesson | 2 minutes: “we are going in here” |
| Introduction to Maps | Marks: choropleth / cartogram / symbol | 1 brick |
| What is Vector Data? | Slides + CRS pointers | 1 brick or homework |
| The Grammar of Maps | The quarry | 4–5 bricks across Day 6, not one sitting |
| Interactive Maps with leaflet | Second quarry | 2 bricks |
| Contour Maps | Optional ledge | Only if a table walks up to it |