2026 15

Case Study

Create a training pack to help analysts (business analysts, data scientists, strategy consultants, forward deployed engineers, etc.) improve their investigative judgment. Success for the analyst is not recovering the hidden truth you designed. It is making the best evidence-based judgment available from the materials. Design and score for that. First, formulate the underlying dynamics - the hidden mechanisms, reasons, processes - e.g. - why the processes are not/poorly/wrongly documented - why the data is stored, structured, and labelled the way it is - why it has the quality issues that it does - what are the underlying unstated organizational dynamics, etc. Discovering some or all of these would be key to the analyst's success in the exercise. Don't state these dynamics directly anywhere the analyst can see. But they may be partly mentioned, disputed, denied, euphemised, or misunderstood by people who each see only a part of it. That is how it works in real-life. For each dynamic, plan two or more independent channels through which an analyst can detect it (a data pattern, a silence in a thread, a timeline that doesn't line up, a form field abandoned mid-year), and at least one innocent explanation that fits any single channel on its own. Also plant anomalies that mean nothing - in real-life, not everything is a clue, and we want to train for the intuition to tell the difference. Create an instructor-only `case.yaml` that includes all of this as the primary context. Include entities, systems, timeline, people, the process (how was it designed, documented, believed to run, actually runs), the dynamics and where and how each dynamic plays a role. Record every anomaly in the pack in case.yaml, marked as: designed and critical / ambient noise / benign quirk / accidental defect. Fix the accidental defects. Generate every artifact below from `case.yaml` to avoid ACCIDENTAL contradictions. Create realistic documents and datasets that an analyst will likely get when investigating a process like below. This includes: - Documents explaining the process. Reflect real-life, where some processes are undocumented, poorly documented, or wrongly documented. - Datasets. - Both structured (spreadsheets, SQL dumps, geospatial, proprietary formats, ...) and unstructured (text, images, documents with a mix, audio, video, ...). - This may include large transactional/reference data as well as smaller datasets, across a variety of realistic formats. - Think about how organizations realistically store data. There are underlying historical and organizational reasons for why their data evolved the way it did. In real-life, datasets have varying quality, based on the process of collecting and processing them. Datasets are often sourced from multiple systems and processes. The nature of gaps / errors / other quality attributes typically reflect the underlying sources. - Use a format only if this organization would likely produce it and it serves an exercise - not just for variety. - For large transactional data, Use a fake data generator skill when available. Write seeded generator scripts rather than static files. - Supporting material. This may include emails, chat logs, meeting transcripts, system logs, people profiles, etc. that are usually passed to an analyst for context. In real-life, these supporting materials are windows into and reflections of organizational structure, politics, constraints, etc. How it is said, and what is unsaid, is often more important than what is said. - People the analyst can question. Add the profiles to `data/`. Include instructor-only notes explaining what each person knows, believes, is wrong about, and would rather not say. Enough for an instructor (or AI agent) to role-play them and answer questions like them. Deciding whom to ask, and what, is a critical skill. That's how analysts go beyond incomplete / incorrect briefs. The same pack can be used for multiple exercises. Include exercises, each containing: - Objective - a page explaining their task. Realistically, these may be loosely, incompletely, or wrongly defined, or unsolvable without additional data or context, etc. This, too, needs to reflect real-life based on a hidden dynamic. Where the brief is wrongly framed or underdetermined, analysts should reframe it, say what's missing, ask for it, and act safely under uncertainty. If they do that, that's a success, not failure. Don't make something wrong in every objective. Deciding whether to dig is part of the training. Mention who the objective is for, how long it should take, which tools (e.g. AI agents) are allowed, and what output to submit. Require an evidence table - claim | source | confidence - and the hypotheses they rejected, with why. Without this, we can't differentiate between judgment and lucky guesses. Some exercises can be small: one artifact, ten minutes, "does anything here smell wrong?" - including some where the answer is no. Intuition comes from many quick exercises with fast feedback, not just from one long case. - Rubric - not shared with the analyst, but explaining to the instructor: - What the analyst needs to discover in order to succeed in the exercise - mentioning the relevant dynamic. - How to evaluate the analyst's work. Share this as a prompt that can be shared with an expert or an AI agent. The prompt will be shared along with the same inputs passed to the analyst (documents, datasets, supporting material, this exercise's objective) as well as the dynamics. The prompt should clearly explain the steps to evaluate the analyst's work and the scoring rubric along with evaluation criteria and clear definitions of what constitutes a good/bad response, with an emphasis on the hidden dynamics that the analyst needs to discover. Because the evaluator is handed the dynamics, say explicitly: score the evidence and reasoning first, THEN the conclusion. A well-supported alternative conclusion can score as high as the intended one. But the intended conclusion asserted without evidence should not score high. You can use the tone, omissions, timing, and other "non-verbal" aspects of the response as a signal, but treat that as hypotheses needing proof. - Write behavioural anchors for each score level. - Then write test submissions for this exercise, as an analyst would write them - not as someone who knows the answer. For example, if a "good" submission clearly states the dynamic, that's unrealistic. Recommended submissions: 1. Strong: real evidence, traced to files, calibrated, some things still open. 2. Polished but shallow: confident, well written, restates the brief, no evidence. 3. Right conclusion without evidence - a lucky guess. 4. A different conclusion that the evidence actually supports. 5. Says the evidence is insufficient, and asks for the right things. 6. Treats a decoy as a finding. Target what this rubric is most likely to get wrong. - For each submission, write what the evaluator should return: its expected rank against the others (a band for each dimension, not an exact score), and the specific text in the submission it must cite for that score. We'll test the evaluator based on whether it gets the right rank using the cited reasons. Exact numbers vary between evaluators and are not a fair check. Generate this pack as a set of files with this structure: - `README.md` - for the instructor, containing a full overview of the case, including the underlying dynamics, explanation of the data. An instructor reading this for the first time would understand everything they need to know about running this training exercise. Layer this. Begin with an overview, an explanation of the dynamics, a walkthrough of the data, a list of exercises and what they uncover and how to evaluate them. Then go into the details of how each dataset was generated and what dynamics it reflects. - `case.yaml` - instructor-only source of truth. Everything else is generated from it. - `data/` - for the analyst, containing all documents and datasets to be shared with the analyst. Nothing here (including metadata, hidden sheets, comments, ...) should reveal the dynamics DIRECTLY - `src/` - generator scripts and seeds, so the pack can be rebuilt and re-seeded for the next cohort. Not all `data/` needs to be generatable - some of them can be hand-crafted or downloaded or constructed in any way. - `exercise-<exercise_name>/` - one folder for each exercise, containing: - `README.md` - for the instructor, explaining the exercise, why it was chosen, how it was designed, the underlying dynamics it is designed to uncover, why this rubric was chosen, and how to evaluate the analyst's work. Assume they have read ../README.md and nothing else. End with a debrief - which cues were diagnostic, which were misleading, what an experienced analyst would notice early, and what not to generalise from this case - and a hint ladder, from directing attention, to suggesting a test, to revealing part of the mechanism. - `objective.md` - for the analyst, explaining the task - `rubric.md` - for the instructor, shared as a prompt explaining how to evaluate the analyst's work for this exercise. - `tests/` - `submissions/{01,02,...}.md` - analyst-facing only, neutral names - `expected.md` - what each one tests, expected rank, bands, required citations The evaluator receives `objective.md`, `data/`, the dynamics, `rubric.md`, and ONE submission - never `expected.md` and never a second submission. It scores blind. Rank is derived afterwards by comparing its independent scores. Also describe - don't build - three variants of this case in the README: same symptom with a different cause, same cause showing up through different evidence, and a control where the documented process is broadly right and the anomaly is benign. Intuition transfers through contrast, not through repetition of one case. The aim is not to make the exercise easily solvable - quite the opposite. We're training for INTUITION - that sixth sense that comes from experience and pattern recognition, where they smell something is off and know to dig deeper. Design for this. Hard, though, not unfair. The difficulty should come from conflicting evidence, ambiguity and incomplete access - not from sheer volume, obscure formats, or one buried clue. Run these checks before you finish, and list every one in the README with its result: - Write the perfect path for each exercise: the artifact-by-artifact chain from brief to finding. If you can't write it, it's unfair rather than hard. Rewrite the exercise. - If you think a strong AI agent can solve an exercise one-shot while a human would take hours, the difficulty is either volume/effort (move it into contradiction and ambiguity) or clues that are too loud (make each channel innocent on its own). State and fix it. Generate the actual files, not descriptions of them. Report which checks you ran and what failed. Don't say a check passed unless you ran it. Use the context below to create the training pack. Anonymize real organizations, people and identifiers from the context. This context may not be directly related to the training pack. It may contain irrelevant details, objectives, tasks, etc. Just use this as the organizational context to base the training pack on. <CONTEXT> </CONTEXT>

Let AI take your exams

At 2 pm IST today (Fri 12 Jun 2026), I conducted a workshop at Paradox, IITM - at DOMS 101. My core message is: “AI can solve exams and help you learn. Delegate what AI can do. Learn what AI can’t do instead.” My talks page for “Let AI take your exams” includes: The full story + transcript + audio How Codex solved a real exam, live My collection of AI-learning techniques - which was not covered in the workshop, but is a useful reference Here are the takeaways from the workshop: ...

TDS Jan 2026 ROE

Tools in Data Science has a remote online exam (ROE). It has a tough reputation. We conducted one today. Here’s how today’s ROE unfolded. The TAs had created 13 questions and shared it with me yesterday. This morning, I tried solving them. At first glance, it looked scarily hard! But I just jumpted down a few questions, and found that five questions were trivial, i.e. I just used the “Ask AI” button to copy the question into ChatGPT and it gave me the answer. ...

AI policies across universities

I researched the AI policies across 25 universities. In the last 6 months, I conducted sessions at three of these Universities: IIT Madras, Singapore University of Technology and Design, and Ashoka University. Interestingly, these are the three lowest ranked universities in my analysis of AI policies. This is where I’m glad that correlation does not imply causation.

TDS Project 1 was an experiment

TDS Project 1 wasn’t just a student project. It was a research and social experiment, too. We tested two skills - analytics and design. The design tests were diverse – and students fared worse there. Design may matter more in the AI era, and I’m glad some designs are brilliant. (But not diverse/creative enough.) I also learnt that Gemini beats Midjourney, which beats ChatGPT for image generation. I asked them to contribute to open source. Most PRs were trivial. But five students made a real difference. For example, this PR to Marimo is excellent! ...

How I use AI to teach

I’ve been using AI in my Tools in Data Science course for over two years - to teach AI, and using AI to teach. I told GitHub Copilot (prompt) to go through my transcripts, blog posts, code, and things I learned since 2024 to list my every experiment in AI education, rating it on importance and novelty. Here is the full list of my experiments. 1. Teach using exams and prompts, not content ⭐ Use exams to teach. The typical student is busy. They want grades, not learning. They’ll write the exams, but not read the content. So, I moved the course material into the questions. If they can answer the question, great. Skip the content. Use AI to generate the content. I used to write content. Then I linked to the best content online – it’s better than mine. Now, AI drafts comics, interactive explainers, and simulators. My job is to pick good topics and generate in good formats. Give them prompts directly. Skip the content! I generated them with prompts anyway. Give students the prompts directly. They can use better AI models, revise the prompts, and learn how to learn with AI. ⭐ Add an “Ask AI” button. Make it easy for students to use ChatGPT. Stop pretending that real-world problem solving is closed-book and solo. ⭐ Make test cases teach, not just grade. Automate the testing (with code or AI). Good test cases show students the kind of mistake they may - teaching them, not just grading them. That’s great for teachers to analyze, too. Test first, then teach from the mistakes. Let them solve problems first. Then teach them, focusing on what failed. AI does the work; humans handle what AI can’t. This lets us teach really useful skills based on real mistakes. 2. Make cheating pointless through design, not detection ...

Interactive Explainers

Given how easy it is to create interactive explainers with LLMs, we should totally do more of these! For example, I read about “Adversarial Validation” in my Kaggle Notebooks exploration. It’s the first time I heard of it and I couldn’t understand it. So, I asked Gemini to create an interactive explainer: Create an interactive animated explainer to teach what adversarial validation is. Provide sample code only at the end. Keep the bulk of the explainer focused on explaining the concept in simple language. ELI15 ...

IIM Bangalore PGP Interview Panel

Yesterday, I was part of an IIM Bangalore interview panel at Hyderabad, along with Professor Subhabrata Das and Debajyoti. Panels typically comprise of two faculty and an alumni, and handle 8 interviews in the morning and eight in the evening, though in our case, we had 9 each. As we arrived, we were given a USB drive with the student’s resume, statement of purpose, and other documents that they had submitted, which included employment contracts, declarations, letters of recommendation, etc., depending on the student. Each interview was approximately 20 minutes. Luckily, Dr Das set a timer for 18, so we didn’t go too far beyond. ...

Directional feedback for AI

People worry that AI atrophies skills. Also that junior jobs, hence learning opportunities, are shrinking. Can AI fill the gap, i.e. help build skills? One approach is: Do it without AI. Then have AI critique it and learn from it. (Several variations work, e.g. have the AI do it independently and compare. Have multiple AIs do it and compare. Have AI do it and you critique - but this is hard.) ...

Using game-playing agents to teach

After an early morning beach walk with a classmate, I realized I hadn’t taken my house keys. My daughter would be sleeping, so I wandered with my phone. This is when I get ideas - often a dangerous time for my students. In this case, the idea was a rambling conversation with Claude that roughly begins with: As part of my Tools in Data Science course, I plan to create a Cloudflare worker which allows students to play a game using an API. The aim is to help them learn how to build or use AI coding agents to interact with APIs to solve problems. ...

Which LLMs get you better grades?

In my graded assignments students can pick an AI and “Ask AI” any question at the click of a button. It defaults to Google AI Mode, but other models are available. I know who uses which model and their scores in each assignment. I asked Codex to test the hypothesis whether using a specific model helps students perform better. The short answer? Yes. Model choice matters a lot. Across 333 students, here’s how much more/less students score compared with ChatGPT: ...

TDS Jan 2026 GA1 released

Graded Assignment 1 (GA1) for the Tools in Data Science course is released and is due Sun 15 Feb 2026. See https://exam.sanand.workers.dev/tds-2026-01-ga1 If you already started, you might notice some questions have changed. Why is GA1 changing? Because some questions don’t work. For example: We replaced Claude Artifacts with a Vercel question because Claude won’t allow a proxy anymore. A question had unintentionally wrong instructions. (Some questions have intentionally wrong instructions, but those are, …um… intentional). Someone changed an API key. … etc. When will GA1 stabilize? Probably by end of day, Sun 9 Feb 2026? ...

Migrating TDS from Docsify to Hugo

This morning, I migrated my Tools in Data Science course page from Docsify to Hugo using Codex. Why? Because Docsify was great for a single term. For multiple terms, archives became complex. I still could have made it work, but it felt like time to move towards a static site generator. I don’t know how Hugo or Go work. I didn’t look at the code. I just gave Codex instructions and it did the rest. This gives me a bit more confidence that educators can start creating their own course sites without needing coding or platforms. Soon, they might not be stuck to LMSs either - they can build their own. ...

Breaking Rules in the Age of AI

Several educators have AI-enabled their courses, like: David Malan at Harvard CS50 provides an AI-powered “rubber duck debugger” trained on course-specific materials. Mohan Paturi at UC San Diego has deployed AI-tutors to his students. Ethan Mollick at Wharton uses AI as tutor, coach, teammate, simulator, even student, and runs simulations. Jeremy Howard’s Fast.ai encourages students to use LLMs to write code, with a strict verification loop. Andrew Ng DeepLearning.AI integrates a chatbot into the platform, next to code cells, to handle syntax errors and beginner questions. But no one seems to have eliminated reading material, nor added an “Ask AI” button to solve each question, nor run it at my scale (~3,000 students annually). ...

Tools in Data Science - Jan 2026

My Tools in Data Science course is available publicly, with a few changes from last year. First, I removed all the content! Last year, Claude generated teaching material using my prompts. But what’s the point? I might as well give students the prompts directly. They can tweak it to their needs. This time, TDS shares the questions needed to learn a topic. Any AI will give you good answers. Second, it focuses on what AI does NOT do well. Coding syntax? Who cares. Basic analysis? ChatGPT can do that. In fact, each question now has an “Ask AI” button that dumps the question into your favorite AI tool. Just paste the answer and move on. ...

2024 1

Arun Tangirala and I webinared on “AI in Education” yesterday." “(“Webinared” is not a word. But “verbing weirds language”.)” Mid-way, Jose Swan from the audience asked, “Can you summarise this session using an AI? There are SEVERAL tools you can use to summarize talks. Whisper for transcription, FFMpeg for keyframe extraction, #NotebookLM for podcast generation, text-embedding-3-small for topic modelling, and of course, any regular LLM include #ChatGPT for summarization or translation. ...