<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>assessment-design on S Anand</title>
    <link>https://www.s-anand.net/blog/tag/assessment-design/</link>
    <description>Recent content in assessment-design on S Anand</description>
    <generator>Hugo -- 0.164.0</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 05 Apr 2026 19:04:37 +0800</lastBuildDate>
    <atom:link href="https://www.s-anand.net/blog/tag/assessment-design/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>TDS Jan 2026 ROE</title>
      <link>https://www.s-anand.net/blog/tds-jan-2026-roe/</link>
      <pubDate>Sun, 05 Apr 2026 19:04:37 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/tds-jan-2026-roe/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://tds.s-anand.net/&#34;&gt;Tools in Data Science&lt;/a&gt; has a remote online exam (ROE). It has a tough reputation. We conducted one today.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s how today&amp;rsquo;s &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe&#34;&gt;ROE&lt;/a&gt; unfolded.&lt;/p&gt;
&lt;p&gt;The TAs had created 13 questions and shared it with me yesterday. This morning, I tried solving them.&lt;/p&gt;
&lt;p&gt;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 &amp;ldquo;Ask AI&amp;rdquo; button to copy the question into ChatGPT and it gave me the answer.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-decode-layered-server&#34;&gt;06. Layered Encoding Challenge&lt;/a&gt; (2.0) is one-shot: &lt;a href=&#34;https://chatgpt.com/share/69d22d83-0228-83a0-87ec-20f6fe3cc3d9&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1b323-0858-839f-87c0-11923dbb2e6c --&gt;&lt;/li&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-region-containing-point-server&#34;&gt;07. Region Containing Point&lt;/a&gt; (1.0) is one-shot: &lt;a href=&#34;https://chatgpt.com/share/69d22d83-0228-83a0-87ec-20f6fe3cc3d9&#34;&gt;ChatGPT - see second chat&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1b323-0858-839f-87c0-11923dbb2e6c --&gt;&lt;/li&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-broken-json-server&#34;&gt;10. Fix Broken JSON File&lt;/a&gt; (1.0) is one-shot: &lt;a href=&#34;https://chatgpt.com/share/69d22d85-5f70-8399-b517-25704905575e&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1bbd1-ab04-839e-80cb-5d3241e19d05 --&gt;&lt;/li&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-cross-lingual-entity-disambiguation-server&#34;&gt;11. Cross-entity disambiguation&lt;/a&gt; (1.0) is one-shot: &lt;a href=&#34;https://chatgpt.com/share/69d22d86-f74c-83a1-856a-5a61489cf959&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1bc1c-c7d8-839e-b7f3-2b37aa28dd71 --&gt;&lt;/li&gt;
&lt;li&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-asciirec-server&#34;&gt;13. Record Terminal Session with asciinema&lt;/a&gt; (0.5) is one-shot: &lt;a href=&#34;https://chatgpt.com/share/69d22d89-82a0-83a0-83cd-845e053a02a8&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1bff0-1d88-8399-95da-393a2f489210 --&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For another four, I needed to just make sure I uploaded the files or HTML:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-regex-golf-server&#34;&gt;03. Regex Golf Challenge&lt;/a&gt; (2.0) is one-shot but it&amp;rsquo;s better to download and upload the text files, maybe, than copy-paste: &lt;a href=&#34;https://chatgpt.com/share/69d22e6a-0808-839f-a4f5-ae514a0a94d5&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1c08f-b764-839a-8027-34fe23658f5a --&gt;&lt;/li&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-maze-solver-server&#34;&gt;04. Maze Solver with Constraints&lt;/a&gt; (2.0) is one-shot but needs you to upload the image and a good vision model: &lt;a href=&#34;https://chatgpt.com/share/69d1c1c6-1b08-839e-af47-9b2cbab60985&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1c013-75c4-83a0-ada4-22b68f89d79b --&gt;&lt;/li&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-cipher-trail-server&#34;&gt;05. Cipher Trail&lt;/a&gt; (2.0) is one-shot but needs you to provide the secret HTML: &lt;a href=&#34;https://chatgpt.com/share/69d22e6c-26f4-83a0-bb21-a3bcee77e163&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1bd55-6b80-839d-9dfd-dc1de798fc69 --&gt;&lt;/li&gt;
&lt;li&gt;🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-trick-question-server&#34;&gt;12. Simple Question&lt;/a&gt; (0.5) needs you to provide the secret HTML: &lt;a href=&#34;https://chatgpt.com/share/69d22e6c-efd0-8398-8823-49f1130defd2&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1bed0-717c-8398-8498-c467b03a5ef1 --&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Two questions confused ChatGPT a bit, and it needed some nudges. There is real learning here.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🟠 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-rename-files-server&#34;&gt;08. Reorganize Files with Shell Commands&lt;/a&gt; (1.0) is hard because of Unicode issues and the extra README.md students should delete. &lt;strong&gt;Asking for variations&lt;/strong&gt; is the learning: &lt;a href=&#34;https://chatgpt.com/share/69d22ed6-331c-8399-8848-9cb3cec90e96&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1b9ab-980c-8398-846c-c3357793b8ee --&gt;&lt;/li&gt;
&lt;li&gt;🟠 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-python-refactor-server&#34;&gt;09. Refactor Python Code with VS Code&lt;/a&gt; (1.0) takes few attempts (question is imperfect, intentionally) but error messages are excellent, so &lt;strong&gt;iterative feedback&lt;/strong&gt; is the learning: &lt;a href=&#34;https://chatgpt.com/share/69d22ed9-9438-839a-860c-4109398ea612&#34;&gt;ChatGPT&lt;/a&gt; &lt;!-- https://chatgpt.com/c/69d1b9c2-de34-8398-b01d-4542b1db43ef --&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One was pretty hard and ChatGPT struggled with it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🔴 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-korean-audio-dataset-server&#34;&gt;02. Korean Speech Dataset API Validation&lt;/a&gt; (5.0) actually requires work.
At first, &lt;a href=&#34;https://chatgpt.com/share/69d22f18-02fc-839b-965a-6621554f0ab9&#34;&gt;ChatGPT refused ethically&lt;/a&gt;. &lt;!-- https://chatgpt.com/c/69d1c379-31f4-839b-89d0-f318e68bae38 --&gt;
When reframed, &lt;a href=&#34;https://chatgpt.com/share/69d22f1a-7850-83a0-a586-0f05e46dabeb&#34;&gt;it tried&lt;/a&gt;, but the human-in-the-loop (me) was too slow. &lt;!-- https://chatgpt.com/c/69d1c40c-b834-839e-a253-4430a77418e9 --&gt;
So I used &lt;a href=&#34;https://files.s-anand.net/blog/2026-04-05-tds-2026-01-roe/q-korean-audio-dataset-server-codex-session.md&#34;&gt;Codex&lt;/a&gt;, which &lt;em&gt;literally hacks&lt;/em&gt; towards the solution! It searched online for existing solutions, read the GitHub discussions for this topic, found my browser tab and started testing itself, &amp;hellip; and solved it in 10.5 min!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This leaves the one question that AI can&amp;rsquo;t solve:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🔴 01. &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-share-token-server&#34;&gt;Collaborative Token Exchange&lt;/a&gt; (5.0) asks you to collect &amp;ldquo;tokens&amp;rdquo; from other people and share it. I asked Codex to hack it, but after an hour (of logging into my personal account, my IITM account, even my father&amp;rsquo;s account, exhausting my token limits, and totally psyching me), it declared the question unhackable.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Based on this, the instructors, teaching assistants and I decided that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This exam is too easy with AI help. Combined with collaboration, it&amp;rsquo;s &lt;strong&gt;ultra-easy&lt;/strong&gt;. Therefore, let&amp;rsquo;s add some old questions:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-fastapi-timeseries-cache&#34;&gt;14. FastAPI Time Series Caching&lt;/a&gt; (0.5)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-video-attendee-extraction&#34;&gt;15. AI Video Attendee Extraction&lt;/a&gt; (0.5)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Thanks to &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-p1#hq-share-secret-server&#34;&gt;Project 1&lt;/a&gt;, people already collaborate at scale. So let&amp;rsquo;s ask for 500 tokens instead of 100.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We deployed the exam at 12:00 pm IST, an hour before the scheduled time.&lt;/p&gt;
&lt;p&gt;The hackers (e.g. who scan the source code, or change their system clocks) could see the questions earliy and started sharing and solving them.&lt;/p&gt;
&lt;p&gt;The TAs said, &amp;ldquo;Anand, shall we add more questions to make it tougher?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;I said, &amp;ldquo;No, it&amp;rsquo;s OK. The ROE has built a reputation for difficulty. Let that change. &lt;em&gt;Let them have an easy exam&lt;/em&gt;.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;ldquo;If they&amp;rsquo;re going to split this in groups and have coding agents solve it, they&amp;rsquo;ll score full marks in 10-15 minutes,&amp;rdquo; I said to myself.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;When the exam ended, this was the score distribution.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-04-05-tds-roe-score-distribution.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;There were several surprises here. Firstly, 9 questions were repeats. Yet, barring &lt;em&gt;one&lt;/em&gt; question, they scored lower, though they appeared in equally tough ROEs in the past.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: right&#34;&gt;#&lt;/th&gt;
					&lt;th&gt;Question&lt;/th&gt;
					&lt;th style=&#34;text-align: right&#34;&gt;%&lt;/th&gt;
					&lt;th style=&#34;text-align: right&#34;&gt;Previous %&lt;/th&gt;
					&lt;th&gt;Previous exam&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;14&lt;/td&gt;
					&lt;td&gt;⚪ &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-fastapi-timeseries-cache&#34;&gt;FastAPI Time Series Caching&lt;/a&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;8%&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;39%&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2025-09-roe#hq-fastapi-timeseries-cache&#34;&gt;2025 Sep ROE&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;15&lt;/td&gt;
					&lt;td&gt;⚪ &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-video-attendee-extraction&#34;&gt;AI Video Attendee Extraction&lt;/a&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;12%&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;64%&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga3#hq-video-attendee-extraction&#34;&gt;2026 Jan GA3&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;11&lt;/td&gt;
					&lt;td&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-cross-lingual-entity-disambiguation-server&#34;&gt;Cross-entity disambiguation&lt;/a&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;13%&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;64%&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga4#hq-cross-lingual-entity-disambiguation-server&#34;&gt;2026 Jan GA4&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;7&lt;/td&gt;
					&lt;td&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-region-containing-point-server&#34;&gt;Region Containing Point&lt;/a&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;15%&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;38%&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2025-09-roe#hq-region-containing-point-server&#34;&gt;2025 Sep ROE&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;9&lt;/td&gt;
					&lt;td&gt;🟠 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-python-refactor-server&#34;&gt;Refactor Python Code with VS Code&lt;/a&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;17%&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;57%&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga1#hq-python-refactor-server&#34;&gt;2026 Jan GA1&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;13&lt;/td&gt;
					&lt;td&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-asciirec-server&#34;&gt;Record Terminal Session with asciinema&lt;/a&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;21%&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;66%&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga1#hq-asciirec-server&#34;&gt;2026 Jan GA1&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;10&lt;/td&gt;
					&lt;td&gt;🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-broken-json-server&#34;&gt;Fix Broken JSON File&lt;/a&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;30%&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;64%&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga1#hq-broken-json-server&#34;&gt;2026 Jan GA1&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;12&lt;/td&gt;
					&lt;td&gt;🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-trick-question-server&#34;&gt;Simple Question&lt;/a&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;41%&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;64%&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga1#hq-trick-question-server&#34;&gt;2026 Jan GA1&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;8&lt;/td&gt;
					&lt;td&gt;🟠 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-rename-files-server&#34;&gt;Reorganize Files with Shell Commands&lt;/a&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;53%&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;38%&lt;/td&gt;
					&lt;td&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga1#hq-rename-files-server&#34;&gt;2026 Jan GA1&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Just as surprisingly, they scored &lt;em&gt;higher than these&lt;/em&gt; on 3 of the 5 new questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;59%: 🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-regex-golf-server&#34;&gt;03. Regex Golf Challenge&lt;/a&gt; (2.0) (253 / 430)&lt;/li&gt;
&lt;li&gt;59%: 🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-maze-solver-server&#34;&gt;04. Maze Solver with Constraints&lt;/a&gt; (2.0) (252 / 430)&lt;/li&gt;
&lt;li&gt;54%: 🟡 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-cipher-trail-server&#34;&gt;05. Cipher Trail&lt;/a&gt; (2.0) (233 / 430)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One new question ended up being almost the &lt;strong&gt;hardest&lt;/strong&gt; question - despite it being one-shot-table for ChatGPT (GPT 5.4, extended thinking).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2%: 🟢 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-decode-layered-server&#34;&gt;06. Layered Encoding Challenge&lt;/a&gt; (2.0) (9 / 430)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The toughest, though, had a 1% success rate. Though Codex could solve it in 10 min, it&amp;rsquo;s a genuinely hard question.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1%: 🔴 &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-korean-audio-dataset-server&#34;&gt;02. Korean Speech Dataset API Validation&lt;/a&gt; (5.0) (4 / 430)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Which leaves us with the collaboration question - the one that AI can&amp;rsquo;t solve.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;31%: 🔴 01. &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-roe#hq-share-token-server&#34;&gt;Collaborative Token Exchange&lt;/a&gt; (5.0) (132 / 430)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This question is a whole new dynamic altogether. There were about 5 clear clusters of students, ranging from 5 - 35 students, who were collaborating. They were trading bundles of tokens between themselves. There were a few &amp;ldquo;super-collaborators&amp;rdquo; who were doing the bulk lifting. But even with this, the largest correct submission had 84 tokens. The strongest submission was a 51-token submission that 6 students submitted.&lt;/p&gt;
&lt;p&gt;(I need to study this far more!)&lt;/p&gt;
&lt;p&gt;Yet, far smaller than even the original 100 token target I had set. Clearly, &lt;strong&gt;they aren&amp;rsquo;t collaborating enough&lt;/strong&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;It&amp;rsquo;s surprising how little students were using the &amp;ldquo;Ask AI&amp;rdquo; button.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🔴 ~100 students didn&amp;rsquo;t use it &lt;strong&gt;at all&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;🟠 ~100 students clicked on it &lt;em&gt;JUST once&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;🟡 ~100 students used it just 2-5 times. For 15 questions, that&amp;rsquo;s clearly low.&lt;/li&gt;
&lt;li&gt;🟢 ~100 students used it 6-20 times. That&amp;rsquo;s OK&lt;/li&gt;
&lt;li&gt;🔵 ~15 students used it 20+ times. (1 clicked on it 45 times. Clearly &lt;em&gt;loves&lt;/em&gt; AI.)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Finally, most students saved their results for the first time &lt;em&gt;just&lt;/em&gt; before the deadline.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-04-05-tds-roe-submission-timeline.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;The problem is that their system clocks were off, so they got a &amp;ldquo;late submission&amp;rdquo; error.&lt;/p&gt;
&lt;p&gt;BTW, some students used a timing trick for hacking. By setting their system clock late, they can see the exam questions before release. But the submissions are checked only against the server clock. So, waiting until the last minute to save is a terrible idea. That hurt some students.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Based on this, here&amp;rsquo;s what I learnt:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pressure makes a difference&lt;/strong&gt;. In past exams, with similar time pressure, students solved the &lt;em&gt;same&lt;/em&gt; questions &lt;em&gt;much&lt;/em&gt; better. I think they panic-ed on the first two questions. To be fair, so did I, when I saw them. That&amp;rsquo;s why I started solving from the bottom.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LESSON 1&lt;/strong&gt;: Scan end-to-end. Solve quick-wins (high impact, low effort) problems first.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We have no clue what&amp;rsquo;s easy or tough&lt;/strong&gt;. When different students are using different tools, what&amp;rsquo;s easy for ChatGPT might be hard for Claude and vice versa. Without knowing tool capabilities and usage, this is hard to assess.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LESSON 2&lt;/strong&gt;: With AI, no one knows what&amp;rsquo;s easy or hard. Try for yourself.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;They aren&amp;rsquo;t using AI enough&lt;/strong&gt;. Our advice is to use the &amp;ldquo;Ask AI&amp;rdquo; button every time. Half the students barely used it once.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LESSON 3&lt;/strong&gt;: Use AI first. Focus on what AI &lt;em&gt;can&amp;rsquo;t&lt;/em&gt; do well&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;They aren&amp;rsquo;t collaborating enough&lt;/strong&gt;. The collaboration question was designed to encourage collaboration. Yet, the largest bundle of tokens shared was 84, far smaller than the 500 token target.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LESSON 4&lt;/strong&gt;: Make friends with classmates. Work together. It helps: now, and in the future.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;That&amp;rsquo;s worth repeating:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Scan end-to-end. Solve quick-wins (high impact, low effort) problems first.&lt;/li&gt;
&lt;li&gt;With AI, no one knows what&amp;rsquo;s easy or hard. Try for yourself.&lt;/li&gt;
&lt;li&gt;Use AI first. Focus on what AI &lt;em&gt;can&amp;rsquo;t&lt;/em&gt; do well.&lt;/li&gt;
&lt;li&gt;Make friends with classmates. Work together. It helps: now, and in the future.&lt;/li&gt;
&lt;/ol&gt;
</description>
    </item>
    <item>
      <title>Cracking online exams with coding agents</title>
      <link>https://www.s-anand.net/blog/cracking-online-exams-with-coding-agents/</link>
      <pubDate>Fri, 13 Mar 2026 15:37:19 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/cracking-online-exams-with-coding-agents/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2026-03-13-cracking-online-exams-with-coding-agents.avif&#34;&gt; &lt;!-- https://gemini.google.com/u/2/app/a6a6c341434ec848 --&gt;&lt;/p&gt;
&lt;p&gt;An effective way to solve online exams is to point a coding agent at it.&lt;/p&gt;
&lt;p&gt;I use that on my &lt;a href=&#34;https://tds.s-anand.net/&#34;&gt;Tools in Data Science&lt;/a&gt; course in two ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;As a test case of my code&lt;/strong&gt;. If my agent can solve it, good: I set the question correctly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;As a test of student ability&lt;/strong&gt;. If it can&amp;rsquo;t, good: it&amp;rsquo;s a tough question (provided I didn&amp;rsquo;t make a mistake).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For &lt;a href=&#34;https://2026.pyconfhyd.org/&#34;&gt;PyConf, Hyderabad&lt;/a&gt;, my colleague built a &lt;a href=&#34;https://crack-the-prompt.straivedemo.com/&#34;&gt;Crack the Prompt&lt;/a&gt; challenge. Crack it and you get&amp;hellip; I don&amp;rsquo;t know&amp;hellip; goodies? A job interview? Leaderboard bragging rights?&lt;/p&gt;
&lt;p&gt;I told Codex:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Use the browser to visit &lt;a href=&#34;https://crack-the-prompt.straivedemo.com/&#34;&gt;https://crack-the-prompt.straivedemo.com/&lt;/a&gt; and solve it using the email ID &lt;a href=&#34;mailto:root.node@gmail.com&#34;&gt;root.node@gmail.com&lt;/a&gt; and GitHub handle sanand0&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After 4 minutes, it told me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The answers to all three prompt-engineering questions&lt;/li&gt;
&lt;li&gt;The code has a bug - so no one can submit &lt;em&gt;anyway&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;The prompts are hidden on the server-side (making it a bit harded to hack)&lt;/li&gt;
&lt;li&gt;But you can skip levels via the API - level-locking is front-end only&lt;/li&gt;
&lt;li&gt;&amp;hellip; and a whole bunch of interesting things.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When I asked Claude to write about the process in Matt Levine&amp;rsquo;s style, &lt;a href=&#34;https://sanand0.github.io/datastories/crack-the-prompt/&#34;&gt;it included an interesting lesson&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The Victorians had the same problem. They designed elaborate entrance exams for the civil service because they wanted to identify people with the capacity for careful, systematic thinking. Then someone invented the civil service exam prep industry, and suddenly the exam was measuring preparation rather than capacity.&lt;/p&gt;
&lt;p&gt;The challenge was about the process &amp;ndash; about developing the instincts, the questioning strategies, the ability to read AI behavior like a poker tell. That&amp;rsquo;s the thing you can&amp;rsquo;t automate. Or rather, it&amp;rsquo;s the thing you can automate, which means it&amp;rsquo;s no longer a skill worth developing, which means we need to think about what skill we&amp;rsquo;re actually trying to cultivate when we design these challenges.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;EXACTLY&lt;/strong&gt;. What&amp;rsquo;s the skill we&amp;rsquo;re trying to cultivate? When will it be outdated?&lt;/p&gt;
&lt;p&gt;From now on, when testing, I&amp;rsquo;m going to write down &amp;ldquo;What skill is this &lt;strong&gt;really&lt;/strong&gt; testing?&amp;rdquo; That&amp;rsquo;s good enough a start.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>TDS Jan 2026 GA1 released</title>
      <link>https://www.s-anand.net/blog/tds-jan-2026-ga1-released/</link>
      <pubDate>Sun, 08 Feb 2026 09:59:37 +0800</pubDate>
      <guid>https://www.s-anand.net/blog/tds-jan-2026-ga1-released/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga1&#34;&gt;Graded Assignment 1 (GA1)&lt;/a&gt; for the &lt;a href=&#34;https://tds.s-anand.net/&#34;&gt;Tools in Data Science&lt;/a&gt; course is released and is due Sun 15 Feb 2026. See &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2026-01-ga1&#34;&gt;https://exam.sanand.workers.dev/tds-2026-01-ga1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you &lt;em&gt;already started&lt;/em&gt;, you might notice some questions have changed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why is GA1 changing?&lt;/strong&gt; Because some questions don&amp;rsquo;t work. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sanand0/tools-in-data-science-public/discussions/56#discussioncomment-15724312&#34;&gt;We replaced Claude Artifacts with a Vercel question&lt;/a&gt; because Claude won&amp;rsquo;t allow a proxy anymore.&lt;/li&gt;
&lt;li&gt;A question had &lt;a href=&#34;https://github.com/sanand0/tools-in-data-science-public/discussions/268#discussioncomment-15730275&#34;&gt;unintentionally wrong instructions&lt;/a&gt;.&lt;br&gt;
(Some questions have &lt;em&gt;intentionally&lt;/em&gt; wrong instructions, but those are, &amp;hellip;um&amp;hellip; intentional).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sanand0/tools-in-data-science-public/discussions/259#discussioncomment-15723545&#34;&gt;Someone changed an API key&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&amp;hellip; etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;When will GA1 stabilize?&lt;/strong&gt; Probably by end of day, Sun 9 Feb 2026?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Should I wait?&lt;/strong&gt; Maybe not, since only some questions may change, and &lt;a href=&#34;https://www.s-anand.net/blog/halving-a-deadline-costs-1-4-of-marks-each-time/&#34;&gt;submitting early increases scores&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will other exams change similarly?&lt;/strong&gt; Probably. We&amp;rsquo;ll email the &lt;a href=&#34;https://groups.google.com/a/study.iitm.ac.in/g/26t1_se2002-announce&#34;&gt;IITM&lt;/a&gt; and &lt;a href=&#34;https://groups.google.com/g/tds-iitm&#34;&gt;Public&lt;/a&gt; announcement groups.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But this is unfair!&lt;/strong&gt; Exactly what I tell clients when they change scope mid-way. They never listen.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;If you &lt;em&gt;haven&amp;rsquo;t started&lt;/em&gt;, here are more FAQs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why no study material?&lt;/strong&gt; Last year, AI wrote most of the study material. Rather than copy-pasting that, I decided to give you the prompts directly. See the &amp;ldquo;Ask AI&amp;rdquo; section above each question.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://tds.s-anand.net/images/there-is-no-content.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When will Project 1 be released?&lt;/strong&gt; I planned to release it on Fri 6 Feb, but GA1 issues kept me busy. It should be out by Wed 11 Feb 2026.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>If a bot passes your exam, what are you teaching?</title>
      <link>https://www.s-anand.net/blog/if-a-bot-passes-your-exam-what-are-you-teaching/</link>
      <pubDate>Sun, 09 Nov 2025 15:53:58 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/if-a-bot-passes-your-exam-what-are-you-teaching/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;If a bot passes your exam, what are you teaching?&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/calvin-hobbes-exam.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s incredible how far coding agents have come. They can now solve complete exams. That changes what we should measure.&lt;/p&gt;
&lt;p&gt;My Tools in Data Science course has a &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2025-09-roe&#34;&gt;Remote Online Exam&lt;/a&gt;. It was so difficult that, in 2023, it sparked threads titled &amp;ldquo;What is the purpose of an impossible ROE?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Today, despite making the test harder, students solve it easily with &lt;a href=&#34;https://claude.ai/&#34;&gt;Claude&lt;/a&gt;, &lt;a href=&#34;https://chatgpt.com/&#34;&gt;ChatGPT&lt;/a&gt;, etc. Here&amp;rsquo;s today&amp;rsquo;s score distribution:&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/image-14.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;I solved one question with &lt;a href=&#34;https://developers.openai.com/codex/cli/&#34;&gt;Codex CLI&lt;/a&gt;. I ran I &lt;code&gt;chrome --remote-debugging-port=9222&lt;/code&gt; and prompted Codex to:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Use CDP to visit &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2025-09-roe&#34;&gt;https://exam.sanand.workers.dev/tds-2025-09-roe&lt;/a&gt; and solve Q4. Click on the “Check” button to verify the solution.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That was it. ~6 minutes and ~50 cents later, it solved the problem.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://asciinema.org/a/xni6OMt38oQSyhYLHLY3fwncS&#34;&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://asciinema.org/a/xni6OMt38oQSyhYLHLY3fwncS.svg&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This works reliably. It worked 3/3 times.&lt;/p&gt;
&lt;p&gt;This runs in parallel. I can answer different questions in different Codex sessions.&lt;/p&gt;
&lt;p&gt;This is already in use. Several students got 10/10 in 15 minutes - on a 45 minute exam.&lt;/p&gt;
&lt;p&gt;So I need better evaluations. Instead of &amp;ldquo;Can you(r agent) solve this?&amp;rdquo;, I should check if they can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Turn a messy brief into an agent-friendly spec + plan&lt;/li&gt;
&lt;li&gt;Set up and connect the right tools&lt;/li&gt;
&lt;li&gt;Solve within a time and cost budget&lt;/li&gt;
&lt;li&gt;Test &amp;amp; debug without a human&lt;/li&gt;
&lt;li&gt;Recover from errors&lt;/li&gt;
&lt;li&gt;Adapt to new situations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, code is the by-product (of AI coding or copying). Learning lives in the &lt;strong&gt;execution logs&lt;/strong&gt;. That&amp;rsquo;s what I should evaluate.&lt;/p&gt;
&lt;p&gt;Point I&amp;rsquo;m pondering: If a bot can pass my exam, what exactly am I teaching?&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/posts/sanand0_its-incredible-how-far-coding-agents-have-activity-7393317571892207616-VCUr&#34;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title></title>
      <link>https://www.s-anand.net/blog/tds-llm-evaluation/</link>
      <pubDate>Fri, 12 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/tds-llm-evaluation/</guid>
      <description>&lt;p&gt;My &lt;em&gt;Tools in Data Science&lt;/em&gt; course uses LLMs for assessments. We use LLMs to&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Suggest project ideas (I pick), e.g. &lt;a href=&#34;https://chatgpt.com/share/6741d870-73f4-800c-a741-af127d20eec7&#34;&gt;https://chatgpt.com/share/6741d870-73f4-800c-a741-af127d20eec7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Draft the project brief (we edit), e.g. &lt;a href=&#34;https://docs.google.com/document/d/1VgtVtypnVyPWiXied5q0_CcAt3zufOdFwIhvDDCmPXk/edit&#34;&gt;https://docs.google.com/document/d/1VgtVtypnVyPWiXied5q0_CcAt3zufOdFwIhvDDCmPXk/edit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Propose scoring rubrics (we tweak), e.g. &lt;a href=&#34;https://chatgpt.com/share/68b8eef6-60ec-800c-8b10-cfff1a571590&#34;&gt;https://chatgpt.com/share/68b8eef6-60ec-800c-8b10-cfff1a571590&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Score code against the rubric (we test), e.g. &lt;a href=&#34;https://github.com/sanand0/tds-evals/blob/5cfabf09c21c2884623e0774eae9a01db212c76a/llm-browser-agent/process_submissions.py&#34;&gt;https://github.com/sanand0/tds-evals/blob/5cfabf09c21c2884623e0774eae9a01db212c76a/llm-browser-agent/process_submissions.py&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Analyze the results (we refine), e.g. &lt;a href=&#34;https://chatgpt.com/share/68b8f962-16a4-800c-84ff-fb9e3f0c779a&#34;&gt;https://chatgpt.com/share/68b8f962-16a4-800c-84ff-fb9e3f0c779a&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This changed our assessments process. It&amp;rsquo;s easier &lt;em&gt;and&lt;/em&gt; better.&lt;/p&gt;
&lt;p&gt;Earlier, TAs took 2 &lt;strong&gt;weeks&lt;/strong&gt; to evaluate 500 code submissions. In the example above, it took 2 &lt;strong&gt;hours&lt;/strong&gt;. Quality held up: LLMs match my judgement as closely as TAs do but run fast and at scale.&lt;/p&gt;
&lt;p&gt;LLM-graded reviews aren&amp;rsquo;t just a cost hack. They&amp;rsquo;re a &lt;strong&gt;scale&lt;/strong&gt; and &lt;strong&gt;quality&lt;/strong&gt; lever.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;We create new assessments fast. The example took ~2 hours to ideate.&lt;/li&gt;
&lt;li&gt;We run, analyze and iterate just as fast. This full loop now takes ~2 hours.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I &lt;em&gt;no longer have an excuse&lt;/em&gt; to teach outdated content.&lt;/p&gt;
&lt;p&gt;Prompts &amp;amp; code: &lt;a href=&#34;https://github.com/sanand0/tds-evals/tree/main/llm-browser-agent&#34;&gt;https://github.com/sanand0/tds-evals/tree/main/llm-browser-agent&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://files.s-anand.net/images/2025-09-12-tds-llm-evaluation-linkedin.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://www.linkedin.com/posts/sanand0_my-%F0%9D%98%9B%F0%9D%98%B0%F0%9D%98%B0%F0%9D%98%AD%F0%9D%98%B4-%F0%9D%98%AA%F0%9D%98%AF-%F0%9D%98%8B%F0%9D%98%A2%F0%9D%98%B5%F0%9D%98%A2-%F0%9D%98%9A%F0%9D%98%A4%F0%9D%98%AA%F0%9D%98%A6%F0%9D%98%AF%F0%9D%98%A4%F0%9D%98%A6-activity-7369317805403369473-TjAV&#34;&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Problems that only one student can solve</title>
      <link>https://www.s-anand.net/blog/problems-that-only-one-student-can-solve/</link>
      <pubDate>Sun, 31 Aug 2025 08:56:28 +0000</pubDate>
      <guid>https://www.s-anand.net/blog/problems-that-only-one-student-can-solve/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Problems that only one student can solve&#34; loading=&#34;lazy&#34; src=&#34;https://www.s-anand.net/blog/assets/ChatGPT-Image-Aug-31-2025-03_55_11-PM.webp&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://jaidevd.com/posts/bridge-of-asses/&#34;&gt;Jaidev&amp;rsquo;s The Bridge of Asses&lt;/a&gt; reminded me of my first coding bridge.&lt;/p&gt;
&lt;p&gt;It was 1986. I&amp;rsquo;d completed class 6 and was in a summer coding camp at school. M Kothandaraman (&amp;ldquo;MK Sir&amp;rdquo;) was teaching us how to swap variables in &lt;a href=&#34;https://en.wikipedia.org/wiki/BBC_BASIC&#34;&gt;BASIC&lt;/a&gt; on the &lt;a href=&#34;https://en.wikipedia.org/wiki/BBC_Microcomputer&#34;&gt;BBC Micro&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This code prints the first name in alphabetical order (&amp;ldquo;Alice&amp;rdquo;):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;A&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Bob&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;20&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;B&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Alice&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IF&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;A&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;B&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;THEN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;TEMP&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;A&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;B&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt;   &lt;span class=&#34;n&#34;&gt;B&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TEMP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;70&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;END&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;80&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;PRINT&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The homework was to print &lt;strong&gt;all&lt;/strong&gt; details of the first alphabetical name:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-basic&#34; data-lang=&#34;basic&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nl&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;vg&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Bob&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;vg&#34;&gt;ASEX&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;M&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;vg&#34;&gt;AAGE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;il&#34;&gt;30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nl&#34;&gt;20&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;vg&#34;&gt;B&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Alice&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;vg&#34;&gt;BSEX&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;F&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;vg&#34;&gt;BAGE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;il&#34;&gt;20&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After a few hours and a headache, I came up with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;IF&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;A&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;B&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;THEN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;    &lt;span class=&#34;n&#34;&gt;TEMP&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;A&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TEMPSEX&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ASEX&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TEMPAGE&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AAGE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;    &lt;span class=&#34;n&#34;&gt;A&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;B&lt;/span&gt;    &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ASEX&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BSEX&lt;/span&gt;    &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AAGE&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BAGE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt;    &lt;span class=&#34;n&#34;&gt;B&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TEMP&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BSEX&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TEMPSEX&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;BAGE&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;TEMPAGE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;70&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;END&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;80&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;PRINT&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;A&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;ASEX&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;AAGE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After 39 years, I still remember the code. I also remember the moment when MK Sir asked if anyone had solved it. My hand went up &amp;ndash; the only one in a group of 15. I stood, opened my ruled notebook, recited the code. He nodded and wrote it on the blackboard for all to see.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a thrill in solving a hard problem. It&amp;rsquo;s bigger if you&amp;rsquo;re the only student who solved it. I was so inspired that I&amp;rsquo;ve coded almost every day since then.&lt;/p&gt;
&lt;p&gt;Today, I&amp;rsquo;m a teacher. Sometimes only one student solves a tough problem I set (e.g. the first student who hacked my &lt;a href=&#34;https://exam.sanand.workers.dev/tds-2024-sep-roe1&#34;&gt;exam&lt;/a&gt;). Those moments are &lt;strong&gt;delightful&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Teachers measure themselves by how much students learn (e.g. better scores). Another measure is how many they inspire. Problems that only one student solves may be a sign of inspiration.&lt;/p&gt;
&lt;p&gt;With apologies to other students, I will be adding more such hard problems in my &lt;a href=&#34;https://tds.s-anand.net/&#34;&gt;course&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;PS: One other thing delights people as much: success at vibe-coding. The look on the facilities manager&amp;rsquo;s face, after vibe-coding an empty-room detection app, was priceless. I&amp;rsquo;ll use that more to inspire non-developers.&lt;/p&gt;
</description>
    </item>
  </channel>
</rss>
