<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Teaching on Hillel Wayne</title>
    <link>https://www.hillelwayne.com/tags/teaching/</link>
    <description>Recent content in Teaching on Hillel Wayne</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 07 Nov 2023 00:00:00 +0000</lastBuildDate>
    
	<atom:link href="https://www.hillelwayne.com/tags/teaching/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>A better explanation of the Liskov Substitution Principle</title>
      <link>https://www.hillelwayne.com/post/lsp/</link>
      <pubDate>Tue, 07 Nov 2023 00:00:00 +0000</pubDate>
      
      <guid>https://www.hillelwayne.com/post/lsp/</guid>
      <description>Short version: If X inherits from Y, then X should pass all of Y&amp;rsquo;s black box tests.
I first encountered this idea at SPLASH 2021.
The longer explanation A bit of background In A Behavioral Notion of Subtyping Liskov originally defined subtyping in inherited objects as follows:
 Subtype Requirement: Let P(x) be a property provable about objects x of type T. Then P(y) should be true for objects y of type S where S is a subtype of T.</description>
    </item>
    
    <item>
      <title>A Better Cheatsheet</title>
      <link>https://www.hillelwayne.com/post/cheatsheets/</link>
      <pubDate>Fri, 24 Jul 2020 00:00:00 +0000</pubDate>
      
      <guid>https://www.hillelwayne.com/post/cheatsheets/</guid>
      <description>Now that teach workshops for a living, I spend a lot of time on making better workshops. One improvement I made was creating progressive cheatsheets. I&amp;rsquo;ll discuss the motivation and implementation below, but this is the high level picture:
 .gallery { display: flex; text-align: center; } .gallery a { margin: 5px; border-width: 1px; border-style: solid; }      Progressions #1 and #2 of the cheatsheet. Click for full size.</description>
    </item>
    
    <item>
      <title>Weak and Strong Fairness</title>
      <link>https://www.hillelwayne.com/post/fairness/</link>
      <pubDate>Fri, 03 Jul 2020 00:00:00 +0000</pubDate>
      
      <guid>https://www.hillelwayne.com/post/fairness/</guid>
      <description>I&amp;rsquo;m in the process of revising some of my workshops. I realized that one particular important aspect of TLA+, fairness, is something that I&amp;rsquo;ve struggled to explain well. Then again, everybody struggles to explain it well! It&amp;rsquo;s also a great example of how messy concurrent systems can get, so I figured it would make a good post for the blog.
Stuttering Take the following spec of a clock. I used TLA+ but it should mostly be clear from context:</description>
    </item>
    
    <item>
      <title>Teaching Leaky Abstractions</title>
      <link>https://www.hillelwayne.com/post/teaching-leaky-abstractions/</link>
      <pubDate>Tue, 30 Jan 2018 00:00:00 +0000</pubDate>
      
      <guid>https://www.hillelwayne.com/post/teaching-leaky-abstractions/</guid>
      <description>I&amp;rsquo;m writing a book on TLA+! It&amp;rsquo;s going to be aimed at the same audience as Learn TLA+, but dive much deeper and go much further. I&amp;rsquo;ll be showing not just how to use TLA+, but how to think about systems, write good specifications, and fix models. I&amp;rsquo;m really excited and I&amp;rsquo;m sure you&amp;rsquo;ll be, too!
I&amp;rsquo;m also trying to make it much better than Learn TLA+, because
 People are going to be paying money for this, so I can&amp;rsquo;t just phone it in I asked my technical reviewer to be &amp;ldquo;almost-comically brutal&amp;rdquo; and he&amp;rsquo;s risen to the challenge.</description>
    </item>
    
    <item>
      <title>Instructive and Persuasive Examples</title>
      <link>https://www.hillelwayne.com/post/persuasive-examples/</link>
      <pubDate>Tue, 29 Aug 2017 00:00:00 +0000</pubDate>
      
      <guid>https://www.hillelwayne.com/post/persuasive-examples/</guid>
      <description>I recently read No excuses, write unit tests, which argues Unit Tests are Good and You Should Write Them. For the most part I strongly agree with their message, which is why I feel kinda bad criticizing the essay. They provide this as &amp;ldquo;an example of simple testing&amp;rdquo;:
constadd=(...numbers) =&amp;gt; { returnnumbers.reduce((acc, val) =&amp;gt; { returnacc+val; }, 0); }; it(&amp;#39;should add numbers&amp;#39;, () =&amp;gt; { constexpected=15; constactual=add(1, 2, 3, 4, 5); expect(actual).</description>
    </item>
    
  </channel>
</rss>