<?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[Ernie's 3D Pancakes II]]></title><description><![CDATA[Jeff Erickson’s substack, named after a 30-year-old joke.  Mostly recycled content from earlier platforms.]]></description><link>https://jeffgerickson.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!zU0y!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b3c6c8c-c32a-4ac6-823e-13d8e6c1f2cc_512x512.png</url><title>Ernie&apos;s 3D Pancakes II</title><link>https://jeffgerickson.substack.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 16 Jul 2026 08:23:28 GMT</lastBuildDate><atom:link href="https://jeffgerickson.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Jeff Erickson]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[jeffgerickson@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[jeffgerickson@substack.com]]></itunes:email><itunes:name><![CDATA[Jeff Erickson]]></itunes:name></itunes:owner><itunes:author><![CDATA[Jeff Erickson]]></itunes:author><googleplay:owner><![CDATA[jeffgerickson@substack.com]]></googleplay:owner><googleplay:email><![CDATA[jeffgerickson@substack.com]]></googleplay:email><googleplay:author><![CDATA[Jeff Erickson]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Easy, but not that easy]]></title><description><![CDATA[It&#8217;s hard to prove that easy problems aren&#8217;t trivial!]]></description><link>https://jeffgerickson.substack.com/p/easy-but-not-that-easy</link><guid isPermaLink="false">https://jeffgerickson.substack.com/p/easy-but-not-that-easy</guid><dc:creator><![CDATA[Jeff Erickson]]></dc:creator><pubDate>Mon, 30 Mar 2026 02:15:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zU0y!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b3c6c8c-c32a-4ac6-823e-13d8e6c1f2cc_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>[<a href="https://web.archive.org/web/20250913004618/https://3dpancakes.typepad.com/ernie/2005/08/easy_but_not_th.html">Originally published on TypePad in August 2005</a>; I&#8217;ve updated dead links, updated some terminology, and added footnotes describing more recent work.]</em></p><div><hr></div><p>Lately I&#8217;ve been distracted by an open research problem left over from <a href="https://web.archive.org/web/20250913004618/http://www.cs.uiuc.edu/~jeffe/pubs/thesis.html">my PhD thesis</a>. It&#8217;s a problem about <em>lower bounds</em>. When people design and analyze algorithms, they are proving upper bounds on the complexity of a problem. A lower bound, on the other hand, is a proof that the problem <em>cannot</em> be solved without using a certain amount of time (or some other resource), at least within a certain model of computation. Perhaps the most well-known lower bound is the statement that sorting an array of length n requires at least &#937;(n log n) binary decisions&#8212;comparisons, for example.</p><p>So let me define a simple problem, which can be trivially solved in O(n<sup>2</sup>) steps using a simple pair of nested for-loops. The open question is whether there is a faster algorithm.</p><blockquote><p><strong>AlignedSumLess:</strong><br>Input: arrays A[0..n], B[0..n], and C[0..2n] of real numbers.<br>Question: Is A[i] + B[j] &lt; C[i+j] for any indices i and j?<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a></p></blockquote><p>I repeat: <strong>Nobody knows whether this problem can be solved in subquadratic time</strong>.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> The best lower bound in any general model of computation (algebraic computation trees, or equivalently, the so-called Real RAM) is &#937;(n log n), and this derives essentially from the same information-theoretic argument as the sorting lower bound.</p><p>(What do I mean by a &#8220;general model of computation&#8221;? A technical definition is a bit difficult, but essentially I mean a definition of &#8220;algorithm&#8221; that doesn&#8217;t seem tailored to the problem, or even worse, to the algorithms that we already know for solving the problem. What I most certainly do <em>not</em> mean is &#8220;Turing machine&#8221;&#8212;we want to allow primitive operations that Turing machines can&#8217;t do quickly (like random access memory) or at all (like exact real arithmetic). Here there be dragons, or at least, cans of worms.)</p><p>It&#8217;s not hard to prove an &#937;(n<sup>2</sup>) lower bound in a model where the algorithm is only allowed to branch using questions of the form &#8220;Compare A[i]+B[j] to C[k]&#8221;. The proof uses an <em>adversary argument</em>. Imagine a game of &#8220;(n+1)<sup>2</sup> questions&#8221; between two players, one (the algorithm) asking questions, the other (the input) answering those questions. The algorithm&#8217;s goal is to solve the problem as quickly as possible; the input player&#8217;s goal is to drag out the game as long as possible. The algorithm wins if he can produce the correct answer after asking fewer than (n+1)<sup>2</sup> questions; otherwise, the input player wins.</p><p>Now imagine that the input player actually an all-powerful malicious adversary. Rather than thinking of a specific input in advance and answering questions accordingly, the adversary chooses answers on the fly to make the algorithm&#8217;s life difficult, but always in a way that is consistent with <em>some</em> input. In other words, the adversary can cheat as much as he likes, as long as he doesn&#8217;t get caught. Moreover, the adversary knows everything about the algorithm&#8212;the code is written on the wall, so to speak&#8212;but the algorithm knows only what the adversary tells it.</p><p>So here&#8217;s our adversary strategy. During the game, we pretend that A[k]=B[k]=6k and C[k]=6k-5 for all k, and we answer every question honestly. With this input, the algorithm&#8217;s correct answer is <strong>No</strong>. Now suppose the algorithm declares a solution without comparing A[i]+B[j] to C[i+j]. We can modify the input, setting A[i] = 6i-2, B[j] = 6j-2, and C[i+j] = 6i+6j-3 but leaving everything else unchanged, and then triumphantly (and correctly) declare &#8220;Aha! You&#8217;re wrong!&#8221; All of our earlier answers are consistent with this newly modified input, so as far as the algorithm knows, that was the input all along! The only way that the algorithm can avoid being fooled is to compare A[i]+B[j] to C[i+j], for <em>all</em> (n+1)<sup>2</sup> pairs of indices i and j. The adversary always wins!</p><p>So in the worst case, the algorithm must ask at least (n+1)<sup>2</sup> questions to obtain the correct answer, QED.</p><p>In my thesis, I extended this adversary argument to allow a larger class of questions, like &#8220;Is the expression &#945; A[i] + &#946; B[j] + &#947; C[k] + &#948; positive, negative, or zero?&#8221; where &#945;,&#946;,&#947;,&#948; are arbitrary real numbers. Algorithms that onlly ask questions of this form are called <em>3-linear decision trees</em>, because the questions ask about the sign of <em>linear</em> expressions involving <em>three</em> of the input values.</p><p>Now let&#8217;s consider the following related problem, called min-convolution, min-sum convolution, infimal convolution, inf-convolution, or tropical convolution, depending on who you ask. This problem has lots of applications.</p><blockquote><p><strong>(Min,+)-convolution:</strong><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a><br>Input: arrays A[0..n] and B[0..n] of real numbers.<br>Question: For each integer k between 0 and 2n, compute min<sub>i</sub> (A[i] + B[k-i]).</p></blockquote><p>Like the earlier problem, we can easily solve this one in O(n<sup>2</sup>) time with a pair of nested for-loops, and nobody knows whether that is the fastest algorithm.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> Unlike the earlier problem, however, we don&#8217;t have a quadratic lower bound for (min,+)-convolution in <em>any</em> model of computation. Our ignorance is complete!</p><p>If we had a fast algorithm for this problem, we could easily transform it into a fast algorithm for AlignedSumLess, just by comparing the (min,+)-convolution of A and B to the input array C. Conversely, if we could prove a &#937;(n<sup>2</sup>) lower bound on the complexity of AlignedSumLess, that would immediately imply a &#937;(n<sup>2</sup>) lower bound on the complexity of (min,+)-convolution.</p><p>But we <em>have</em> a &#937;(n<sup>2</sup>) lower bound on the complexity of AlignedSumLess, at least in a restricted model of computation. Why aren&#8217;t we done? Because the model of computation is too weak! Intuitively, we can&#8217;t solve (min,+)-convolution at all without allowing comparisons of the form A[i]+B[j] &lt;? A[i&#8217;]+B[j&#8217;], and our model of computation doesn&#8217;t allow that: too many input variables are involved.</p><p>What we need is a &#937;(n<sup>2</sup>) lower bound for AlignedSumLess in the <em><strong>4</strong></em>-linear decision tree model. I don&#8217;t have a clue how to do this. The earlier adversary argument completely breaks down once we allow these four-variable questions.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> <a href="https://dblp.org/pid/86/6327.html">Nir Ailon</a> and <a href="https://www.cs.princeton.edu/~chazelle/">Bernard Chazelle</a> recently made some <a href="https://doi.org/10.1145/1059513.1059515">progress</a> on proving that harder variants of this problem are, in fact, harder, but their techniques also break down for problems that are this simple.</p><p>It&#8217;s <em>hard</em> to prove that easy problems aren&#8217;t trivial!</p><p>Computational geometers might wonder whether there is any connection between these apparently-quadratic problems and the problem 3SUM: Giiven a sett of numbers, do any three sum to zero? The answer is yes, but not the way you might like. Both 3SUM and AlignedSumLess are provably harder than the following totally artificial problem (at least in restrictions of the algebraic decision tree model):</p><blockquote><p><strong>Polyhedral 3SUM:</strong><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a><br>Input: arrays A[0..n], B[0..n], and C[0..2n] of real numbers, such that A[i] + B[j] &#8804; C[i+j] for all indices i and j.<br>Question: Is A[i] + B[j] = C[i+j] for any indices i and j?</p></blockquote><p>Don&#8217;t ask how we know those input inequalities are satisfied. Let&#8217;s just say the knowledge comes down from Mt. Sinai engraved on stone tablets. Can this problem be solved in subquadratic time? Not in the 3-linear decision tree model, but beyond that, nobody knows.</p><p>Perhaps the &#8220;right&#8221; way to think about this problem is geometrically. We are given a point x inside a particularly nice closed (4n+3)-dimensional polyhedron defined by (n+1)<sup>2</sup> inequalities. Does the point lie on the boundary of the polyhedron? Sure, we can just check each inequality one at a time, each in constant time, but can we do better? The earlier adversary argument implies that none of the inequalities is redundant&#8212;the polyhedron has exactly (n+1)<sup>2</sup> facets. But maybe there&#8217;s a hyperplane that separates the facets nicely, or <a href="https://doi.org/10.1006/inco.1993.1057">something</a>. Or maybe not. We just don&#8217;t know!<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Equivalently, is C[k] &#8804;&nbsp;max{A[i] + B[j] | i+j=k} for all k?  <a href="https://doi.org/10.1145/3293465">Marek Cygan, Marcin Mucha, Karol W&#281;grzycki, and Micha&#322; W&#322;odarczyk</a> called this formulation of the problem <strong>MaxConvLowerBound</strong>. </p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>This is no longer true, but just barely. We <em>do</em> now know how to solve this problem in O(n&#178;/polylog n) time, but nobody knows how to solve it in O(n^1.999999) time, for any number of nines, or even in O(n&#178;/f(n)) time for some <a href="https://doi.org/10.1145/122413.990652">superpolylogarithmic</a> function f. Moreover, the best lower bound known in any general model of computation is still &#937;(n log n).</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>I called this problem &#8220;MinConvolution&#8221; in the original blog post; the name &#8220;(min,+)-convolution&#8221; has since become standard, at least in theoretical computer science.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>In 2012, <a href="https://arxiv.org/abs/1212.4771">David Bremner, Timothy Chan, Erik Demaine, Ferran Hurtado, John Iacono, Stefan Langerman, Mihai P&#462;tra&#351;cu, Perouz Taslakian, and I</a> showed that in fact (min,+)-convolution can be solved in O(n&#178;/polylog n) time on the real RAM.  See footnote 2!</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>In 2014, <a href="https://arxiv.org/abs/1404.0799">Allan Gr&#248;nlund and Seth Pettie</a> proved that 3SUM can actually be solved in  <em>subquadratic</em> time in the 4-linear decision tree model. Specifically, they showed that 3SUM can be solved using a <em>non-uniform</em> family of 4-linear decision trees with depth O(n&#8730;n&#8730;(log&nbsp;n)). <a href="https://arxiv.org/abs/1512.05279">Omer Gold and Micha Sharir</a> later removed the square-root-of-log factor.  Nobody knows whether 1.5 is the correct exponent in this model. A few years later, <a href="https://arxiv.org/abs/1705.01720">Daniel Kane, Shachar Lovett, and Shay Moran</a> proved that 3SUM can be solved using a family of <strong>6</strong>-linear decision trees with depth O(n log&#178;n), <em>almost</em> matching the &#937;(n log n) lower bound.  Nonuniformity plays a crucial role in these upper bounds. The fastest <em>uniform</em> algorithms known for 3SUM, in either the <a href="https://doi.org/10.1145/3363541">real RAM</a> model or the <a href="https://doi.org/10.1007/s00453-007-9036-3">word RAM</a> model, run in O(n&#178;/polylog n) time, and it is still widely conjectured that 3SUM cannot be solved in time O(n^c) for any constant c&lt;2, in any uniform model.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>Without the promise that A[i] + B[j] &#8804; C[i+j] for all i and j, this problem is known as &#8220;<strong>convolution 3SUM</strong>&#8221;; this important variant of 3SUM was introduced in <a href="https://doi.org/10.1145/1806689.1806772">a seminal 2010 paper of Mihai P&#259;tra&#537;cu</a>.  <a href="https://en.wikipedia.org/wiki/3SUM#Convolution_sum">The Wikipedia article on 3SUM</a> sketches Mihai&#8217;s reductions between 3SUM and Convolution 3SUM.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>And 20 years later, we <em>still</em> don&#8217;t know.  However, we do know <em>considerably</em> more about the <em>relative</em> complexity of these and dozens of other related problems.  A complete survey of fine-grained complexity is far beyond the scope of this <s>post</s> footnote, but I can&#8217;t resist mentioning one interesting result.  In 2020, <a href="https://doi.org/10.4230/LIPIcs.ITCS.2020.53">Andrea Lincoln, Adam Polak, and Virgnia Vassilevska Williams</a> proved that 3SUM can be solved in strongly subquadratic time if and only if the following problem, which they call &#8220;<strong>MonoConvolution</strong>&#8221; can be solved in strongly <em>subsequilinear</em> time (meaning O(n^{1.499999} for some constant number of nines) : Given three arrays A, B, C, each of length n, decide for each index i whether there is an index j such that A[i] = B[j] = C[i+j].  The only arithmetic here is in the indices!</p></div></div>]]></content:encoded></item><item><title><![CDATA[Shortest paths on PL surfaces]]></title><description><![CDATA[It's obvious until it isn't.]]></description><link>https://jeffgerickson.substack.com/p/shortest-paths-on-pl-surfaces</link><guid isPermaLink="false">https://jeffgerickson.substack.com/p/shortest-paths-on-pl-surfaces</guid><dc:creator><![CDATA[Jeff Erickson]]></dc:creator><pubDate>Fri, 03 Oct 2025 12:35:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!t-OK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c148fd4-5418-4c29-9a5d-227d75457b0d_1099x321.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>[<a href="https://web.archive.org/web/20250910090715/https://3dpancakes.typepad.com/ernie/2006/03/shortest_paths_.html">Originally posted on TypePad in March 2006</a>. I have updated dead links, reformatted  references, and added a footnote.]</em></p><p>Here&#8217;s a nice open problem that I&#8217;ve only thought about long enough to convince myself that it&#8217;s interesting. The problem comes out of a common and legitimate criticism of my <a href="https://jeffe.cs.illinois.edu/pubs/schema.html">recent</a> <a href="https://jeffe.cs.illinois.edu/pubs/gohog.html">computational</a> <a href="https://jeffe.cs.illinois.edu/pubs/octagons.html">topology</a> <a href="https://jeffe.cs.illinois.edu/pubs/splitting.html">research</a>, which deals with finding various kinds of minimal graph structures on so-called <em>combinatorial surfaces</em>.</p><p>A combinatorial surface consists of an abstract 2-manifold M, a graph <em>G</em> embedded in <em>M</em> so that every face of the embedding is a topological disk, and an assignment of non-negative real weights to the edges of <em>G</em>. Roughly speaking, we only allows paths and cycles that are walks or circuits in the graph <em>G</em>; the length of such a path is defined in the usual way, by adding up the weights of the edges along the path, with the right multiplicity. (If a path &#960; traverses an edge <em>e</em> twice, the length of <em>e</em> is counted twice in the length of &#960;.) Paths that cross through the faces of <em>G</em> are not even considered. This definition includes nonconvex polyhedra&#8212;like <a href="https://en.wikipedia.org/wiki/Stanford_bunny">the Stanford bunny</a>&#8212;but the edge lengths don&#8217;t have to correspond to any nice embedding of the surface. Given two vertices on a combinatorial surface, we can compute the shortest path between them (in <em>G</em>, remember) in O(<em>n</em> log <em>n</em>) time using Dijkstra&#8217;s algorithm.</p><p>Most people who see this model for the first time ask immediately why I&#8217;m interested in something so restrictive. What do results in the combintorial surface model imply about &#8220;real&#8221; surfaces, where paths can go anywhere and path lengths are continuous rather than discrete? As it turns out, most of the <em>topological</em> results seem to generalize without too much trouble, but the <em>algorithmic</em> results are not so accommodating. (There are also some extremely nasty <em>numerical</em> issues, but to keep the discussion focused, let&#8217;s just assume we are working on a real RAM with square roots.)</p><p>Here&#8217;s a more general and very natural surface model. A <em>piecewise-linear triangulated surface</em> is a collection of <em>n</em> Euclidean triangles, where some pairs of edges (of equal length) are glued together. To keep things simple, let&#8217;s imagine that each of the 3<em>n</em> triangle edges is glued to <em>exactly</em> one other edge, so that the resulting topological space is a 2-manifold. Anyone who has played with <a href="https://plus.maths.org/content/imaging-maths-unfolding-polyhedra">paper models of polyhedra</a> is already used to this definition.</p><p>Any PL surface has a natural metric, inherited from the Euclidean triangles: the length of any path is measured by adding up the lengths of the subpaths within each triangle. Consequently, the intersection of any <em>geodesic</em> (or <em>locally</em> shortest path) with a triangle is a striaght line segment, and if a geodesic crosses an edge, it enters and leaves at the same angle. PL geodesics can only &#8220;bend&#8221; if they go through vertices.</p><p>Okay, so here&#8217;s the open problem: <strong>Describe an algorithm to compute the shortest path between two points </strong><em><strong>on the same triangle</strong></em><strong> in a piecewise-linear triangulated surface, where the running time is bounded by a function of the number of triangles.</strong></p><p>Pretty simple, huh? Obviously, the shortest path is just a line segment insidee the triangle, right? That&#8217;s exactly right <em>if</em> the surface can be embedded in some Euclidean space so that every triangle is flat, but not every PL surface has such an embedding. In general, like many &#8220;obvious&#8221; things, this claim is actually false.</p><p>Here&#8217;s a simple example<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> of a PL surface that has the combinatorial structure of a tetrahedron, but different geometric structure. In particular, there&#8217;s no way to actually embed this surface in any Euclidean space so that every triangle lies in a plane. Moreover, the three obtuse vertices are all identified to a single point with total angle greated than 2&#960;, so this can&#8217;t fold into a convex polytope. The red line segments show the shortest path between two points on the &#8220;big&#8221; face.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bbhM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2ed272f-37c2-48b5-8368-9ac2e8925d6e_310x274.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bbhM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2ed272f-37c2-48b5-8368-9ac2e8925d6e_310x274.png 424w, https://substackcdn.com/image/fetch/$s_!bbhM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2ed272f-37c2-48b5-8368-9ac2e8925d6e_310x274.png 848w, https://substackcdn.com/image/fetch/$s_!bbhM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2ed272f-37c2-48b5-8368-9ac2e8925d6e_310x274.png 1272w, https://substackcdn.com/image/fetch/$s_!bbhM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2ed272f-37c2-48b5-8368-9ac2e8925d6e_310x274.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bbhM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2ed272f-37c2-48b5-8368-9ac2e8925d6e_310x274.png" width="310" height="274" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2ed272f-37c2-48b5-8368-9ac2e8925d6e_310x274.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:274,&quot;width&quot;:310,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!bbhM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2ed272f-37c2-48b5-8368-9ac2e8925d6e_310x274.png 424w, https://substackcdn.com/image/fetch/$s_!bbhM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2ed272f-37c2-48b5-8368-9ac2e8925d6e_310x274.png 848w, https://substackcdn.com/image/fetch/$s_!bbhM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2ed272f-37c2-48b5-8368-9ac2e8925d6e_310x274.png 1272w, https://substackcdn.com/image/fetch/$s_!bbhM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2ed272f-37c2-48b5-8368-9ac2e8925d6e_310x274.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In fact, as Gunter Rote observed, the number of times that a shortest path can cross through the same triangle is not bounded by any function of the number of triangles. Here&#8217;s a simple PL surface I call a &#8220;toilet paper tube&#8221;. It&#8217;s made from four long thin triangle, glued in a cycle along their long edges. There&#8217;s no way to embed this surface so that every triangle lies flat in a plane. The shortest path between the two red vertices crosses through each triangle 3 times. By making the triangles longer, we can replace 3 with any positive integer.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wgg7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeca5d6c-5aac-4bf5-9e9e-e97212e5c9e2_526x100.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wgg7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeca5d6c-5aac-4bf5-9e9e-e97212e5c9e2_526x100.png 424w, https://substackcdn.com/image/fetch/$s_!wgg7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeca5d6c-5aac-4bf5-9e9e-e97212e5c9e2_526x100.png 848w, https://substackcdn.com/image/fetch/$s_!wgg7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeca5d6c-5aac-4bf5-9e9e-e97212e5c9e2_526x100.png 1272w, https://substackcdn.com/image/fetch/$s_!wgg7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeca5d6c-5aac-4bf5-9e9e-e97212e5c9e2_526x100.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wgg7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeca5d6c-5aac-4bf5-9e9e-e97212e5c9e2_526x100.png" width="526" height="100" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/deca5d6c-5aac-4bf5-9e9e-e97212e5c9e2_526x100.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:100,&quot;width&quot;:526,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!wgg7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeca5d6c-5aac-4bf5-9e9e-e97212e5c9e2_526x100.png 424w, https://substackcdn.com/image/fetch/$s_!wgg7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeca5d6c-5aac-4bf5-9e9e-e97212e5c9e2_526x100.png 848w, https://substackcdn.com/image/fetch/$s_!wgg7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeca5d6c-5aac-4bf5-9e9e-e97212e5c9e2_526x100.png 1272w, https://substackcdn.com/image/fetch/$s_!wgg7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdeca5d6c-5aac-4bf5-9e9e-e97212e5c9e2_526x100.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>We can compute shortest paths in PL surfaces by simulating an expanding circular wavefront from one of the two points. Whenever the wavefront meets a vertex, an edge, or itself, we update our internal description of how the front intersects the facets of the surface. An efficient version of this method was developed by Mitchell, Mount, and Papadimitriou [<em><a href="https://doi.org/10.1137/0216045">SICOMP</a></em><a href="https://doi.org/10.1137/0216045"> 1987</a>], later refined by Chen and Han [<a href="https://doi.org/10.1145/98524.98601">SOCG 1990</a>], and even more recently implemented by Surazhsky et al. [<a href="https://doi.org/10.1145/1186822.1073228">SIGGRAPH 2005</a>]. However, the running time of those algorithms will not be bounded by a function of <em>n</em>, because the wavefront could collide with the same edge arbitrarily many times.</p><p>The shortest path problem is open even when the PL surface is isometric to the surface of a 3-dimensional convex polytope, or equivalently by <a href="https://en.wikipedia.org/wiki/Alexandrov%27s_theorem_on_polyhedra">Alexandrov&#8217;s</a> <a href="https://erikdemaine.org/aleksandrov/">theorem</a>, if the angles around every vertex in a PL surface sum to at most 2&#960;. For example, take the toilet paper roll and squeeze the ends together into line segments. Voila! A long skinny tetrahedron!</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1H_2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b82188-d6c0-43c6-9e6f-a220ab1126d2_291x234.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1H_2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b82188-d6c0-43c6-9e6f-a220ab1126d2_291x234.png 424w, https://substackcdn.com/image/fetch/$s_!1H_2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b82188-d6c0-43c6-9e6f-a220ab1126d2_291x234.png 848w, https://substackcdn.com/image/fetch/$s_!1H_2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b82188-d6c0-43c6-9e6f-a220ab1126d2_291x234.png 1272w, https://substackcdn.com/image/fetch/$s_!1H_2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b82188-d6c0-43c6-9e6f-a220ab1126d2_291x234.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1H_2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b82188-d6c0-43c6-9e6f-a220ab1126d2_291x234.png" width="291" height="234" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/75b82188-d6c0-43c6-9e6f-a220ab1126d2_291x234.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:234,&quot;width&quot;:291,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!1H_2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b82188-d6c0-43c6-9e6f-a220ab1126d2_291x234.png 424w, https://substackcdn.com/image/fetch/$s_!1H_2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b82188-d6c0-43c6-9e6f-a220ab1126d2_291x234.png 848w, https://substackcdn.com/image/fetch/$s_!1H_2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b82188-d6c0-43c6-9e6f-a220ab1126d2_291x234.png 1272w, https://substackcdn.com/image/fetch/$s_!1H_2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75b82188-d6c0-43c6-9e6f-a220ab1126d2_291x234.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>So now let me repeat a very special case of the open problem. <strong>Describe an algorithm to compute the shortest path between two </strong><em><strong>vertices</strong></em><strong> of a PL surface </strong><em><strong>consisting of four triangles and isometric to a convex tetrahedron</strong></em><strong>, using a </strong><em><strong>constant</strong></em><strong> number of exact real arithmetic operations (+,-,&#215;,&#247;,&#8730;,&lt;0?). </strong>Should be easy, right?</p><p>Right?</p><p>Even though we have no hope of computing an explicit list of edges crossed by the shortest path, the crossing sequence might have a concise encoding, similar to the grammars used by Schaefer, Sedgwick, and Stefankovic [<a href="https://doi.org/10.1007/3-540-45655-4_40">COCOON 2002</a>] to encode the normal coordinates of a curve on a triangulated surface. More ambitiously, perhaps the entire shortest path structure has a concise encoding, which can be computed on the fly using the wavefront approach. Alternately, perhaps one could quickly find an isometric PL surface&#8212;a decomposition of the same PL surface into different triangles&#8212;in which any shortest paths can cross each edge only a constant number of times, and then run the usual wavefront algorithms on the new structure.</p><p>And here we hit on the crux of the problem&#8212;the edges in a PL surface are red herrings. The actual metric is perfectly flat everywhere except at the vertices, where the surface looks like the top of a cone. The edges tell us only where these cone points are located relative to each other, but the choice of edges is not unique. For example, we can glue two triangles together and then cut the resulting quadrilateral into two different triangles. In fact, every PL surface has an infinite number of isometric representations.</p><p>There is a canonical choice of edge for any PL surface: the Delaunay triangulation of the cone points. Just like in the plane, the Delaunay triangulation is the dual of the Voronoi diagram of the cone points, and it can be obtained by <a href="https://doi.org/10.1016/S0304-3975(00)00248-6">repeatedly flipping</a> any pair of triangles whose opposite angles sum to more than &#960; until there are no such pairs. Unfortunately, there is no bound on the number of flips required. Somewhat confusingly, the Delaunay triangulation of the surface of a convex polytope need not have the same facet structure as the polytope itself. It&#8217;s also not necessarily a simplicial complex; triangles can be glued to themselves, and pairs of triangles can be glued together more than once.</p><p>Can the Delaunay triangulation of a given PL surface be computed quickly? Can shortest paths in Delaunay PL surfaces be computed quickly? Given two points in the same trangle in a Delaunay PL surface, is the shortest path between them a line segment in that triangle? Is there a PL equivalent of the stereographic lifting map? <a href="https://www.youtube.com/watch?v=O6rHeD5x2tI">How many licks does it take to get to the Tootsie Roll center of a Tootsie Pop?</a> How much Zen would a Zen master master if a Zen master could master Zen?</p><p>By an amazing coincidence, <a href="https://web.archive.org/web/20250910090715/http://www.qinfo.org/people/nielsen/blog/?p=249">Michael Nielsen is also thinking about shortest paths</a>.</p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p><strong>Added later:</strong> These geometric exampes should be credited to <a href="https://www.mathnet.ru/php/archive.phtml?wshow=paper&amp;jrnid=sm&amp;paperid=6131&amp;option_lang=rus">Alexandrov&#8217;s 1941 paper</a> where he proves his theorem about nets of convex polyhedra.  Alexandrov&#8217;s Figure 1 shows the first two of an infinite sequence of nets for the regular tetrahedron; my &#8220;toilet paper tube&#8221; is equivalent to a later net in this sequence.  Figure 2(a) shows a non-standard net of a tetrahedron that cannot be embedded keeping every face flat.  Figure 2(b) shows the canonical net, and Figure 2(c) shows the edges of the first net as geodesics on resulting tetrahedron.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t-OK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c148fd4-5418-4c29-9a5d-227d75457b0d_1099x321.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t-OK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c148fd4-5418-4c29-9a5d-227d75457b0d_1099x321.png 424w, https://substackcdn.com/image/fetch/$s_!t-OK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c148fd4-5418-4c29-9a5d-227d75457b0d_1099x321.png 848w, https://substackcdn.com/image/fetch/$s_!t-OK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c148fd4-5418-4c29-9a5d-227d75457b0d_1099x321.png 1272w, https://substackcdn.com/image/fetch/$s_!t-OK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c148fd4-5418-4c29-9a5d-227d75457b0d_1099x321.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t-OK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c148fd4-5418-4c29-9a5d-227d75457b0d_1099x321.png" width="1099" height="321" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4c148fd4-5418-4c29-9a5d-227d75457b0d_1099x321.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:321,&quot;width&quot;:1099,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:74395,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jeffgerickson.substack.com/i/175185508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c148fd4-5418-4c29-9a5d-227d75457b0d_1099x321.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t-OK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c148fd4-5418-4c29-9a5d-227d75457b0d_1099x321.png 424w, https://substackcdn.com/image/fetch/$s_!t-OK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c148fd4-5418-4c29-9a5d-227d75457b0d_1099x321.png 848w, https://substackcdn.com/image/fetch/$s_!t-OK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c148fd4-5418-4c29-9a5d-227d75457b0d_1099x321.png 1272w, https://substackcdn.com/image/fetch/$s_!t-OK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4c148fd4-5418-4c29-9a5d-227d75457b0d_1099x321.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yGNW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae33fb9-4360-4ea5-a778-d49a996fb436_494x527.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yGNW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae33fb9-4360-4ea5-a778-d49a996fb436_494x527.png 424w, https://substackcdn.com/image/fetch/$s_!yGNW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae33fb9-4360-4ea5-a778-d49a996fb436_494x527.png 848w, https://substackcdn.com/image/fetch/$s_!yGNW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae33fb9-4360-4ea5-a778-d49a996fb436_494x527.png 1272w, https://substackcdn.com/image/fetch/$s_!yGNW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae33fb9-4360-4ea5-a778-d49a996fb436_494x527.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yGNW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae33fb9-4360-4ea5-a778-d49a996fb436_494x527.png" width="494" height="527" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ae33fb9-4360-4ea5-a778-d49a996fb436_494x527.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:527,&quot;width&quot;:494,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:67024,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jeffgerickson.substack.com/i/175185508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae33fb9-4360-4ea5-a778-d49a996fb436_494x527.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yGNW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae33fb9-4360-4ea5-a778-d49a996fb436_494x527.png 424w, https://substackcdn.com/image/fetch/$s_!yGNW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae33fb9-4360-4ea5-a778-d49a996fb436_494x527.png 848w, https://substackcdn.com/image/fetch/$s_!yGNW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae33fb9-4360-4ea5-a778-d49a996fb436_494x527.png 1272w, https://substackcdn.com/image/fetch/$s_!yGNW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ae33fb9-4360-4ea5-a778-d49a996fb436_494x527.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nBDT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70acdea0-3fac-4ce2-a7f9-a610e50a40a7_767x525.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nBDT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70acdea0-3fac-4ce2-a7f9-a610e50a40a7_767x525.png 424w, https://substackcdn.com/image/fetch/$s_!nBDT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70acdea0-3fac-4ce2-a7f9-a610e50a40a7_767x525.png 848w, https://substackcdn.com/image/fetch/$s_!nBDT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70acdea0-3fac-4ce2-a7f9-a610e50a40a7_767x525.png 1272w, https://substackcdn.com/image/fetch/$s_!nBDT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70acdea0-3fac-4ce2-a7f9-a610e50a40a7_767x525.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nBDT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70acdea0-3fac-4ce2-a7f9-a610e50a40a7_767x525.png" width="767" height="525" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70acdea0-3fac-4ce2-a7f9-a610e50a40a7_767x525.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:525,&quot;width&quot;:767,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:80022,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://jeffgerickson.substack.com/i/175185508?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70acdea0-3fac-4ce2-a7f9-a610e50a40a7_767x525.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nBDT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70acdea0-3fac-4ce2-a7f9-a610e50a40a7_767x525.png 424w, https://substackcdn.com/image/fetch/$s_!nBDT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70acdea0-3fac-4ce2-a7f9-a610e50a40a7_767x525.png 848w, https://substackcdn.com/image/fetch/$s_!nBDT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70acdea0-3fac-4ce2-a7f9-a610e50a40a7_767x525.png 1272w, https://substackcdn.com/image/fetch/$s_!nBDT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70acdea0-3fac-4ce2-a7f9-a610e50a40a7_767x525.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[More on GPAs for CS PhD admission]]></title><description><![CDATA[...with some actual data!]]></description><link>https://jeffgerickson.substack.com/p/more-on-gpas-for-cs-phd-admission</link><guid isPermaLink="false">https://jeffgerickson.substack.com/p/more-on-gpas-for-cs-phd-admission</guid><dc:creator><![CDATA[Jeff Erickson]]></dc:creator><pubDate>Thu, 02 Oct 2025 23:21:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zU0y!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b3c6c8c-c32a-4ac6-823e-13d8e6c1f2cc_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>[<a href="https://www.quora.com/Can-I-get-into-a-top-graduate-school-for-computer-science-with-a-3-6-GPA-What-schools-would-I-be-eligible-for-I-have-a-decent-amount-of-research-experience-but-all-of-my-research-is-applying-CS-to-other-topics/answer/Jeff-Erickson">Originaly posted to Quora in 2023</a>]</em></p><h3><strong>Can I get into a top graduate school for computer science with a 3.6 GPA? What schools would I be eligible for? (I have a decent amount of research experience but all of my research is applying CS to other topics)</strong></h3><p><em><strong>Every</strong></em><strong> top computer science graduate school regularly admits applicants with 3.6 GPAs. </strong>Your GPA definitely won&#8217;t get you into a top computer science graduate school, because that&#8217;s not how <em>anyone</em> gets in, but it won&#8217;t keep you out either.</p><p>Here&#8217;s some real data from my own CS department, which has been ranked #5 in the country by <em>US News</em> for more than 20 years. We received more than 1450 applicants for Fall 2023 admission to our PhD program. I sorted these by normalized undergraduate GPA&#8212;breaking ties randomly&#8212;and partitioned them into 100-student cohorts. Here are GPA ranges and numbers of admission offers for the top 12 cohorts, plus a 13th &#8220;cohort&#8221; for all lower GPAs. (Yes, we got more than 100 applications with perfect 4.00 GPAs, and yes, we rejected most of them.)</p><ol><li><p>4.00 &#8804; GPA &#8804; 4.00 &#8212; 30 admission offers</p></li><li><p>3.95 &#8804; GPA &#8804; 4.00 &#8212; 31 admission offers</p></li><li><p>3.92 &#8804; GPA &#8804; 3.95 &#8212; 28 admission offers</p></li><li><p>3.88 &#8804; GPA &#8804; 3.92 &#8212; 20 admission offers</p></li><li><p>3.82 &#8804; GPA &#8804; 3.88 &#8212; 19 admission offers</p></li><li><p>3.77 &#8804; GPA &#8804; 3.82 &#8212; 22 admission offers</p></li><li><p>3.72 &#8804; GPA &#8804; 3.77 &#8212; 19 admission offers</p></li><li><p>3.65 &#8804; GPA &#8804; 3.72 &#8212; 13 admission offers</p></li><li><p>3.59 &#8804; GPA &#8804; 3.65 &#8212; 14 admission offers</p></li><li><p>3.53 &#8804; GPA &#8804; 3.59 &#8212; 13 admission offers</p></li><li><p>3.46 &#8804; GPA &#8804; 3.53 &#8212; 13 admission offers</p></li><li><p>3.38 &#8804; GPA &#8804; 3.46 &#8212; 13 admission offers</p></li><li><p>GPA &#8804; 3.38 &#8212; &gt;20 admission offers (out of &gt;250 applicants)</p></li></ol><p>All else being equal, a typical applicant with a 3.6 GPA had about 13% chance of admission. For comparison, our overall PhD admission rate this year was about 17%.</p><p>But of course, not all else is equal. Admissions committees are looking primarily for <strong>concrete evidence of research potential</strong>. Your research experience should increase your chances, especially if your statement or purpose describes your research efforts in the fluent technical language of active researchers (as opposed to starry-eyed but uninformed &#8220;passion&#8221;), and you have supportive letters of recommendation that describe your research efforts in credible, technical, and personal detail. The fact that your experience is all in &#8220;applying CS to other topics&#8221; is not a problem; with the right spin, your expertise outside CS could be sold as a significant <em>advantage.</em></p><p></p>]]></content:encoded></item><item><title><![CDATA[Re: PhD with low GPA]]></title><description><![CDATA[Hard work, arrogance, and pure dumb luck.]]></description><link>https://jeffgerickson.substack.com/p/re-phd-with-low-gpa</link><guid isPermaLink="false">https://jeffgerickson.substack.com/p/re-phd-with-low-gpa</guid><dc:creator><![CDATA[Jeff Erickson]]></dc:creator><pubDate>Thu, 02 Oct 2025 21:16:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zU0y!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b3c6c8c-c32a-4ac6-823e-13d8e6c1f2cc_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>[<a href="https://web.archive.org/web/20250904143022/https://3dpancakes.typepad.com/ernie/2005/03/re_phd_with_low.html">Originally published on TypePad in March 2005</a>; I&#8217;ve updated dead links and added a few footnotes.]</em></p><div><hr></div><p><em>This is my response to a recent email from a student, who shall of course remain anonymous. </em></p><blockquote><p><em>While doing some web browsing on quantum algorithms, I stumbled upon <a href="http://jeffe.cs.illinois.edu">your page</a>. I noticed that you boast that you have the lowest undergraduate GPA of any professor you have ever met. I am an undergraduate computer science student who dreams of one day obtaining a PhD, but my GPA is less than impressive. If you have a moment, I would love to know how you were able to convince graduate admissions and more importantly, yourself, that you were up to the task of getting a PhD.</em></p></blockquote><p>Hard work, arrogance, and pure dumb luck.</p><p>I always wanted to go to grad school, but I was a LAZY undergrad.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> I spent more time hacking on independent programming projects than on homework or studying for exams. Anything I found boring, I spent no time on whatsoever. Usually, by the time final exams rolled around, I was too far behind to catch up. (I&#8217;d love to claim that I spent all that time partying, but I was also a geek.) I aced the programming classes (which landed me some student TA jobs), and I did lots of independent study projects, but I bombed everything else. It wasn&#8217;t that I couldn&#8217;t understand the material or do the work (at least, if I&#8217;d kept up); I just didn&#8217;t care.</p><p>Hey, it worked in high school. I got into college, despite almost failing English and history, because I was years ahead at math.</p><p>My senior year in college, a couple of other computer science majors started <a href="https://landley.net/history/mirror/apple2/clarisworks.php.html">their own software company</a>. They hired <a href="https://en.wikipedia.org/wiki/Bob_Hearn">one of my friends</a>; he suggested they hire me (since I was good at programming). That was where I finally learned to work. School was great, because if I didn&#8217;t get something done by the <a href="https://www.quotationspage.com/quote/723.html">deadline</a>, I didn&#8217;t have to do it anymore! Sure, there&#8217;s a bad grade, but whatever. At the startup, if I didn&#8217;t get something done by the deadline, I still had to do it -- unless I wanted to pay back all the money they&#8217;d given me -- only now my boss and co-workers were pissed off. After a few months of this, it finally sunk in that it would be easier just to do the work. I still have to remind myself of this sometimes.</p><p>The first time I applied to grad school, I didn&#8217;t get in ANYWHERE, despite high GRE scores. I got some rec letters through my undergrad TA jobs, but they all said &#8220;he&#8217;s smart but lazy&#8221;, which is the kiss of death.</p><p><a href="https://www.techmonitor.ai/technology/apples_claris_buys_styleware">The startup was bought by a bigger company</a> in Silicon Valley (which is now <a href="https://en.wikipedia.org/wiki/Claris">part of Apple, or dead, depending on who you ask</a>). By this point I&#8217;d learned to work, but I discovered (or remembered) that I was more interested in doing things RIGHT than doing them NOW, which is bad news in the software industry; this wasn&#8217;t the place for me. On the other hand, I got a reputation for being able to answer hard math-y questions, and I found myself working through automata theory textbooks for fun while I waited for my program to compile. So I decided to apply again, this time saying I wanted to do software engineering (since I&#8217;d been a software engineer for four years) and getting letters from my managers (who said I could work hard) in addition to my old profs (who still remembered me as smart but lazy). I retook the GREs and did well.</p><p>This time, I got into a couple of schools. When I arrived at <a href="https://ics.uci.edu/">UC Irvine</a>, the director of graduate admissions, a software engineer, told me he had burned some political capital to get me admitted despite my crappy GPA, that he had a lot riding on my success, that he&#8217;d gambled on me because of my work experience, and that I&#8217;d better not let him down. (That was the last time I ever talked to him. A month later, I realized I didn&#8217;t want to do software engineering.)</p><p>I think one big reason I got in despite my grades was good timing. I started at Irvine in 1990, at the height of the PC software boom/bubble. It was basically a smaller version of the .com boom/bubble ten years later.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> Most good CS students were getting high-paying programming jobs, or even starting their own companies, right out of college. So fewer people were applying to graduate school, but undergrad demand was up, so more faculty were being hired, so there was more room for grad students. The bar for admissions must have been lower.</p><p>Five years later (as I was finishing my PhD), the software bubble burst, and the pendulum swung the other way -- it was hard to find programming jobs, undergrad enrollment dropped, faculty hiring went down, more people applied to grad school. The bar for grad admissions (and faculty jobs) went back up.</p><p>The same thing happened later with the .com bust, only this time I saw it from within the grad admission committee. At UIUC, we get many more, and much better, domestic grad school applications now than in previous years. (International applicants are more complicated. Yay 9/11.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>) Good grades are a <em>minimum</em> requirement for admission now. Most incoming grad students already have some research experience; some of them even have publications.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> That was not true five years ago.</p><p>When grad applications arrive, one of our department secretaries sorts them roughly into three equal piles -- <strong>MAYBE</strong>, <strong>PROBABLY NOT</strong>, and <strong>NO</strong> -- based almost entirely on GPA, weighted by the quality of the school, and GREs. (Penn has a very good program, so this works in your favor.) The committee looks at the MAYBE pile, and if there&#8217;s still space, maybe the top of the PROBABLY NOT pile. If a student&#8217;s GPA is under 3.0, it&#8217;s very likely that no one on the committee will even look at their application. <em>(This is a bit of an oversimplification.)</em><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a></p><p>...<em>unless</em> they&#8217;re rescued by someone on the faculty. Occasionally, I&#8217;ll get an email from someone I know at another school asking me to look out for their student&#8217;s application and pointing out their other strengths: independent study projects, research experience, internships, other employment, etc. If the student looks interesting, I&#8217;ll pass the note to the committee, asking them to look at the file. That doesn&#8217;t guarantee that they&#8217;ll be admitted, of course -- especially if they&#8217;re in the NO pile -- but if a faculty member really wants to admit someone, it&#8217;s harder for the committee to say no.</p><p>That&#8217;s how I got into grad school. <strong>Someone on the faculty liked my application, despite my bad grades, and they pulled for me.</strong></p><p>Free advice is usually worth exactly what you pay for it, but let me offer one concrete suggestion: Talk to faculty in your department who do the things you&#8217;re most interested in. (Penn&#8217;s a big department, so you&#8217;ll have to hunt them down.) If you&#8217;re good at their subject, tell them you&#8217;re interested and ask if they can suggest something for you to study further. If you&#8217;re not so good at their subject, tell them you&#8217;re interested anyway and ask if they have any suggestions for how to improve. Don&#8217;t be discouraged if they don&#8217;t have time; just ask for suggestions for other faculty to talk to. Figure out what you&#8217;re best at, and do something visible with that!</p><p>I hope this helps. Good luck!</p><p>-- Jeff</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Added October 2025: More charitably, I was immature and neurospicy, and (like many young adults) had underdeveloped executive function.  I actually worked quite hard on my own personal projects, just not so much in my classes.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>Added October 2025: &#8230;which was in turn a smaller version of the current AI boom/bubble.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>Added October 2025: Believe it or not, those were simpler times.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>Added October 2025: This is still a reasonable description of our incoming PhD students:   <strong>Most</strong> have prior research experience; <strong>some</strong> have prior publications.  Most first-year CS PhD students at Illinois do not have papers yet.  Yes, even in machine learning.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>Added October 2025: Our PhD admissions process has changed significantly over two decades.  There are no &#8220;piles&#8221;; everything is done online.  There is an automated filtering stage that filters out any applicant with a GPA below 3.0 (unless they are rescued by an interested faculty member), or who fail to meet other admissions requirements (like having a bachelor&#8217;s degree or being in the last year of a bachelor&#8217;s degree program)</p><p>All faculty have access to the complete admissions database, which we can sort, search, and filter by several criteria, including GPA, undergrad institution,  research area, and faculty the applicant has expressed interest in working with.  (We explicitly ask for target research areas and relevant faculty in our application, but we can also search for names in applications statements.)  Faculty are encouraged to review applicants that appear most relevant to them; we can also recommend applicants to other faculty for review.</p><p>The admissions committee is charged with lightly reviewing all applications that satisfy the admissions requirements and recommends any they find potentially interesting to appropriate faculty for review.  (This is the modern equivalent of the MAYBE pile.)  PhD admission requires (1) at least three faculty to leave a positive review; (2) at least one faculty declares their willingness to serve as an advisor (assuming of course that the student agrees); (3) at least one faculty member (usually the same as (2)) explicitly nominates the applicant for admission; and (4) the nomination is vetted and approved by the admissions committee.  In most areas (but fortunately not all), willingness to advise requires willingness to offer a research assistantship.  Almost all applicants who are nominated by interested faculty are admitted.</p><p></p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[RIP TypePad]]></title><description><![CDATA[And another one gone, and another one gone]]></description><link>https://jeffgerickson.substack.com/p/rip-typepad</link><guid isPermaLink="false">https://jeffgerickson.substack.com/p/rip-typepad</guid><dc:creator><![CDATA[Jeff Erickson]]></dc:creator><pubDate>Thu, 02 Oct 2025 17:36:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!zU0y!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b3c6c8c-c32a-4ac6-823e-13d8e6c1f2cc_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://jeffgerickson.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://jeffgerickson.substack.com/subscribe?"><span>Subscribe now</span></a></p><h2>Another One Bites the Dust</h2><p>I started a TypePad blog &#8220;Ernie&#8217;s 3D Pancakes&#8221; in the early 2000s.  Sadly, TypePad closed shop on September 30, 2025.  Everything is gone, except through the invaluable services of the Internet Archive&#8217;s Wayback Machine.</p><p>In concordance with Sturgeon&#8217;s Law, most of what my blog was ephemeral fluff, best left in the dustbin of history, but a few posts have received a lot of positive feedback, and even a few citations in the research literature.  As a starting point for this Substack, I plan to repost those posts here, along some more recent updates and corrections.  I may also repost some of my writing on other platforms like TCS StackExchange, Academia StackExchange, and (most recently) Quora.  Hopefuly some people will find these reposts helpful, or at least amusing.</p><p>Welcome!</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://jeffgerickson.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 Jeff&#8217;s Substack! 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><p></p>]]></content:encoded></item></channel></rss>