<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>James Wilcox's blog</title>
<link>http://jamesrwilcox.com/</link>
<atom:link href="http://jamesrwilcox.com/blog.xml" rel="self" type="application/rss+xml" />
<description>James Wilcox's Blog.</description>

<item>
<title>Teaching Principles</title>
<link>https://jamesrwilcox.com/teaching-principles.html</link>
<guid>https://jamesrwilcox.com/teaching-principles.html</guid>
<pubDate>Fri, 29 Apr 2022 00:00:00 -0700</pubDate>
<description>This living document collects James's Teaching Principles(tm).</description>
</item>

<item>
<title>Exercises on Generalizing the Induction Hypothesis</title>
<link>http://homes.cs.washington.edu/~jrw12/InductionExercises.html</link>
<guid>http://homes.cs.washington.edu/~jrw12/InductionExercises.html</guid>
<pubDate>Tue, 21 Feb 2017 00:00:00 -0700</pubDate>
<description>This post collects several Coq exercises on generalizing
the induction hypothesis.</description>
</item>


<item>
<title>A Port of the Proof of Peterson's Algorithm to Dafny</title>
<link>http://homes.cs.washington.edu/~jrw12/Peterson.dfy.html</link>
<guid>http://homes.cs.washington.edu/~jrw12/Peterson.dfy.html</guid>
<pubDate>Tue, 10 Jan 2017 00:00:00 -0700</pubDate>
<description>This code-only post is a port of the proof of Peterson's
Algorithm to Dafny.  It also serves as a good example of how to reason
about concurrent systems in Dafny, essentially by writing a thread
scheduler.</description>
</item>


<item>
<title>How to build a simple system in Verdi</title>
<link>http://homes.cs.washington.edu/~jrw12/Counter.html</link>
<guid>http://homes.cs.washington.edu/~jrw12/Counter.html</guid>
<pubDate>Sun, 24 Apr 2016 00:00:00 -0700</pubDate>
<description>In this long-awaited post, we'll show how to implement and verify
a simple distributed system using network semantics.</description>
</item>

<item>
<title>A Proof of Peterson's Algorithm</title>
<link>http://homes.cs.washington.edu/~jrw12/SharedMem.html</link>
<guid>http://homes.cs.washington.edu/~jrw12/SharedMem.html</guid>
<pubDate>Fri, 8 May 2015 00:00:00 -0700</pubDate>
<description>In this post, we take a break from distributed systems to
look at shared memory systems. As a case study, we give a proof that
Peterson's algorithm provides mutual exclusion.</description>
</item>


<item>
<title>Network Semantics for Verifying Distributed Systems</title>
<link>http://homes.cs.washington.edu/~jrw12/network-semantics.html</link>
<guid>http://homes.cs.washington.edu/~jrw12/network-semantics.html</guid>
<pubDate>Thu, 16 Apr 2015 00:00:00 -0700</pubDate>
<description> This is the first post in a series on Verdi. In this
post, we'll get our feet wet by defining a formal model of how
distributed systems execute on the network.</description>
</item>

<item>
<title>Reasoning about Cardinalities of Sums and Products</title>
<link>http://homes.cs.washington.edu/~jrw12/more-cardinality.html</link>
<guid>http://homes.cs.washington.edu/~jrw12/more-cardinality.html</guid>
<pubDate>Mon, 20 Oct 2014 00:00:00 -0700</pubDate>
<description>In this short, code-heavy post, we extend some of the
work from a previous post to reason about the cardinalities of sums
and products.</description>
</item>

<item>
<title>Dependent Case Analysis in Coq without Axioms</title>
<link>http://homes.cs.washington.edu/~jrw12/dep-destruct.html</link>
<guid>http://homes.cs.washington.edu/~jrw12/dep-destruct.html</guid>
<pubDate>Sun, 14 Sep 2014 00:00:00 -0700</pubDate>
<description> This post shows how to get around the limitations of the
destruct tactic when doing case analysis on dependent types, without
resorting to the dependent destruction tactic, which relies on
additional axioms.</description>
</item>

<item>
<title>"run" + "time" = ???</title>
<link>http://homes.cs.washington.edu/~jrw12/runtime.html</link>
<guid>http://homes.cs.washington.edu/~jrw12/runtime.html</guid>
<pubDate>Thu, 04 Sep 2014 00:00:00 -0700</pubDate>
<description> This brief post records Mike's description of the three
ways of combining the words "run" and "time" in computer science
writing.</description>
</item>

<item>
<title>"More Sums than Differences" Sets, Part 2: Counting MSTD Sets</title>
<link>http://homes.cs.washington.edu/~jrw12/mstd2.html</link>
<guid>http://homes.cs.washington.edu/~jrw12/mstd2.html</guid>
<pubDate>Thu, 12 Jun 2014 00:00:00 -0700</pubDate>
<description> This is the (much delayed) second post in a series on
More Sums than Difference Sets. In this post, we'll take a first crack
at the question, "How many MSTD sets are there?" To do so, we'll write
a straightforward C program that counts MSTD sets. Then we'll run it
to count MSTD sets and benchmark its performance.</description>
</item>

<item>
<title>Tail Recursion Modulo cons</title>
<link>http://homes.cs.washington.edu/~jrw12/tail-mod-cons.html</link>
<guid>http://homes.cs.washington.edu/~jrw12/tail-mod-cons.html</guid>
<pubDate>Thu, 10 Apr 2014 00:00:00 -0700</pubDate>
<description>Tail recursion has come up in a few conversations this
week. This post explores a generalization of tail call optimization
that I wasn't aware of until Doug described it to me.</description>
</item>

<item>
<title>"More Sums than Differences" Sets, Part 1: A puzzle</title>
<link>http://homes.cs.washington.edu/~jrw12/mstd1.html</link>
<guid>http://homes.cs.washington.edu/~jrw12/mstd1.html</guid>
<pubDate>Mon, 03 Mar 2014 00:00:00 -0800</pubDate>
<description>This is the first post in a series on "More Sums than
Differences" Sets. In this post, we'll get our terminology straight
and ask a lot of questions.</description>
</item>

<item>
<title>Easy access to the off-campus proxy</title>
<link>http://homes.cs.washington.edu/~jrw12/proxy-js.html</link>
<guid>http://homes.cs.washington.edu/~jrw12/proxy-js.html</guid>
<pubDate>Tue, 31 Dec 2013 00:00:00 -0800</pubDate>
<description>I use the UW proxy to access the ACM digital library from
off campus, but it's annoying to type the proxy URL every time I click
a link to a new paper. Here are two ways to make life
easier.</description>
</item>
</channel>
</rss>
