<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Stephen Jonany]]></title><description><![CDATA[Software engineer, transitioning into education. Currently thinking about education and AI. Ex: Google, Snowflake]]></description><link>https://stephenjonany.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!O_az!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51b0b28-1f2e-4664-82c1-1f4e51f32881_144x144.png</url><title>Stephen Jonany</title><link>https://stephenjonany.substack.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 17 Jul 2026 23:39:52 GMT</lastBuildDate><atom:link href="https://stephenjonany.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Stephen Jonany]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[stephenjonany@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[stephenjonany@substack.com]]></itunes:email><itunes:name><![CDATA[Stephen Jonany]]></itunes:name></itunes:owner><itunes:author><![CDATA[Stephen Jonany]]></itunes:author><googleplay:owner><![CDATA[stephenjonany@substack.com]]></googleplay:owner><googleplay:email><![CDATA[stephenjonany@substack.com]]></googleplay:email><googleplay:author><![CDATA[Stephen Jonany]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[AI-proofing a CS Course]]></title><description><![CDATA[Unregulated AI usage risks setting up students for failure. But is there anything practical that busy instructors can do beyond writing AI policy documents? In this post, I&#8217;ll sketch out my personal course structure, then lay out the source materials from the real courses and the literature.]]></description><link>https://stephenjonany.substack.com/p/ai-proofing-a-cs-course</link><guid isPermaLink="false">https://stephenjonany.substack.com/p/ai-proofing-a-cs-course</guid><dc:creator><![CDATA[Stephen Jonany]]></dc:creator><pubDate>Sun, 12 Jul 2026 01:38:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!O_az!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51b0b28-1f2e-4664-82c1-1f4e51f32881_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Unregulated AI usage risks <a href="https://sjonany.github.io/posts/unregulated-ai-use-harms-learning.html">setting up students for failure</a>. But is there anything practical that busy instructors can do beyond writing AI policy documents? In this post, I&#8217;ll sketch out my personal course structure, then lay out the source materials from the real courses and the literature.</p><h2><strong>What I&#8217;ll personally adopt</strong></h2><p>I&#8217;ll start with the conclusion -- what I will personally adopt when I teach, given my reading so far.</p><p>My main focus is to restore (or, augment) pre-AI <strong>out-of-the-classroom</strong> <a href="https://sjonany.github.io/posts/how-to-build-mental-models-for-cs-concepts.html#mode-active">learning</a>, a lot of which is recently being bypassed by unguided AI usage on homework. We do this by providing <strong>convenient, learning-inducing substitute AI</strong>, and by making the course grade be tied to <a href="https://sjonany.github.io/posts/why-we-need-in-person-exams.html">proctored, in-person assessments</a>.</p><h3><strong>AI-specific changes</strong></h3><p><strong>Grading.</strong> The grading will be heavily placed on in-person quizzes and exams. Homework will have less weight, and each problem will just be graded on completion. E.g. 20%. The motivation to do homework is that the in-person quizzes will <strong>repeat some HW questions.</strong> If students bypass the thinking on homework, they&#8217;ll quickly learn they&#8217;re only harming their in-person quiz performance.</p><p><strong>HW AI chat.</strong> For students who want to use AI, they are only allowed to use a problem-specific gemini gem, and are asked to turn in the chat transcript. I will have created a class-agnostic workflow that takes in the original problem statements and the reference solution so I can scale this process. This is to make use of the &#8220;sanctioned substitute&#8221; insight from psychology.</p><p><strong>HW policy.</strong> AI usage is optional. If AI is used, students <strong>must</strong> (1) first provide a 30-minute first attempt that&#8217;s written on <strong>paper</strong> before (2) using the provided HW-specific chat, then (3) turning in the chat transcript.</p><p><strong>Assessment content.</strong> I&#8217;ll be sure to add these flavors of tasks: (1) code review (2) plan review (3) provide test cases for this code and run them (4) conduct a runtime performance analysis of this code. This is to address the workflows that will become more common with AI-generated code.</p><h3><strong>Non-AI changes</strong></h3><p>These are other policies that I want to adopt from <a href="https://sjonany.github.io/posts/how-to-build-mental-models-for-cs-concepts.html">this post</a>.</p><p><strong>Active engagement.</strong> Lectures will include active worksheets, not just passive delivery.</p><p><strong>Mastery.</strong> Students can retake quizzes up to two times, but for each to be a pass, they have to earn a very high grade (E.g. &gt;90%). See <a href="https://en.wikipedia.org/wiki/Mastery_learning">mastery learning</a></p><p><strong>Spaced repetition?</strong> I&#8217;m not sure if I can afford to add additional assessments, so I&#8217;ll only semi-encourage this through delayed assessments like midterms and final exams.</p><h3><strong>Other thoughts</strong></h3><p><strong>AI detection.</strong> I don&#8217;t want to get into the cat-and-mouse game of detecting if students are misusing AI in the homework. If they do it and bypass the learning needed to succeed in the in-person exams, they will fail the class. That&#8217;s it.</p><p><strong>Beyond this post.</strong> The interventions listed in the post surprisingly feel... very hands off. We <strong>hope</strong> that the student will use the convenient AI substitute, and realize that if they don&#8217;t do the hard thinking, they will fail the weekly quizzes. I&#8217;m curious what successful CS courses will look like a decade from now, and if we figure out interventions that are very different from the ones listed in this post.</p><h2><strong>Actual courses</strong></h2><p>Let&#8217;s first take a look at recent algorithms courses: <a href="https://courses.cs.washington.edu/courses/cse421/26sp/">UW</a>, <a href="https://www.cs.cmu.edu/~yangp/15-451/">CMU</a>, <a href="https://cs170.org/">Berkeley</a>, <a href="https://cs161-stanford.github.io/">Stanford</a>, <a href="https://www.cs.princeton.edu/~hy2/teaching/spring26-cos423/index.html">Princeton</a>. Here are the main findings.</p><h3><strong>In-person unchanged</strong></h3><p>The contents of in-person exams, lectures and curriculum don&#8217;t seem to have changed over the years. It&#8217;s worth noting that CMU and Berkeley have oral exams and oral homework, but I have doubts on how scalable this would be for single instructors.</p><h3><strong>Out-of-class support</strong></h3><p>What seems to change the most are the policies that shape how students interact with <strong>homework</strong>.</p><p><strong>Grades: less emphasis on non-proctored.</strong> Proctored exams take the most weight. 4 out of 5 courses placed at least 70% weight on exams, with the exception of UW only placing 50%. Princeton and CMU don&#8217;t even grade homework, or only grade based on completion.</p><p><strong>Homework: policy only.</strong> The homework content does not seem to be changed. The main change seems to be in the <strong>policy</strong>, which mentions that AI usage is optional, and if it is used, there is a guideline on how to use it. Here&#8217;s one from UW: &#8220;You are allowed to use the course approved GPT only after you have worked on the problem for at least 30 minutes.&#8221;</p><p><strong>Custom AI.</strong> Only UW provided its own course-specific AI. <a href="https://chatgpt.com/share/6a4fbe58-bab4-83e8-a48c-735f0ff9807d">Here</a> is a chat transcript that I used to test it. The main benefits that I saw seem to be (1) <strong>non-disclosure</strong> of solution: &#8220;I don&#8217;t want to give away the full solution&#8221; and (2) <strong>next-step hints</strong>: &#8220;try comparing ... ask yourself ... A small conceptual hint: ...&#8221; (3) <strong>encouragement to think before re-engaging</strong>: &#8220;Spend 15&#8211;30 minutes trying to find the counterexample yourself before asking the next question.&#8221;</p><p>In summary, homework has less grade weighting, but comes with AI guidelines to ensure that the pre-AI thinking associated with homework is not bypassed. More details in the note: <a href="https://docs.google.com/document/d/1BJQCEwsqsY-2UOoGyZ_PqeUHkkqzIvHmLj9YCTbivo0/edit?tab=t.0">How real algorithm courses tackle AI</a>.</p><h2><strong>CS Literature</strong></h2><p>We just saw a couple of concrete examples, and now we will broaden our search by looking at the CS education literature. We will mainly rely on <a href="https://doi.org/10.1145/3689187.3709614">Prather et al. (2025)</a>, which provided a list of course changes compiled from several papers and instructor interviews.</p><h3><strong>Grading change</strong></h3><p>There is an increased weight on proctored exams, and less weight on unproctored assessments like homework.</p><h3><strong>Update curriculum</strong></h3><p>More on code review, less on syntax production.</p><blockquote><p>Educators believe <strong>code reading</strong> has become more important than writing code from scratch, and that higher level skills like <strong>code testing, problem decomposition, problem understanding, and debugging</strong> have become more essential (ES-4, ES-5). ... Developers pointed out a similar shift (DS-10), but added the need t<strong>o critically evaluate GenAI use</strong> and its output, <strong>writing prompts,</strong> and <strong>meticulousness</strong> as new relevant competency components</p></blockquote><h3><strong>Guide AI usage</strong></h3><p>Assume that AI will be used, and guide the usage.</p><p><strong>Submission.</strong> Make clear what the policies are. E.g. Must share chat transcript if AI is used.</p><p><strong>Guard-railed AI</strong>. Harvard (<a href="https://doi.org/10.1145/3626252.3630938">Liu et al., 2024</a>) built course-specific AI that used socratic method and has access to the course materials. <a href="https://docs.google.com/document/d/1632kf_uEnmK16kEShhnyF-RCQhs5q_esqCg5dK4NHXo/edit?tab=t.0">Here</a> is a chat log where I played around with it. Note that <a href="https://chatgpt.com/share/6a4fbe58-bab4-83e8-a48c-735f0ff9807d">UW&#8217;s custom GPT</a> also is similar in spirit.</p><p><strong>No AI for first step.</strong> <a href="https://doi.org/10.1007/s10639-025-13337-7">G&#252;ner &amp; Er (2025)</a> suggested that students who <strong>code first</strong>, then later use AI just to refine, perform better than students who start their thinking with AI. A workflow that we want to encourage, then is as follows: (1) human does the first attempt without AI before (2) starting the loop of [AI provides minimal hints, human critically reviews before asking again].</p><h3><strong>Caveat: low epistemic quality</strong></h3><p>Note that the effectiveness of some of these interventions is not rigorously tested -- a lot of these were anecdotal, and not compared against strong baselines. See <a href="https://doi.org/10.1007/s10648-025-10020-8">Bauer et al. (2025)</a> for a more detailed look at the weakness of these studies. So! Treat this list more as a brainstorming tool.</p><h2><strong>Psych literature: AI cheating as an impulse-control problem</strong></h2><p>Let&#8217;s broaden our perspective even more and look at findings from psychology! If we reframe AI cheating as a behavior that students already <strong>intellectually</strong> know as bad, but find it hard to <strong>avoid in the moment</strong>, what are some <strong>effective interventions</strong> from the realm of psychology that we can adopt?</p><h3><strong>Strongest effect: convenient substitute with precommitment</strong></h3><p>The most effective intervention is to provide a sanctioned <strong>substitute</strong> to generic AI offerings, and provide an if-then plan (<a href="https://doi.org/10.1080/10463283.2024.2334563">Sheeran et al., 2024</a>; <a href="https://doi.org/10.1016/S0065-2601(06)38002-1">Gollwitzer &amp; Sheeran, 2006</a>). In the context of an algorithms course, we can provide a <strong>custom chatbot with pedagogically-sound prompts</strong> and <strong>give clear HW guidelines on how to use it</strong>. For instance, underneath <strong>every problem</strong>, we can give a clear instruction like this: &#8220;Start a stopwatch for 30 minutes to write your first answer on paper, then use this problem-specific course GPT (link) to check or get hints.&#8221;</p><h3><strong>Less established: Motivation</strong></h3><p>Appealing to honor codes, persuasion, or making students feel the delayed cost of cheating through frequent quizzes, doesn&#8217;t seem to have as strong evidence for reducing cheating on homework. This is pretty concerning, since this seems to be where most courses concentrate their interventions.</p><p>For more details, see the note <a href="https://docs.google.com/document/d/1urFTqBVgLdqpWHaKRGS04gJLurHlo2NsZKBaJRMm3LY/edit?tab=t.0">Psychology: how to discourage ai cheating</a>.</p><h2><strong>Class-specific AI</strong></h2><p>Given that providing an AI substitute is likely to be one of the more effective interventions, it&#8217;s worth diving deeper into how to build one.</p><h3><strong>Gold standards, and their approach</strong></h3><p>We previously saw how Harvard (<a href="https://doi.org/10.1145/3626252.3630938">paper</a>, <a href="https://docs.google.com/document/d/1632kf_uEnmK16kEShhnyF-RCQhs5q_esqCg5dK4NHXo/edit?tab=t.0">chat log</a>) and <a href="https://chatgpt.com/share/6a4fbe58-bab4-83e8-a48c-735f0ff9807d">UW</a> CS courses have their own chat bots. However, the effectiveness of these chat bots hasn&#8217;t been studied to the level of rigor described in <a href="https://doi.org/10.1007/s10648-025-10020-8">Bauer et al. (2025)</a>.</p><p>We will instead look at two more rigorous studies -- from a Harvard physics course (<a href="https://doi.org/10.1038/s41598-025-97652-6">Kestin et al., 2025</a>) and Google DeepMind (<a href="https://arxiv.org/abs/2512.23633">LearnLM Team, 2025</a>). Both did Randomized Controlled Trials (RCTs) to show that interacting with the custom chatbot helped students obtain higher test scores with less study time, than students in a traditional active-learning class or with human tutors alone.</p><p>Here are the main components of building this solution.</p><ol><li><p><strong>Main ingredient: Human-curated step-wise explanations.</strong> It&#8217;s not the AI solving the problems. Instructors create the reference solutions decomposed into well-explained steps beforehand, and the AI refers to these solutions to figure out what hints to give.</p></li><li><p><strong>Pedagogical principles guide AI.</strong> We have some of the principles baked into the prompts: don&#8217;t cognitively overload the student. Encourage active learning. Don&#8217;t give the answer, asking leading short questions. See the prompts for more details: <a href="https://docs.google.com/document/d/1dqbcNVXuKQVpruFzOJHpiu-btNS341EQ9SE-xnieo8Q/edit?tab=t.0">LearnLM</a>, <a href="https://docs.google.com/document/d/1maVB2cWHbgZUyznbu32wLI5puC-W0HH2bHGz9kTY3dA/edit?tab=t.0">Kestin&#8217;s</a> .</p></li><li><p><strong>Platform</strong> changes might be needed to provide an interface beyond a single chat box. For instance, <a href="https://doi.org/10.1038/s41598-025-97652-6">Kestin et al. (2025)</a> had separate chats for each problem substep, and clear UX to navigate between substeps and to see which has been completed vs not. The <a href="https://arxiv.org/abs/2512.23633">LearnLM Team (2025)</a> study triggered the chat only when the student made a mistake on an MCQ.</p></li></ol><h3><strong>Is it practical to build?</strong></h3><p>One might think that building a high-quality class-specific AI would impose too much additional work on single instructors. This is an open problem that I would like to tackle, but here are some preliminary thoughts that make me think it&#8217;s tractable.</p><p><strong>Platform cost is free.</strong> UW used custom GPT, which doesn&#8217;t incur any cost to the instructor (details: <a href="https://docs.google.com/document/d/1VsUm1OMCGskv-d4zTX4RZJqql12npv3d6kDY5iIkfu4/edit?tab=t.0#heading=h.375zs5wft0dd">CustomGPT QnA</a>). If your institution offers Google accounts, you can use Gemini&#8217;s <a href="https://gemini.google/overview/gems/">gems</a> instead. Scaffolding is implicitly baked into the static homework statement, which links each section part to a different chat link.</p><p><strong>Pedagogical principles</strong> are also easy to encode -- We can just reuse the same prompts from <a href="https://arxiv.org/abs/2512.23633">LearnLM Team (2025)</a> and <a href="https://doi.org/10.1038/s41598-025-97652-6">Kestin et al. (2025)</a>.</p><p><strong>Human-curated step-wise explanations</strong> are probably a main bottleneck. We might reduce the cost by semi-automating it with AI. E.g. &#8220;Given this human-provided final solution, and the problem statement, break this down into steps&#8221;, then let human adjust the steps.</p><p><strong>Evaluation as the hidden cost.</strong> Evaluation of quality is harder, but I suspect we might automate some steps that can produce a decent evaluation pipeline, and a self-improving pipeline that provides a good result. E.g. for this homework problem, generate 10 common student responses, evaluate yourself, self-improve your prompt, .... This will impose some monetary cost on the instructor, TBD on how much.</p><p>So, the main cost will most likely lie in the evaluation / self-improvement workflow and the step-wise explanation creation. It will be an interesting project to see how much of these can be automated, and various practical integration patterns to accommodate instructors of varying bandwidth. TBD for a future post!</p><h2><strong>References</strong></h2><ul><li><p>Bauer, E., Greiff, S., Graesser, A. C., Scheiter, K., &amp; Sailer, M. (2025). Looking Beyond the Hype: Understanding the Effects of AI on Learning. <em>Educational Psychology Review, 37</em>(2). <a href="https://doi.org/10.1007/s10648-025-10020-8">https://doi.org/10.1007/s10648-025-10020-8</a></p></li><li><p>Gollwitzer, P. M., &amp; Sheeran, P. (2006). Implementation intentions and goal achievement: A meta-analysis of effects and processes. <em>Advances in Experimental Social Psychology, 38</em>, 69&#8211;119. <a href="https://doi.org/10.1016/S0065-2601(06)38002-1">https://doi.org/10.1016/S0065-2601(06)38002-1</a></p></li><li><p>G&#252;ner, H., &amp; Er, E. (2025). AI in the classroom: Exploring students&#8217; interaction with ChatGPT in programming learning. <em>Education and Information Technologies, 30</em>, 12681&#8211;12707. <a href="https://doi.org/10.1007/s10639-025-13337-7">https://doi.org/10.1007/s10639-025-13337-7</a></p></li><li><p>Jonany, S. (2026). Unregulated AI use harms learning. <a href="https://sjonany.github.io/posts/unregulated-ai-use-harms-learning.html">https://sjonany.github.io/posts/unregulated-ai-use-harms-learning.html</a></p></li><li><p>Kestin, G., Miller, K., Klales, A., Milbourne, T., &amp; Ponti, G. (2025). AI tutoring outperforms in-class active learning: an RCT introducing a novel research-based design in an authentic educational setting. <em>Scientific Reports, 15</em>, 17458. <a href="https://doi.org/10.1038/s41598-025-97652-6">https://doi.org/10.1038/s41598-025-97652-6</a></p></li><li><p>LearnLM Team, Google (2025). AI tutoring can safely and effectively support students: An exploratory RCT in UK classrooms. <em>arXiv</em> preprint arXiv:2512.23633. <a href="https://arxiv.org/abs/2512.23633">https://arxiv.org/abs/2512.23633</a></p></li><li><p>Liu, R., Zenke, C., Liu, C., Holmes, A., Thornton, P., &amp; Malan, D. J. (2024). Teaching CS50 with AI: Leveraging Generative Artificial Intelligence in Computer Science Education. In <em>Proceedings of the 55th ACM Technical Symposium on Computer Science Education (SIGCSE 2024).</em> ACM. <a href="https://doi.org/10.1145/3626252.3630938">https://doi.org/10.1145/3626252.3630938</a></p></li><li><p>Prather, J., Leinonen, J., Kiesler, N., Gorson Benario, J., Lau, S., MacNeil, S., Norouzi, N., Opel, S., Pettit, V., Porter, L., Reeves, B. N., Savelka, J., Smith, D. H., Strickroth, S., &amp; Zingaro, D. (2025). Beyond the Hype: A Comprehensive Review of Current Trends in Generative AI Research, Teaching Practices, and Tools. In <em>2024 Working Group Reports on Innovation and Technology in Computer Science Education (ITiCSE-WGR &#8216;24).</em> ACM. <a href="https://doi.org/10.1145/3689187.3709614">https://doi.org/10.1145/3689187.3709614</a> (arXiv:2412.14732)</p></li><li><p>Sheeran, P., Listrom, O., &amp; Gollwitzer, P. M. (2024). The when and how of planning: Meta-analysis of the scope and components of implementation intentions in 642 tests. <em>European Review of Social Psychology, 36</em>(1), 162&#8211;194. <a href="https://doi.org/10.1080/10463283.2024.2334563">https://doi.org/10.1080/10463283.2024.2334563</a></p></li></ul><p>Deep dive notes</p><ul><li><p><a href="https://docs.google.com/document/d/1urFTqBVgLdqpWHaKRGS04gJLurHlo2NsZKBaJRMm3LY/edit?tab=t.0">Psychology literature: How to discourage AI cheating</a></p></li><li><p><a href="https://docs.google.com/document/d/1BJQCEwsqsY-2UOoGyZ_PqeUHkkqzIvHmLj9YCTbivo0/edit?tab=t.0">How real algorithm courses tackle AI</a></p></li><li><p><a href="https://docs.google.com/document/d/1dqbcNVXuKQVpruFzOJHpiu-btNS341EQ9SE-xnieo8Q/edit?tab=t.0">LearnLM prompt</a></p></li><li><p><a href="https://docs.google.com/document/d/1maVB2cWHbgZUyznbu32wLI5puC-W0HH2bHGz9kTY3dA/edit?tab=t.0">Kestin&#8217;s prompt</a></p></li><li><p><a href="https://docs.google.com/document/d/1VsUm1OMCGskv-d4zTX4RZJqql12npv3d6kDY5iIkfu4/edit?tab=t.0#heading=h.375zs5wft0dd">CustomGPT QnA</a></p></li><li><p><a href="https://chatgpt.com/share/6a4fbe58-bab4-83e8-a48c-735f0ff9807d">UW&#8217;s custom GPT chat log</a></p></li><li><p><a href="https://docs.google.com/document/d/1632kf_uEnmK16kEShhnyF-RCQhs5q_esqCg5dK4NHXo/edit?tab=t.0">Harvard&#8217;s CS 50 chat log</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[Unregulated AI Use Harms Learning ]]></title><description><![CDATA[This post poses a problem statement: that a CS course that does not regulate AI usage risks setting up students for failure.]]></description><link>https://stephenjonany.substack.com/p/unregulated-ai-use-harms-learning</link><guid isPermaLink="false">https://stephenjonany.substack.com/p/unregulated-ai-use-harms-learning</guid><dc:creator><![CDATA[Stephen Jonany]]></dc:creator><pubDate>Wed, 08 Jul 2026 16:16:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!O_az!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51b0b28-1f2e-4664-82c1-1f4e51f32881_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This post poses a <strong>problem statement</strong>: that a CS course that does not regulate AI usage risks setting up students for failure.</p><p>Here&#8217;s the abstract: <strong>Unregulated</strong> use of AI in courses breaks the out-of-classroom learning process, which is the majority of the learning time. It does so by providing a convenient, less guilt-inducing way to shortcut the hard thinking on <strong>homework</strong>. In bypassing <a href="https://sjonany.github.io/posts/how-to-build-mental-models-for-cs-concepts.html">important, strenuous active mental processes</a>, students then fail to develop robust mental models.</p><h2><strong>Evidence that this is a real problem</strong></h2><p><strong>Berkeley highest failure rate.</strong> As of June 2026, UC Berkeley computer science classes had a <a href="https://www.dailycal.org/news/campus/academics/failing-grades-soar-as-professors-see-greater-ai-usage-dwindling-math-skills-in-uc-berkeley/article_16fad0bf-02cb-4b8c-8d88-888ffd9f8608.html">much higher failure rate</a> than in the past. Some instructors attribute it to AI usage.</p><blockquote><p>Garcia believes the &#8220;primary driver&#8221; of these abnormally high failing rates is due to a &#8220;vast increase in academic dishonesty&#8221; due to students&#8217; usage of large language models, such as Claude, ChatGPT and Google Gemini.</p></blockquote><p><strong>Instructor surveys.</strong> In <a href="https://doi.org/10.1145/3689187.3709614">Prather et al. (2025)</a>, instructors reported a higher level of academic dishonesty and poorer performance on proctored exams. Here is an illustrative quote:</p><blockquote><p>I don&#8217;t think we&#8217;ve ever had such large numbers of students who go into a test and simply can&#8217;t do anything.</p></blockquote><h2><strong>Root causing: Cognitive offloading for homework</strong></h2><p>This is speculative, but I suspect that the main way in which AI harms learning is because students no longer learn well <strong>outside of the classroom</strong> -- because the cognitive effort for doing <strong>homework is offloaded to AI</strong>.</p><p><strong>Why I focus on homework</strong> is because the course curriculum and in-person exams have not changed that much recently. One big change, instead, is how students <strong>learn outside</strong> of the classroom, and most of the learning happens through their <strong>homework</strong>. In support of this hypothesis, the previous section mentioned some instructors attributing the reduction in learning to academic dishonesty -- this most likely happens in unproctored settings, like when students are doing their homework.</p><p><strong>Cognitive offloading.</strong> How does using AI on homework hinder learning? One possible reason is due to cognitive offloading (<a href="https://doi.org/10.1016/j.tics.2016.07.002">Risko &amp; Gilbert, 2016</a>), but there are more -- <a href="https://doi.org/10.1145/3769994.3770036">Bernstein et al., 2025</a> has a more comprehensive, AI-specific list if you want more ammo. Your brain needs to go through several <a href="https://sjonany.github.io/posts/how-to-build-mental-models-for-cs-concepts.html">active processes</a> to capture new mental models. If you offload the cognitive work to another intelligence (an AI, or another human), the mental model never forms in your brain.</p><h2><strong>How this is worse than pre-AI</strong></h2><p>Even though pre-AI, cognitive offloading on homework was already a problem, this problem is exacerbated by AI for these reasons:</p><p><strong>Accessibility.</strong> You no longer have to pay the social cost of asking your classmate for the answer. You can bypass the hard thinking with just a few seconds of typing. So, the <strong>cost</strong> of cheating is lower than it used to be.</p><p><strong>Illusion of competence.</strong> You spend a minimal effort writing down your question, and instead of attributing the answer ownership to a non-human AI, you might intuitively feel that it is <strong>you</strong> who own the answer. After all, in the chatbox is just you and ... well, the AI. It is easy to feel that the personalized AI chat is an extension of you, more so than you feel like a publicly available solution manual or a classmate is an extension of your thinking. Finally, this mistaken ownership misleads you into thinking that it was your competence that produced the work. <a href="https://doi.org/10.1145/3769994.3770036">Bernstein et al. (2025)</a> mentioned the term &#8220;illusion of competence&#8221; to capture this effect. The result, then, is that you <strong>feel</strong> like you crushed the homework, only to be surprised by how you are unable to repeat the same performance during in-person exams.</p><h2><strong>Next steps</strong></h2><p>If turning a blind eye to AI usage is setting up students for failure, then what can educators do? Can we do better than just writing an AI policy doc? Can we do more so that we can use AI to <strong>accelerate</strong> learning instead - and what&#8217;s actually practical for a single instructor? We&#8217;ll tackle this on a future post...</p><h2><strong>References</strong></h2><ul><li><p>Risko, E. F., &amp; Gilbert, S. J. (2016). Cognitive offloading. <em>Trends in Cognitive Sciences, 20</em>(9), 676&#8211;688. <a href="https://doi.org/10.1016/j.tics.2016.07.002">https://doi.org/10.1016/j.tics.2016.07.002</a></p></li><li><p>Prather, J., Leinonen, J., Kiesler, N., Gorson Benario, J., Lau, S., MacNeil, S., Norouzi, N., Opel, S., Pettit, V., Porter, L., Reeves, B. N., Savelka, J., Smith, D. H., Strickroth, S., &amp; Zingaro, D. (2025). Beyond the Hype: A Comprehensive Review of Current Trends in Generative AI Research, Teaching Practices, and Tools. In <em>2024 Working Group Reports on Innovation and Technology in Computer Science Education (ITiCSE-WGR &#8216;24).</em> ACM. <a href="https://doi.org/10.1145/3689187.3709614">https://doi.org/10.1145/3689187.3709614</a> (arXiv:2412.14732)</p></li><li><p>Bernstein, S., Rahman, A., Sharifi, N., Terbish, A., &amp; MacNeil, S. (2025). Beyond the Benefits: A Systematic Review of the Harms and Consequences of Generative AI in Computing Education. In <em>Proceedings of the 25th Koli Calling International Conference on Computing Education Research (Koli Calling &#8216;25).</em> ACM. <a href="https://doi.org/10.1145/3769994.3770036">https://doi.org/10.1145/3769994.3770036</a> (arXiv:2510.04443)</p></li><li><p>The Daily Californian (June 2026). <em>Failing grades soar as professors see greater AI usage, dwindling math skills in UC Berkeley.</em> <a href="https://www.dailycal.org/news/campus/academics/failing-grades-soar-as-professors-see-greater-ai-usage-dwindling-math-skills-in-uc-berkeley/article_16fad0bf-02cb-4b8c-8d88-888ffd9f8608.html">https://www.dailycal.org/news/campus/academics/failing-grades-soar-as-professors-see-greater-ai-usage-dwindling-math-skills-in-uc-berkeley/article_16fad0bf-02cb-4b8c-8d88-888ffd9f8608.html</a></p></li><li><p>Jonany, S. (2026). How to build mental models for CS concepts. <a href="https://sjonany.github.io/posts/how-to-build-mental-models-for-cs-concepts.html">https://sjonany.github.io/posts/how-to-build-mental-models-for-cs-concepts.html</a></p></li></ul>]]></content:encoded></item><item><title><![CDATA[How to build mental models for CS concepts]]></title><description><![CDATA[We previously argued for the importance of developing mental models. But, how does one develop them for computer science concepts like greedy algorithms?]]></description><link>https://stephenjonany.substack.com/p/how-to-build-mental-models-for-cs</link><guid isPermaLink="false">https://stephenjonany.substack.com/p/how-to-build-mental-models-for-cs</guid><dc:creator><![CDATA[Stephen Jonany]]></dc:creator><pubDate>Tue, 30 Jun 2026 23:23:50 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!O_az!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51b0b28-1f2e-4664-82c1-1f4e51f32881_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We previously argued for the importance of developing <a href="https://sjonany.github.io/posts/mental-models-in-your-brain-or-the-ais.html">mental models</a>. But, <strong>how</strong> does one develop them for computer science concepts like greedy algorithms?</p><h2><strong>Mental model definition</strong></h2><p>We first refine our understanding of &#8220;mental models&#8221; with this quote from <a href="https://www.google.com/books/edition/The_Cambridge_Handbook_of_Computing_Educ/vmAwEAAAQBAJ?hl=en&amp;gbpv=1&amp;dq=+Robins,+A.+V.,+Margulieux,+L.+E.,+%26+Morrison,+B.+B.+(2019).+Cognitive+sciences+for+computing+education&amp;pg=PA231&amp;printsec=frontcover">Robins et al. (2019)</a> &#8220;Expert programmers are characterized by a large library of useful <strong>schemata/plans</strong> that chunk and organize significant amounts of information in a form that <strong>reduces cognitive load</strong>. Many of the difficulties experienced by novice programmers arise from their <strong>lack of such organizing knowledge structures</strong>.&#8221;</p><p>So! Mental models are like brain-shelves that allow you to think more efficiently. You would be able to load more concepts into working memory and manipulate them with less mental tax. The more you have, the more efficient your thinking is. Let&#8217;s take a look at the mental processes needed to develop them.</p><h2><strong>Processes that develop mental models</strong></h2><p>As for how to develop these brain-shelves, you need to <strong>actively</strong> go through thinking tasks of <strong>varying levels of guidance</strong> in <strong>varying contexts</strong>.</p><h3><strong>Mode: active</strong></h3><p>In all the phases that we will see in the later sections, the most important qualifier is that you must <strong>actively</strong> engage with the material. By active, we mean one where you <strong>reconstruct from memory, without referring to external material.</strong> This is one of the two techniques rated as &#8220;high utility&#8221; in <a href="https://wcer.wisc.edu/docs/resources/cesa2017/Dunlosky_SciAmMind.pdf">Dunlosky et al. (2013)</a>&#8216;s review of learning strategies. Some examples -- Active: self-testing verbally while closing your eyes. Non-active: highlighting textbooks.</p><p>The &#8220;no external material&#8221; part makes sense (that means no looking at textbooks or AI output, mind you). The mental model exists in your head. To build this mental model, you need to <strong>exercise</strong> / shape / mold it enough such that you can reproduce the study material <strong>without external help.</strong> That&#8217;s how you ensure that the mental model, on its own, is robust enough.</p><p><strong>In practice.</strong> When I was a student, I tried to <strong>reconstruct the lecture materials</strong> from scratch on an empty piece of paper, and only looked at the lecture slide when stuck. This is like &#8220;self-quizzing&#8221;, but more thorough in that I really do try to re-derive all the concepts, as opposed to just filling in small blanks. There&#8217;s the pro that I don&#8217;t have to create flashcards too! The flash card is the lecture slide itself.</p><p>More readings on active recall here if interested: <a href="https://docs.google.com/document/d/1Q--oz2XvZJtX6Qdx2HrQYbIlbCmwhVbAWXD2-srTH7s/edit?tab=t.0">1</a> <a href="https://docs.google.com/document/d/11-iWheKkmcLWZ7p1p8xUjxUin4X4TgvmGXv5l9OEITo/edit?tab=t.0#heading=h.p3r2l36od66">2</a></p><h3><strong>Phases</strong></h3><p>Okay, we emphasized that we must be <strong>active</strong> in how we approach our learning. Now we&#8217;ll go through roughly-ordered phases that help you develop your mental model:</p><ol><li><p><strong>Build</strong> your initial model by going through and reconstructing the guided instruction / lecture slides</p></li><li><p><strong>Test.</strong> Stress-test your mental model by doing practice problems from homework and quizzes</p></li><li><p><strong>Retain.</strong> Review the material at a later date to make it stick.</p></li></ol><p><strong>Build: Go through guided instruction.</strong> You start by <strong>reading</strong> through <strong>known</strong> materials and <strong>self-explain</strong> these in multiple passes until you can go through all below <strong>from scratch</strong>. Here is a list of concepts that ideally exist in the guided instruction (i.e. your lecture notes). If you want the more authoritative source rather than my personal re-ordering, please see the references section below.</p><ul><li><p><strong>Example.</strong> Go through a worked example. E.g. <a href="https://youtu.be/2Vxl2HMpt2M?si=-tWhF0ACPbDJZmij&amp;t=111">video</a>. For a given concrete problem, work through example inputs and outputs, and a simulation run of the algorithm.</p></li><li><p><strong>Direct schema explanation.</strong> E.g. <a href="https://youtu.be/lfQvPHGtu6Q?si=jVVRco5JB9LOm-_a&amp;t=244">video</a>. Explain the abstract concepts that are generalizable across the examples, like optimal substructure, then relate this to the examples.</p></li><li><p><strong>Decomposition.</strong> If the process has multiple logical subcomponents, label the subcomponents explicitly. E.g. <a href="https://web.stanford.edu/class/archive/cs/cs161/cs161.1138/handouts/120%20Guide%20to%20Greedy%20Algorithms.pdf">handout</a>. Especially for anything that&#8217;s sequential like &#8220;First, define your solution, second define your measure, third prove that greedy stays ahead&#8221;, give a <strong>functional label</strong> to each step and provide per-step examples.</p></li><li><p><strong>Map to known mental models.</strong> Map to familiar concepts so you can link to existing mental models. <strong>Analogies</strong> can work well here. E.g. To minimize total debt payment, you prioritize paying off the highest-interest debt first. You intuit that focusing on just the one highest-interest debt at a time will be best for you long term.</p></li><li><p><strong>Negative examples.</strong> Show common misconceptions. E.g. show intuitive approaches that are wrong and counterexamples.</p></li><li><p><strong>Multiple examples.</strong> Go through multiple examples to ensure that your mental model is of the right level of abstraction to at least generalize to them. E.g. <a href="https://usaco.guide/silver/greedy-sorting?lang=cpp">handout</a></p></li><li><p><strong>Intuitive explanation.</strong> You should <strong>create</strong> explanations that are intuitive to you by (1) Drawing a <strong>diagram</strong> and/or (2) Having a <strong>one-liner explanation</strong> that may sacrifice accuracy for intuitiveness. This personalized representation is the main form that you would invoke <strong>in real life, outside of class</strong>, and should be <strong>personalized</strong> to you. I usually do this at the end of every lecture by writing a <strong>TL;DR</strong> section at the top of the document with one-liner explanations of the important concepts. E.g. When I think of greedy algorithms I think of &#8220;pick locally optimal moves that are also proven to be globally optimal&#8221;. Or when I think of &#8220;breadth-first search&#8221; I can visualize a cloud that expands concentrically from a middle point.</p></li></ul><p><strong>Test: Practice / apply.</strong> This is where homework comes in. You see if the mental model developed by going through the known materials is flexible enough to generalize to new materials.</p><ul><li><p><strong>Solve novel problems.</strong> Go through <a href="https://courses.cs.washington.edu/courses/cse421/25wi/files/exams/practice-midterm-1-solutions.pdf">past exams</a> or <a href="https://usaco.guide/silver/greedy-sorting?lang=cpp">programming contests</a>.</p></li><li><p><strong>Interleave problem types.</strong> Go through a set containing problems of different types <strong>without</strong> knowing which technique to use to see if you know when to apply a certain technique vs another.</p></li></ul><p><strong>Retain: Spaced repetition.</strong> This is the only other top-rated tip from <a href="https://wcer.wisc.edu/docs/resources/cesa2017/Dunlosky_SciAmMind.pdf">Dunlosky et al. (2013)</a>. If you want something to stick, <strong>review</strong> it periodically. The scattered cadence of quizzes, homework, and exams kind of already does this for you. To quote: &#8220;To remember something for one week, learning episodes should be 12 to 24 hours apart; to remember something for five years, they should be spaced six to 12 months apart. Although it may not seem like it, you actually do retain information even during these long intervals, and you quickly relearn what you have forgotten.&#8221;</p><h2><strong>Putting things into practice</strong></h2><p><strong>Student.</strong> As a student, after every lecture, do the following:</p><ul><li><p><strong>First pass.</strong> Go through the lecture slides to see if you can understand each slide even on a passive read. If you don&#8217;t understand something, ask someone / AI.</p></li><li><p><strong>Augment.</strong> Augment each slide with list items from the previous section that are missing. E.g. Use AI to come up with another example of the same concept, if you don&#8217;t get it yet. Or you can also ask AI to decompose a complex algorithm into subcomponents and give each an intuitive one-word label.</p></li><li><p><strong>Second pass: reconstruct.</strong> Go to a room with 0 internet, an empty piece of paper, and a printout of the lecture slides. Regenerate the lecture slide by just looking at the slide title, but don&#8217;t look at the slide detail unless you are stuck.</p></li><li><p><strong>Third pass: intuition.</strong> Put a TL;DR section at the top of your note. Give one-liner explanations and visuals of the important concepts.</p></li><li><p><strong>Practice.</strong> Do a lot of problems. Usually homework and past exams are enough. You should do the thinking on your own first, and only check the solution, or use AI after you&#8217;re stuck for, say, more than 15 minutes.</p></li></ul><p><strong>Instructor.</strong> As an instructor, the job is to create a learning environment that encourages students to go through all the mental processes as mentioned previously, both inside and outside of the classroom. This will be tackled in a future blog post.</p><h2><strong>What&#8217;s next?</strong></h2><p>In summary, to develop mental models, you need to be able to <strong>actively</strong> reconstruct the material from memory and test it against a <strong>variety</strong> of problems. To retain them, you would revisit the material <strong>at least a week</strong> after you learnt it.</p><p>That&#8217;s a lot of work though! In subsequent posts, let&#8217;s see how <strong>external agents</strong> like CS educators and AI can help or hinder students as they go through these requisite mental processes.</p><h2><strong>References</strong></h2><p><a href="https://wcer.wisc.edu/docs/resources/cesa2017/Dunlosky_SciAmMind.pdf">Dunlosky, J., Rawson, K. A., Marsh, E. J., Nathan, M. J., &amp; Willingham, D. T. (2013). What works, what doesn&#8217;t. Scientific American Mind, 24(4), 46&#8211;53.</a></p><ul><li><p>Their full peer-reviewed review: <a href="https://pubmed.ncbi.nlm.nih.gov/26173288/">Dunlosky, J., Rawson, K. A., Marsh, E. J., Nathan, M. J., &amp; Willingham, D. T. (2013). Improving students&#8217; learning with effective learning techniques. </a><em><a href="https://pubmed.ncbi.nlm.nih.gov/26173288/">Psychological Science in the Public Interest, 14</a></em><a href="https://pubmed.ncbi.nlm.nih.gov/26173288/">(1), 4&#8211;58.</a></p></li></ul><p>Robins, A. V., Margulieux, L. E., &amp; Morrison, B. B. (2019). Cognitive sciences for computing education. In S. A. Fincher &amp; A. V. Robins (Eds.), <em>The Cambridge Handbook of Computing Education Research</em> (pp. 231&#8211;275). Cambridge University Press. <a href="https://doi.org/10.1017/9781108654555.010">https://doi.org/10.1017/9781108654555.010</a></p><ul><li><p><a href="https://www.google.com/books/edition/The_Cambridge_Handbook_of_Computing_Educ/vmAwEAAAQBAJ?hl=en&amp;gbpv=1&amp;dq=+Robins,+A.+V.,+Margulieux,+L.+E.,+%26+Morrison,+B.+B.+(2019).+Cognitive+sciences+for+computing+education&amp;pg=PA231&amp;printsec=frontcover">Chapter 9.6</a> is my main reference for the &#8220;guided instruction&#8221; section.</p></li></ul><p><a href="https://teachtogether.tech/en/">https://teachtogether.tech/en/</a></p><ul><li><p>The <a href="https://teachtogether.tech/en/#s:individual-strategies">six strategies</a> section here has a lot of overlap, and a lot more references</p></li></ul>]]></content:encoded></item><item><title><![CDATA[Mental Models in Your Brain, or the AI's]]></title><description><![CDATA[Why should we bother building mental models in our brain if we can just "ask AI"? Here are some thoughts.]]></description><link>https://stephenjonany.substack.com/p/mental-models-in-your-brain-or-the</link><guid isPermaLink="false">https://stephenjonany.substack.com/p/mental-models-in-your-brain-or-the</guid><dc:creator><![CDATA[Stephen Jonany]]></dc:creator><pubDate>Thu, 25 Jun 2026 20:26:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!O_az!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51b0b28-1f2e-4664-82c1-1f4e51f32881_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In a previous<span> </span><strong><a href="https://sjonany.github.io/posts/why-you-still-need-to-learn-even-when-ai-can-do-anything.html">blog post</a></strong>, we gave a philosophical answer to why we need education even in the age of AI -- to<span> </span><strong>want</strong><span> </span>better. Here we give a more practical answer: Because education helps you build<span> </span><strong>mental models</strong>, and readily-accessible mental models are necessary for you to (1) communicate in real time with other humans (2) steer AI more effectively (3) think more authentic thoughts.</p><h3><strong>What&#8217;s a mental model?</strong></h3><p><strong><a href="https://en.wikipedia.org/wiki/Mental_model">Wikipedia&#8217;s</a></strong><span> </span>definition is &#8220;internal representation of external reality&#8221;. I&#8217;ll expand a bit.</p><ul><li><p>When we have a<span> </span><strong>model</strong><span> </span>of a system, we can<span> </span><strong>predict</strong><span> </span>the system&#8217;s behavior under various inputs, and even system modifications. We can also<span> </span><strong>reconstruct</strong><span> </span>/ manifest the system in real life (e.g. by coding it).</p></li><li><p>When we say the model is<span> </span><strong>mental</strong>, we mean the model exists in your mind. It&#8217;s in a format that&#8217;s amenable to<span> </span><strong>thinking</strong>.</p></li></ul><h3><strong>Why build a mental model?</strong></h3><p>That is, why can&#8217;t we just rely on the mental models that exist in an AI? Here are 3 reasons -- one for each kind of interaction: [with other humans, with AI, and with yourself].</p><h3><strong>1. To communicate with other humans</strong></h3><p>Here are some practical scenarios. During a design review, a senior engineer says: &#8220;Let&#8217;s cache this. But remember to add invalidation code in the real-time write paths.&#8221; Or, your co-founder, during a brainstorming session says: &#8220;I&#8217;m not sure if the round-robin approach to fairness is enough. We also want to incorporate how many times the job has failed for each customer, and their subscription tier.&#8221;</p><p>It&#8217;s not acceptable for you to always respond with &#8220;Oh sorry give me 1 hour to learn about these topics with AI first.&#8221; Conversations that happen in real time require you to have a lot of mental models pre-built in. If you don&#8217;t have a rich library of mental models, fewer people would want to collaborate with you.</p><h3><strong>2. To steer AI</strong></h3><p>You also need mental models even for workflows where no human is waiting for your response in real time. Consider your workflow as you review an AI&#8217;s design or code output. You might argue that you don&#8217;t need to have a mental model for understanding the AI&#8217;s output beforehand, because you can simply have conversations with the AI to build the mental model on the fly. But (1) will you want to do this when you are mentally tired and you have an impending deadline? (2) do you even know about the right clarifying questions to ask, if you don&#8217;t know about the pertinent design choices for the system?</p><p>As an example, when you review code, you might quickly have spidey-senses that go like this: &#8220;Huh, there&#8217;s a for loop in this DB transaction, and ... wait there are remote calls in this loop?! Whoa, this transaction is going to hold on to the locks for a long time.&#8221; As you scan through a lot of code files, you need to have this kind of reasoning happening in real time to be able to flag which sections to probe deeper with AI. Without a rich mental model of DB transactions, locks, and network calls, you would not be able to truly verify and be a responsible steward for the code generated by the AI (i.e., you produce AI slop).</p><h3><strong>3. To communicate with yourself / generate authentic thoughts</strong></h3><p>In all the examples above, you need to<span> </span><strong>chain thoughts</strong><span> </span>together to respond to the world. Chaining thoughts requires mental models that are readily meldable to each other, as well as to your goals.</p><p>I suspect that chaining<span> </span><strong>in real time, without waiting for AI</strong>, is important for generating thoughts that are<span> </span><strong>closer aligned</strong><span> </span>to your values. I&#8217;m not saying that we shouldn&#8217;t use AI. I&#8217;m saying that in the process of iteratively refining what you want, when it&#8217;s your turn to think and provide an input to the AI, sometimes you might want to<span> </span><strong>think harder</strong>, or heck, even take a walk first, before writing the prompt. This is because this self-driven thinking is intimately tied to your personal sense of &#8220;good&#8221;. E.g. I recently went on a thinking walk to figure out what kind of app would help me keep track of my jazz repertoire. At the end of the walk, I decided that I just want a<span> </span><strong><a href="https://sjonany.github.io/jazz-standards-tracker/">simple app</a></strong><span> </span>that has 0 cloud components, and one that has a video-game-like interface. It&#8217;s unclear if I would have come up with a simple,<span> </span><strong>personally delightful</strong><span> </span>solution if I hadn&#8217;t done this thinking alone first.</p><p>Another angle to see this is to think about system inputs and outputs. If you don&#8217;t think too much before writing prompts to feed into AI, then you will probably just feed in the top K prompts that other humans have fed in, and in turn get the same small space of responses. You are unlikely to generate thoughts that are uniquely you.</p><h3><strong>Conclusion</strong></h3><p>Building mental models within you allows you to<span> </span><strong>think</strong><span> </span>for yourself,<span> </span><strong>collaborate</strong><span> </span>with others, and<span> </span><strong>steer AI</strong><span> </span>more effectively.</p><p>As for how to build them (and how AI can help or detract) ... that&#8217;s for a future post!</p>]]></content:encoded></item><item><title><![CDATA[A CS student’s job hunt in 2026: an honest playbook ]]></title><description><![CDATA[It&#8217;s harder to get hired as a junior engineer now than ever.]]></description><link>https://stephenjonany.substack.com/p/a-cs-students-job-hunt-in-2026-an</link><guid isPermaLink="false">https://stephenjonany.substack.com/p/a-cs-students-job-hunt-in-2026-an</guid><dc:creator><![CDATA[Stephen Jonany]]></dc:creator><pubDate>Tue, 02 Jun 2026 15:30:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!O_az!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51b0b28-1f2e-4664-82c1-1f4e51f32881_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#8217;s harder to get hired as a junior engineer now than ever. There is lower demand (for juniors, but not necessarily for senior engineers) and more supply (i.e. competition). Cite: <a href="https://economicgraph.linkedin.com/content/dam/me/economicgraph/en-us/PDF/linkedIn-labor-market-report-building-a-future-of-work-that-works-jan-2026.pdf">LinkedIn Jan 2026</a>:</p><blockquote><p>Record Computer Science (CS) colliding with a cooling hiring for entry-level software engineers (SWE).</p></blockquote><p>The environment is harsher, so you have to be more intentional and work harder than your seniors did. Realistically, expect 100+ applications, lots of rejection, and a search that takes months. This is the norm, not a sign you&#8217;re doing it wrong. With that in mind, here is an updated list of advice I would give to myself if I were a CS junior today.</p><p><strong>EDIT (5/31/2026)</strong>: 80000hours.org has this awesome <a href="https://80000hours.org/career-guide/how-to-get-a-job/">in-depth guide</a>. I especially love this section on motivation:</p><blockquote><p>Your first job search may be one of the hardest things you&#8217;ve ever done. You may have never been rejected 30 times in a row before. It can involve months of work. And you may have to do most of it alone. It can make online dating look easy. This means you&#8217;ll need to throw every <a href="https://80000hours.org/career-guide/how-to-be-successful/#how-to-become-more-motivated">motivational technique</a> out there at it. The most useful is to pair up with someone else who&#8217;s job hunting.</p></blockquote><h2><strong>Commit to daily habits</strong></h2><p>If you take away one thing from this post, take <strong>5 minutes</strong> to do the following. (1) Schedule two recurring <strong>30-minute</strong> blocks on your calendar every day &#8212; one for applying, one for upskilling. (2) Create 2 Google Docs to track action items for each session. For now, each doc should have only these two items: (1) fill in the list with items from this post (2) reorder by priority based on where you&#8217;re at and which jobs you&#8217;re targeting.</p><h2><strong>Prereqs</strong></h2><p>These are minimum requirements that you want to clear ASAP before you start applying.</p><ul><li><p><strong>Class: Data structure, runtimes.</strong> Take a junior-level data structures (<a href="https://courses.cs.washington.edu/courses/cse332/">UW CSE 332</a> <a href="https://allisonobourn.com/edmonds/143/spring23/syllabus.shtml">Edmonds CS 143</a>) class ASAP. I heard this recommendation a decade ago as a junior, and after a decade in industry, I still stand by it. If you don&#8217;t have a clear understanding of priority queues, hashing, and big-O runtimes, you will most likely fail technical interviews &#8212; and even if you pass, your teammates will be frustrated that they can&#8217;t have meaningful conversations with you about runtime performance and data manipulation.</p></li><li><p><strong>Project: At least 1.</strong> Have at least 1 project, either personal or from a capstone class. Make sure it has a GitHub page that explains why the project is useful (a video works well &#8212; see <a href="https://github.com/sjonany/comedy-coach-app">example</a>) and a link showing your design thinking (<a href="https://docs.google.com/document/d/1T3rWOU-3i9XD_WuCVmVEdFnNKUTnSM8bSeO3da9JzdA/edit?tab=t.0#heading=h.gcb5jijx2qmd">example</a>).</p></li><li><p><strong>Resume.</strong> Have a LinkedIn profile and a <a href="https://docs.google.com/document/d/1z6G0CjMhAkKeqCyggJOCLFiD7IhwnRPKefQbRqXC4DU/edit?tab=t.0">document-form resume</a>. If you have time, also build a personal <a href="https://sjonany.github.io/">website</a>.</p></li></ul><h2><strong>Get interviews</strong></h2><ul><li><p><strong>Start ASAP.</strong> Start applying for internships and full-time opportunities as soon as you&#8217;ve finished your data structures class. Use multiple <a href="https://share.google/aimode/yTeYvNDacRqvoydAm">job search sites</a>, look at your college&#8217;s <a href="https://www.cs.washington.edu/academics/undergraduate/career-resources/">career programs</a>, and figure out when the interview cycles start (<a href="https://www.careereducation.columbia.edu/news/june-2023/heres-whats-happening-tech-recruiting-timelines-2023-2024">example</a>).</p></li><li><p><strong>Personalize your resume.</strong> Before you apply, tailor each resume to the job, if possible. AI makes this easy. E.g. for an embedded engineering role: (1) reorder your projects so the embedded capstone is at the top, and (2) update the profile summary so the hiring manager sees you as a great fit. A friend of mine wrote an AI-based script to automate this :D &#8212; something like: &#8220;Given this job description and my resume, can you output a personalized resume? Here are some personalization examples: &#8230;&#8221;.</p></li><li><p><strong>Reach out actively.</strong> Send personalized cold emails to real people <strong>in addition</strong> to the hiring portal. If a company you&#8217;re really interested in doesn&#8217;t have a hiring portal, reach out anyway. See <a href="https://www.reddit.com/r/cscareerquestionsOCE/comments/1acm703/my_guide_to_cold_emailingpitching_to_companies/">example</a>.</p></li><li><p><strong>Leverage connections.</strong> Is there anyone in your network willing to vouch for you? E.g. when I was a wee baby in community college, fresh out of my second CS course, I asked my professor if there was any collaboration opportunity I could take. He was kind enough to hook me up with a <a href="https://dl.acm.org/doi/abs/10.5555/2379703.2379746">research project</a> at another university.</p></li><li><p><strong>Increase breadth.</strong> A tiered approach works well: for companies you really want, do the costlier tips like resume personalization; for the rest, just mass apply. If you&#8217;re not getting any bites for SWE positions, apply to adjacent roles like QA, support eng, devrel, TPM, IT, contracting, or smaller no-name startups. One success story: a friend of mine got a support eng role at a startup and was also offered SWE projects with the potential to switch to a SWE role.</p></li></ul><h2><strong>Build skills in parallel</strong></h2><ul><li><p><strong>Budget your time: Level up v.s. apply.</strong> Figure out the right balance between time spent finding new opportunities and time spent upskilling. I personally would cap applications at <strong>30 minutes</strong> per day, <a href="https://www.reddit.com/r/cscareerquestions/comments/caga30/comment/et8lvhk/?utm_source=share&amp;utm_medium=web3x&amp;utm_name=web3xcss&amp;utm_term=1&amp;utm_content=share_button">at the end of the day</a> when my brain is tired. The rest is reserved for upskilling, unless I feel my skill set is already strong enough relative to peers who got jobs.</p></li><li><p><strong>Show excellence, and network</strong>. Be excellent to the people in your program &#8212; professors and classmates. Do well in your classes. Show up to office hours with thoughtful questions. Find excellent classmates and do projects with them. Are you the kind of person your professors and classmates would be delighted to help succeed (e.g. referrals, mock interviews, sharing interview experience)?</p></li><li><p><strong>Research the interview meta.</strong> For the companies you&#8217;re interested in, are they still asking leetcode questions? Do they allow AI? Ask your classmates who recently interviewed. Some sites like LeetCode (premium-only, but <a href="https://github.com/liquidslr/interview-company-wise-problems">some lists are public</a>) also show recent questions asked per company.</p></li><li><p><strong>Research the work meta.</strong> What skills are now needed on the job at the junior level? Ask your seniors who recently got a job. E.g. <a href="https://cra.org/industry/wp-content/uploads/sites/9/2025/05/CCC-Whitepaper_-The-Future-of-Programming-in-the-Age-of-Large-Language-Models.pdf">Guha et al., 2025</a> notes that &#8220;being able to rapidly read and understand code is more important than ever.&#8221; Take courses and build side projects that exercise these skills.</p></li><li><p><strong>Learn.</strong> Learn those skills either by taking courses (e.g. an algorithms course if leetcode-like questions will be asked; software engineering group project capstones never hurt) or by self-study.</p></li><li><p><strong>Personal projects.</strong> Build more personal projects that tick the keywords your ideal jobs are likely to look for. Interested in mobile development? Look at the job postings and see which popular framework to use.</p></li><li><p><strong>Personal list: AI, cloud infra, system design.</strong> This one is more personal. When I was in charge of hiring at a startup, my main qualm with junior engineers was that I couldn&#8217;t validate how effective they&#8217;d be as a colleague &#8212; they lacked the vocabulary to even talk about the practical building blocks of system design. I&#8217;d ask questions like &#8220;Where would you host this code?&#8221; and get uncertain answers like &#8220;Oh, idk, a jupyter notebook?&#8221;. Most university courses unfortunately don&#8217;t touch on the practical technologies real engineers use day-to-day, so you would have to learn these on your own time. To fill the gap, find walkthroughs you can follow along with (<a href="https://www.youtube.com/watch?v=MoG_8V_b_8A">example</a>) and build personal projects that exercise these concepts. As of May 2026, I would recommend that you at least know what these are for and be able to converse about them: [docker, terraform, LLM API, S3, EC2, dynamodb].</p></li></ul><h2><strong>Pass the interview</strong></h2><ul><li><p><strong>Understand the format.</strong> Ask the recruiter what the interviews are like, and whether AI is allowed. E.g. from a friend I coached: &#8220;Per your advice, the day before I asked if I was allowed to use AI/the internet during the interview, and they said no. In the interview, the interviewer said 90% of candidates have been using AI and they would stop the call if I was caught, so I felt good knowing that ahead of time.&#8221;</p></li><li><p><strong>Beyond coding interviews.</strong> Check if there are interviews beyond just coding rounds &#8212; usually system or behavioral rounds. Prepare for these too, including behavioral. Use AI to brainstorm a list of questions, answer each one, then add trigger keywords for each answer so you can recall your answer outline on demand.</p></li><li><p><strong>Practice with humans.</strong> Ask your friends or mentors for a mock interview.</p></li><li><p><strong>Practice with AI.</strong> Use LLMs to craft interview questions and practice against them. An example prompt: &#8220;Given this job posting [&#8230;] and the emails from the recruiter [&#8230;], what questions are they likely to ask?&#8221; I had great luck with this approach &#8211; I helped a friend pass a data analyst interview by giving a mock interview using this method. She said: &#8220;I wanted to let you know that the coding interview on Tuesday went well! The coding part was close to the practice you set up with tables, and I was asked to explain how I would achieve certain objectives in the Google Doc with SQL and Python. I felt super prepared based on the examples we worked through! &#8220; Then a week later, a celebratory email: &#8220;I wanted to let you both know that I got this job!! I accepted the offer on Tuesday :)&#8221;</p></li></ul><p>Hoo boy. That&#8217;s a lot of information. Now go back to the earlier section on &#8220;Commit to daily habits&#8221; and start executing!</p>]]></content:encoded></item><item><title><![CDATA[Why we need in-person exams ]]></title><description><![CDATA[We established previously that even with AI, humans should likely still need to learn CS 101. Now, we claim that any graded course should have in-person exams. Let&#8217;s build the claim step by step!]]></description><link>https://stephenjonany.substack.com/p/why-we-need-in-person-exams</link><guid isPermaLink="false">https://stephenjonany.substack.com/p/why-we-need-in-person-exams</guid><dc:creator><![CDATA[Stephen Jonany]]></dc:creator><pubDate>Tue, 02 Jun 2026 15:30:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!O_az!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51b0b28-1f2e-4664-82c1-1f4e51f32881_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We established previously that even with AI, humans should likely <a href="https://sjonany.github.io/posts/why-ai-wont-kill-cs-101.html">still need to learn CS 101</a>. Now, we claim that any graded course should have <strong>in-person exams.</strong> Let&#8217;s build the claim step by step!</p><h2><strong>Grades should reflect unaided ability</strong></h2><p>Grades should at least partially reflect the students&#8217; ability to compute using the concepts taught in class <strong>without the use of AI</strong>.</p><p><strong>But we have access to AI irl, so why improve unaided ability?</strong> One&#8217;s unaided ability still matters, even in the age of AI. This is because some flows &#8212; like self-driven brainstorming (where you play around with concepts you have a good grasp of) and conversations with other humans &#8212; require that some concepts be <a href="https://sjonany.github.io/posts/why-you-still-need-to-learn-even-when-ai-can-do-anything.html">readily computable</a> without going back and forth with AI.</p><p><strong>Aids are more accessible now. Q:</strong> Ok sure, unaided ability is important, but that&#8217;s already true pre-AI, so why bring this up now? <strong>A:</strong> Because with AI, the cost of cheating is much lower than in the pre-AI era where you need to have another human to cheat with. You don&#8217;t need to incur a social cost &#8212; it&#8217;s as simple as doing a few keystrokes.</p><h2><strong>How to grade unaided ability: In-person examination</strong></h2><p>The current best way to prevent students from using AI for the evaluation process is to do it <strong>in-person.</strong></p><p><strong>Weak attempts.</strong> It&#8217;s worth noting that online courses like <a href="https://cs50.harvard.edu/college/2026/spring/test/">Harvard CS50</a> used <a href="https://proctorio.com/">proctorio</a>, which of course can be <a href="https://www.youtube.com/watch?v=tdkLezgCkbM">bypassed</a>.</p><p><strong>What it takes: Sense check.</strong> To ensure that students only use their brain to take the exam, and not another brain (another human, or AI), one must ensure that all <strong>sense inputs</strong> that the student receives don&#8217;t contain new information &#8212; e.g. no new visual or audio cues that contain information that help the students. Today, the cheapest and most reliable sensor to achieve this is to have the instructor double up as a human proctor.</p><p>To conclude! Courses that need to output grades, and want to evaluate the students&#8217; unaided ability, will likely need in-person exams for a long time.</p><h2><strong>Futuristic brainstorming</strong></h2><p>As a fun brainstorming exercise, if I have a reasonable budget from the teaching institution, and I am forced to host an exam remotely, I will want to use a combination of the following:</p><ul><li><p><strong>Student-perspective</strong> visual and audio recording. E.g. These <a href="https://ohosunshine.com/products/touch-handsfree-video-glasses-polarized">glasses</a> cost &lt; $50. This will help detect if the students are cheating using another device.</p></li><li><p><strong>Wide-perspective</strong> visual and audio recording. Have a wide-view recording using a phone that shows the student&#8217;s side profile and the workspace, to show that there is nobody else in the room, and that the student is wearing said glasses.</p></li><li><p>Both of these recordings are linked to the exam-taking platform, such that if the platform detects that one of the recordings is malfunctioning, we will pause the exam and tell the student to fix it.</p></li></ul><p>But practically speaking, if I&#8217;m suddenly forced to teach an online class, I would just use an existing platform like <a href="https://proctorio.com/products/online-proctoring">proctorio</a>.</p>]]></content:encoded></item><item><title><![CDATA[Why AI Won’t Kill CS 101 ]]></title><description><![CDATA[Q: Should we still teach CS freshmen how to code in Python even when we reach a stage where AI can do the coding for them?]]></description><link>https://stephenjonany.substack.com/p/why-ai-wont-kill-cs-101</link><guid isPermaLink="false">https://stephenjonany.substack.com/p/why-ai-wont-kill-cs-101</guid><dc:creator><![CDATA[Stephen Jonany]]></dc:creator><pubDate>Tue, 02 Jun 2026 15:29:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!O_az!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51b0b28-1f2e-4664-82c1-1f4e51f32881_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Q: Should we still teach CS freshmen how to code in Python even when we reach a stage where AI can do the coding for them?</p><p>A: Yes, because coding is an effective learning mechanism to learn about computing concepts, and we need this literacy to navigate some nuanced trade-offs of complex real-world systems.</p><p>&#8212; Now let us dive deeper.</p><p><a href="https://sjonany.github.io/posts/why-you-still-need-to-learn-even-when-ai-can-do-anything.html">Previously</a>, I argued that even when AI can do everything for you, humans still have to learn and be able to compute some complex concepts in real time, in order to collaboratively want better. But what are these complex concepts? For this post, let&#8217;s focus on a specific aspect of computer science education.</p><h2><strong>You need to read and write code to learn computing concepts &#8212; because coding is active learning</strong></h2><p>Let&#8217;s take a look at what you learn as a CS freshman. Using a language like Python, you would learn how to read, think through, make mistakes, and debug concepts like conditionals, loops, and function compositions. I remember my very first encounter with loops and functions &#8212; I had to play around in my IDE and make mistakes before I finally &#8220;got it.&#8221; This act of playing around requires something that is easy to read, edit, and run &#8212; and a programming language like Python is a good example. You could also say that coding is a very active form of learning, and this interactivity helps you understand concepts better. These basic concepts are then prerequisites for learning about data structures and algorithms, which IMO are really powerful mental toolkits for anyone to have. And this brings me to my next point&#8230;</p><h2><strong>Computing concepts are needed to &#8220;want&#8221; better</strong></h2><p>You need the concepts taught in data structures and algorithms classes to make design choices in some real-world systems. Let&#8217;s take a look at a few examples: resource prioritization and matching. When designing complex systems that have to satisfy conflicting interests of multiple human users, you might have to make decisions like &#8220;I prefer round robin instead of a priority queue based on a weighted average of the user&#8217;s features x,y,z because simplicity implies understandability and trust&#8221;, or &#8220;I want my dating platform to use the <a href="https://blogs.cornell.edu/info2040/2021/09/30/hinge-and-its-implementation-of-the-gale-shapley-algorithm/">Gale-Shapley</a> algorithm and I know about its pros and cons.&#8221; The book <a href="https://www.goodreads.com/book/show/29632790-algorithms-to-live-by">Algorithms To Live By</a> has more examples.</p><h2><strong>Conclusion</strong></h2><p>I feel more optimistic about claiming that for the foreseeable future, it is useful for some people to take CS 101, where you would learn how to read, modify, and make mistakes with a programming language that teaches you loops, conditionals, and function composition. They set up the basis for you to learn complex computing concepts that are necessary to navigate real-world tradeoffs.</p><h2><strong>Appendix: Weaker arguments</strong></h2><p>These are arguments that I initially considered, but later discarded.</p><p>Because AI might be malicious / have poor implementations. The argument here is that even if the AI understands your intention, it could implement something else that could be dangerous, and so it&#8217;s up to the humans who have code literacy to save the day. See <a href="https://www.anthropic.com/research/agentic-misalignment">Anthropic&#8217;s blog post</a> for a clear example. However, as argued by the book <a href="https://www.amazon.com/Anyone-Builds-Everyone-Dies-Superhuman/dp/0316595640">If Anyone Builds It, Everyone Dies</a>, if the AI is more intelligent than a human, then they will be able to craft hidden implementations that humans would be hard-pressed to detect by just reading the code.</p><ul><li><p>In the more immediate future, where AI still makes human-correctable mistakes, this argument holds. Clawdbot is a good example &#8212; It is useful for most to understand common security concepts, and guide the AI to provide a safer implementation.</p></li></ul><p>Because there are some use cases where you have to go down to the level of precision of code to achieve what you want. This I am less sure of. For most design decisions, I probably don&#8217;t need to go down to the level of for loops to dictate my preferences. I suspect for most design decisions I make, I could have just used a lot of vocab from my data structure and algorithms class without even mentioning the word &#8220;for loop&#8221;.</p>]]></content:encoded></item><item><title><![CDATA[Why you still need to learn even when AI can do anything ]]></title><description><![CDATA[Suppose we have come to a point where these AI tools can do anything you want.]]></description><link>https://stephenjonany.substack.com/p/why-you-still-need-to-learn-even</link><guid isPermaLink="false">https://stephenjonany.substack.com/p/why-you-still-need-to-learn-even</guid><dc:creator><![CDATA[Stephen Jonany]]></dc:creator><pubDate>Tue, 02 Jun 2026 15:27:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!O_az!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51b0b28-1f2e-4664-82c1-1f4e51f32881_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Suppose we have come to a point where these AI tools can do <strong>anything</strong> you want. Is it still useful for humans to go through the hard work of educating themselves? Or here&#8217;s some food for thought: <strong>Q:</strong> Would you want a first-grader with access to an all-powerful-genie to be a nation&#8217;s president?</p><p>Hopefully not :) Here&#8217;s a counter claim: Education is necessary for one to <strong>want</strong> better. This is because to want better, you need to</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stephenjonany.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><ol><li><p>Know enough concepts to shape what <strong>you</strong> want and</p></li><li><p>Meld what you want with <strong>other humans&#8217;</strong> wants</p></li></ol><p>Both of these require that <strong>you</strong>, not the AI, have the right reasoning and conceptual building blocks readily computable in your brain. Let&#8217;s go through each one of these points.</p><h2><strong>Shape your personal want</strong></h2><p>Real-life problems don&#8217;t have one optimal solution. They are filled with nuanced tradeoffs, and being able to understand these tradeoffs requires you to understand mechanisms across a wide variety of systems. As an example, if you are building an AI-backed product, you might want to reason: &#8220;How should we charge users for the inference cost? Should we show the user ads, which charge for their attention, instead of money, since more people have attention than money?&#8221;</p><p>A first-grader would have a hard time even saying this sentence out loud. For them to seriously <strong>deliberate</strong> on this tradeoff, they need to at least grasp <strong>concepts</strong> like attention, money, ads, inference, etc.), have the <strong>reasoning</strong> skills to map these options against their personal <strong>moral values</strong> that they hopefully have crafted to be mostly good for humanity.</p><h2><strong>Meld your want with others&#8217;</strong></h2><p><strong>Communicating</strong> with other humans with different wants is how you increase the chances that your want is a solution that benefits others &#8212; and usually the development of your values requires you to think about humanity at large, not just yourself anyway.</p><p>More pressingly, to communicate with other humans, you need to be able to do the above in <strong>REAL TIME</strong>! It&#8217;s not okay to me that while I&#8217;m discussing with my cofounder, they would say: &#8220;wait sorry I don&#8217;t understand the tradeoff between latency etc, give me an hour to catch up&#8221;. Negotiation, empathy, and collaboration happen at the speed of human conversation. This then requires that you, not AI, also have the <strong>mental agility</strong> to reason about these concepts in real time. Developing this mental agility requires hard work.</p><h2><strong>Conclusion</strong></h2><p>Before handing your 10-year-old the lamp (with a clawdbot sticker on it), make sure they know what to wish for and how to explain that wish to the rest of the world.</p><p><strong>CS education?</strong> How deep down the mechanistic level does one need to shape one&#8217;s want? What kind of wants would require one to go through CS undergrad education and learn how to read Python code? See <a href="https://sjonany.github.io/posts/why-ai-wont-kill-cs-101.html">this post</a>.</p><p><strong>Another thought: Learning to shape your values.</strong> To blindly accept AI-generated work before thinking carefully about your want is to blindly accept an alien value.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stephenjonany.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[From software to teaching ]]></title><description><![CDATA[I recently wrapped up my time as a software engineer at a startup, and got into a new adventure &#8230; teaching!]]></description><link>https://stephenjonany.substack.com/p/from-software-to-teaching</link><guid isPermaLink="false">https://stephenjonany.substack.com/p/from-software-to-teaching</guid><dc:creator><![CDATA[Stephen Jonany]]></dc:creator><pubDate>Mon, 01 Jun 2026 19:49:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!O_az!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc51b0b28-1f2e-4664-82c1-1f4e51f32881_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I recently wrapped up my time as a software engineer at a startup, and got into a new adventure &#8230; teaching! I&#8217;ll be teaching <a href="https://www.edmonds.edu/programs-and-degrees/areas-of-study/information-technology/computer-science/course-descriptions.html">CS 442: Algorithm Design and Analysis course</a> at Edmonds College this fall, and am stoked about it.</p><p>Here are some reflections that led me to this decision.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stephenjonany.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>Why transition now?</strong></h2><ul><li><p>The startup I was working at just hit a milestone (with WHO!), and I thought it&#8217;s a satisfactory end to my time there. <a href="https://www.linkedin.com/posts/-david-grey_agenticai-globalhealth-pandemicpreparedness-ugcPost-7465083981487669249-DX5a/">1</a> <a href="https://www.who.int/news/item/27-04-2026-practicing-today-for-tomorrow-s-emergencies-who-convenes-countries-and-partners-to-simulate-response-to-major-disease-outbreak">2</a>.</p></li><li><p>I have been in the software industry for over a decade, and feel a larger change is overdue.</p></li><li><p>I got interested thinking about AI and education <a href="https://sjonany.github.io/posts/why-you-still-need-to-learn-even-when-ai-can-do-anything.html">1</a> <a href="https://sjonany.github.io/posts/why-ai-wont-kill-cs-101.html">2</a> <a href="https://sjonany.github.io/posts/why-we-need-in-person-exams.html">3</a></p></li></ul><h2><strong>Why teaching?</strong></h2><p>I love <strong>teaching</strong>. I TA&#8217;ed 4 times during my time at <a href="https://www.cs.washington.edu/">UW</a>. When I was working, I gave friends of friends <a href="https://sjonany.github.io/posts/a-cs-students-job-hunt-in-2026-an-honest-playbook.html#pass-the-interview">mock interviews</a> and piano lessons. I love the <strong>process</strong> of figuring out how to help the person in front of me understand a concept. I find the <strong>memories</strong> &#8211; where I helped somebody get a job, or watched someone glow with excitement when they understood a new way to play their favorite songs &#8211; to be deeply meaningful.</p><p>On the other hand, I also love <strong>hard solo thinking</strong> on open frontier problems. I like <a href="https://sjonany.github.io/writing.html#computing">learning</a> and doing <a href="https://arxiv.org/abs/2302.05433">research</a> on state-of-the-art problems. The intersection between CS education and AI is rife with many of these open problems! The end goal of serving the students effectively in this volatile space naturally requires one to stay abreast of recent research findings, and to be thoughtful about how to apply them. What a privilege to be able to do both!</p><h2><strong>How is this different from my previous path?</strong></h2><p>Here are a couple of novel job attributes that this teaching path will tick:</p><p><strong>Peopleful.</strong> I want my day-to-day to be filled with human interactions that feel &#8230; for lack of a better word, more human. When I was a software engineer, while there was space for a lot of positive human interactions, my main mode of communication prioritizes <strong>efficiency</strong> &#8211; I want to give and get information with the fewest messages exchanged as possible. I suspect that having a job where the objective is to directly help the human in front of me not only to understand, but to <strong>want</strong> to understand, will give more room to the more empathetic side of me.</p><p><strong>Soul-building, value-alignment.</strong> On a more woo-woo note, I value <a href="https://medium.com/@sjonany/how-i-spend-my-time-aba6bdc3388">thinking, loving, and playing</a>, and would like to leave the world with more people who do these. Teaching seems to tackle all of these at once. I get to think hard about the materials and how to make them digestible and entertaining to the students. I will also likely get to face more interpersonal challenges as I try to care for humans who are balancing the struggles of not only the curriculum, but also life. There&#8217;s a lot of personal growth to be had in this new journey, and I look forward to it.</p><h2><strong>Are you done with software engineering then?</strong></h2><p>Nope. I still love building software, and will likely do it for a long, long time. I will just be more selective with the problem I&#8217;m working on, and right now it&#8217;s CS education in the age of AI.</p><h2><strong>Ending words</strong></h2><p>This is all written before I start the teaching position, so I&#8217;m also looking forward to seeing how I feel after my first quarter of teaching. That&#8217;s for end-of-the-year Stephen to reflect on!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stephenjonany.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>