<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>programmable-matter | Mohammad Moshtaghi</title>
    <link>https://mhmmoshtaghi.github.io/tag/programmable-matter/</link>
      <atom:link href="https://mhmmoshtaghi.github.io/tag/programmable-matter/index.xml" rel="self" type="application/rss+xml" />
    <description>programmable-matter</description>
    <generator>Wowchemy (https://wowchemy.com)</generator><language>en-us</language><copyright>© 2023 Mohammad Moshtaghi</copyright><lastBuildDate>Fri, 17 Feb 2023 00:00:00 +0000</lastBuildDate>
    <image>
      <url>https://mhmmoshtaghi.github.io/media/logo_hu1dc8deb1865675db905a286e8af9308b_16380_300x300_fit_lanczos_3.png</url>
      <title>programmable-matter</title>
      <link>https://mhmmoshtaghi.github.io/tag/programmable-matter/</link>
    </image>

    <item>
      <title>Self-Organizing Particle Systems (SOPS)</title>
      <link>https://mhmmoshtaghi.github.io/project/sops/</link>
      <pubDate>Fri, 17 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/project/sops/</guid>
      <description>&lt;p&gt;Self-Organizing Particle Systems (SOPS) is an abstraction of &lt;em&gt;programmable matter&lt;/em&gt;, a substance with the ability to change its physical properties (shape, density, conductivity, etc.) in a programmable fashion. In order for programmable matter to live up to the dream of being an all-purpose &amp;quot;bucket of stuff&amp;quot; deployable for any task at any scale, we need a rich toolbox of algorithmic primitives upon which we can program more complex behaviors. Although the eventual vision is to control a whole mass of programmable matter as a single entity, our toolbox of primitives should be defined at the level of individual &amp;quot;atoms&amp;quot; of programmable matter to enable arbitrary scalability. Thus, we must take a distributed computing approach to defining micro-scale behaviors that collectively induce macro-scale phenomena.&lt;/p&gt;
&lt;p&gt;Towards this goal, self-organizing particle systems abstractly envision programmable matter as an ensemble of tiny computational units called &lt;em&gt;particles&lt;/em&gt;. These particles are assumed to be very simple: they have very limited memory, no sense of orientation or direction, and only local movement and communication capabilities. Our formal model for these particle systems is the &lt;em&gt;amoebot model&lt;/em&gt;, which provides a theoretical framework for developing and analyzing our distributed algorithms for particle systems.&lt;/p&gt;
</description>
    </item>

    <item>
      <title>The Canonical Amoebot Model: Algorithms and Concurrency Control</title>
      <link>https://mhmmoshtaghi.github.io/publication/daymude2023-canonicalamoebot/</link>
      <pubDate>Fri, 17 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/daymude2023-canonicalamoebot/</guid>
      <description></description>
    </item>

    <item>
      <title>Invited Paper: Asynchronous Deterministic Leader Election in Three-Dimensional Programmable Matter</title>
      <link>https://mhmmoshtaghi.github.io/publication/briones2023-3dleader/</link>
      <pubDate>Wed, 04 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/briones2023-3dleader/</guid>
      <description></description>
    </item>

    <item>
      <title>The Canonical Amoebot Model: Algorithms and Concurrency Control</title>
      <link>https://mhmmoshtaghi.github.io/event/2021disc-canonicalamoebot/</link>
      <pubDate>Tue, 05 Oct 2021 18:20:00 +0200</pubDate>
      <guid>https://mhmmoshtaghi.github.io/event/2021disc-canonicalamoebot/</guid>
      <description></description>
    </item>

    <item>
      <title>The Canonical Amoebot Model: Algorithms and Concurrency Control</title>
      <link>https://mhmmoshtaghi.github.io/publication/daymude2021-canonicalamoebot/</link>
      <pubDate>Mon, 04 Oct 2021 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/daymude2021-canonicalamoebot/</guid>
      <description></description>
    </item>

    <item>
      <title>Algorithmic Foundations of Emergent Behavior in Analog Collectives</title>
      <link>https://mhmmoshtaghi.github.io/event/2021sfi-analogcollectives/</link>
      <pubDate>Wed, 14 Jul 2021 12:15:00 -0600</pubDate>
      <guid>https://mhmmoshtaghi.github.io/event/2021sfi-analogcollectives/</guid>
      <description></description>
    </item>

    <item>
      <title>A Distributed, Stochastic Framework for Active Matter</title>
      <link>https://mhmmoshtaghi.github.io/project/active-matter/</link>
      <pubDate>Fri, 23 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/project/active-matter/</guid>
      <description>&lt;p&gt;We develop a theoretical framework for task-oriented &lt;em&gt;active matter&lt;/em&gt; that combines distributed computing, stochastic processes, statistical physics, active matter physics, and robophysics. By harnessing phase changes from statistical physics in our formal modeling and algorithm design, we obtain robust and provable self-organizing behaviors. We then incorporate this theory into swarm robotics platforms, establishing tight analogies between (but not necessarily strict implementations of) the algorithms&#39; rules and our robots&#39; designs. This allows us to critically examine our theoretical algorithms&#39; robustness to the errors and uncertainties of physical environments. Further, we can treat robot swarms as macro-scale active matter systems, studying the inter-robot dynamics as an analogy to particle interactions.&lt;/p&gt;
</description>
    </item>

    <item>
      <title>Programming Active Cohesive Granular Matter with Mechanically Induced Phase Changes</title>
      <link>https://mhmmoshtaghi.github.io/publication/li2021-bobbots/</link>
      <pubDate>Fri, 23 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/li2021-bobbots/</guid>
      <description>&lt;h3 id=&#34;related-press&#34;&gt;Related Press&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://news.gatech.edu/2021/04/29/simple-robots-smart-algorithms-meet-bobbots&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Simple Robots, Smart Algorithms: Meet the BOBbots.&lt;/a&gt; Dana Randall. &lt;em&gt;Georgia Tech News Center&lt;/em&gt;, April 2021. (Also featured in &lt;a href=&#34;https://www.eurekalert.org/pub_releases/2021-04/giot-srs042321.php&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;em&gt;EurekaAlert!&lt;/em&gt;&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://fullcircle.asu.edu/research/greater-than-the-sum-of-its-parts/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Greater Than the Sum of Its Parts.&lt;/a&gt; Gary Werner. &lt;em&gt;ASU FullCircle&lt;/em&gt;, April 2021. (Also featured in &lt;a href=&#34;https://news.asu.edu/20210426-greater-sum-its-parts&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;em&gt;ASU News&lt;/em&gt;&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>

    <item>
      <title>Collaborating in Motion: Distributed and Stochastic Algorithms for Emergent Behavior in Programmable Matter</title>
      <link>https://mhmmoshtaghi.github.io/event/2021asu-dissertationdefense/</link>
      <pubDate>Mon, 15 Mar 2021 09:00:00 -0700</pubDate>
      <guid>https://mhmmoshtaghi.github.io/event/2021asu-dissertationdefense/</guid>
      <description>&lt;h3 id=&#34;abstract&#34;&gt;Abstract&lt;/h3&gt;
&lt;p&gt;Our world is filled with systems of entities that collaborate in motion, both natural and engineered. These cooperative distributed systems are capable of sophisticated and surprising &lt;em&gt;emergent behavior&lt;/em&gt; that arises from the comparatively simple interactions of their members. A model system for emergent collective behavior is &lt;em&gt;programmable matter&lt;/em&gt;, a physical substance capable of autonomously changing its properties in response to user input or stimuli from its environment. This dissertation studies &lt;em&gt;distributed and stochastic algorithms&lt;/em&gt; that control the local behaviors and interactions of individual modules of programmable matter to induce complex collective behavior at the macroscale. It consists of four parts.&lt;/p&gt;
&lt;p&gt;In the first, a new distributed computing model of programmable matter called the &lt;em&gt;canonical amoebot model&lt;/em&gt; is proposed. A key goal of the canonical amoebot model is to bring algorithmic theory closer to the physical realities of programmable matter hardware, especially with respect to &lt;em&gt;concurrency&lt;/em&gt; and &lt;em&gt;energy distribution&lt;/em&gt;. Two complementary protocols are presented that together can extend existing sequential, energy-agnostic algorithms for programmable matter to the more realistic concurrent, energy-constrained setting without sacrificing correctness, assuming the original algorithms satisfy certain conventions.&lt;/p&gt;
&lt;p&gt;In the second part, &lt;em&gt;stateful distributed algorithms&lt;/em&gt; that use amoebot memory and communication are presented for &lt;em&gt;leader election&lt;/em&gt;, &lt;em&gt;object coating&lt;/em&gt;, &lt;em&gt;convex hull formation&lt;/em&gt;, and &lt;em&gt;asynchronous hexagon formation&lt;/em&gt;. The first three algorithms are proven to have runtimes that are linear in the amoebot system size when assuming a simplified sequential setting. The final algorithm for hexagon formation is instead proven to be correct under unfair asynchronous adversarial activation, the most general of all adversarial activation models.&lt;/p&gt;
&lt;p&gt;In the third part, the &lt;em&gt;stochastic approach to self-organizing particle systems&lt;/em&gt; is presented. This approach combines distributed algorithms with ideas from statistical physics and Markov chain design to replace algorithm reliance on memory and communication with biased random decisions, requiring little to no memory and gaining inherent self-stabilizing and fault-tolerant properties. Using this stochastic approach, algorithms for &lt;em&gt;compression&lt;/em&gt;, &lt;em&gt;shortcut bridging&lt;/em&gt;, and &lt;em&gt;separation&lt;/em&gt; are designed and analyzed.&lt;/p&gt;
&lt;p&gt;Finally, a two-pronged approach to &amp;quot;programming&amp;quot; physical ensembles across scales is presented. This approach leverages the &lt;em&gt;physics of local interactions&lt;/em&gt; to pair theoretical, algorithmic abstractions of self-organizing particle systems with experimental robot systems of &lt;em&gt;active granular matter&lt;/em&gt; that intentionally lack digital computation and communication. We demonstrate how the behavior of robots whose design &lt;em&gt;physically embodies&lt;/em&gt; salient features of an algorithm can be predicted by the algorithm&amp;rsquo;s theoretical analysis, treating the ensemble behaviors of &lt;em&gt;phototaxing&lt;/em&gt;, &lt;em&gt;aggregation&lt;/em&gt;, &lt;em&gt;dispersion&lt;/em&gt;, and &lt;em&gt;object transport&lt;/em&gt;.&lt;/p&gt;
</description>
    </item>

    <item>
      <title>Collaborating in Motion: Distributed and Stochastic Algorithms for Emergent Behavior in Programmable Matter</title>
      <link>https://mhmmoshtaghi.github.io/publication/daymude2021-phdthesis/</link>
      <pubDate>Mon, 15 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/daymude2021-phdthesis/</guid>
      <description>&lt;h3 id=&#34;abstract&#34;&gt;Abstract&lt;/h3&gt;
&lt;p&gt;The world is filled with systems of entities that collaborate in motion, both natural and engineered. These cooperative distributed systems are capable of sophisticated emergent behavior arising from the comparatively simple interactions of their members. A model system for emergent collective behavior is programmable matter, a physical substance capable of autonomously changing its properties in response to user input or environmental stimuli. This dissertation studies distributed and stochastic algorithms that control the local behaviors of individual modules of programmable matter to induce complex collective behavior at the macroscale. It consists of four parts.&lt;/p&gt;
&lt;p&gt;In the first, the canonical amoebot model of programmable matter is proposed. A key goal of this model is to bring algorithmic theory closer to the physical realities of programmable matter hardware, especially with respect to concurrency and energy distribution. Two protocols are presented that together extend sequential, energy-agnostic algorithms to the more realistic concurrent, energy-constrained setting without sacrificing correctness, assuming the original algorithms satisfy certain conventions.&lt;/p&gt;
&lt;p&gt;In the second part, stateful distributed algorithms using amoebot memory and communication are presented for leader election, object coating, convex hull formation, and hexagon formation. The first three algorithms are proven to have linear runtimes when assuming a simplified sequential setting. The final algorithm for hexagon formation is instead proven to be correct under unfair asynchronous adversarial activation, the most general of all adversarial activation models.&lt;/p&gt;
&lt;p&gt;In the third part, distributed algorithms are combined with ideas from statistical physics and Markov chain design to replace algorithm reliance on memory and communication with biased random decisions, gaining inherent self-stabilizing and fault-tolerant properties. Using this stochastic approach, algorithms for compression, shortcut bridging, and separation are designed and analyzed.&lt;/p&gt;
&lt;p&gt;Finally, a two-pronged approach to &amp;quot;programming&amp;quot; physical ensembles is presented. This approach leverages the physics of local interactions to pair theoretical abstractions of self-organizing particle systems with experimental robot systems of active granular matter that intentionally lack digital computation and communication. By physically embodying the salient features of an algorithm in robot design, the algorithm&amp;rsquo;s theoretical analysis can predict the robot ensemble&amp;rsquo;s behavior. This approach is applied to phototaxing, aggregation, dispersion, and object transport.&lt;/p&gt;
</description>
    </item>

    <item>
      <title>Bio-Inspired Energy Distribution for Programmable Matter</title>
      <link>https://mhmmoshtaghi.github.io/event/2021icdcn-energydistribution/</link>
      <pubDate>Thu, 07 Jan 2021 09:35:00 +0900</pubDate>
      <guid>https://mhmmoshtaghi.github.io/event/2021icdcn-energydistribution/</guid>
      <description></description>
    </item>

    <item>
      <title>Bio-Inspired Energy Distribution for Programmable Matter</title>
      <link>https://mhmmoshtaghi.github.io/publication/daymude2021-energydistribution/</link>
      <pubDate>Tue, 05 Jan 2021 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/daymude2021-energydistribution/</guid>
      <description>&lt;h3 id=&#34;summary&#34;&gt;Summary&lt;/h3&gt;
&lt;p&gt;In short, individual bacterium that are metabolically stressed (lacking in nutrients) catalyze a wave of chemical signaling that inhibits the rest of the biofilm’s nutrient uptake. This allows more nutrients to flow to the stressed bacteria, effectively solving the energy distribution problem. We model energy constraints in the amoebot model by giving each particle a battery for storing energy that it can transfer to its neighbors or spend to perform actions. We assume at least one particle in the system has access to an &lt;em&gt;external energy source&lt;/em&gt; from which it can harvest energy. The goal of our energy distribution algorithm is to coordinate the transfer of energy between particles so that all particles meet their actions’ energy demands and at least one particle can actually perform its action within a bounded amount of time. After some initial setup, our &lt;strong&gt;Energy-Sharing&lt;/strong&gt; algorithm works in the following phases repeated by each particle individually:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Communication.&lt;/em&gt; Particles propagate &amp;ldquo;stress&amp;rdquo; and &amp;ldquo;inhibition&amp;rdquo; signals to communicate the energy states of starving particles throughout the system.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Sharing.&lt;/em&gt; Particles harvest energy they lack from an external source (if they have access to one) and transfer energy to neighbors that need it.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Usage.&lt;/em&gt; Particles that are not inhibited spend their stored energy to perform actions, participating in the collective behavior.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We prove that the &lt;strong&gt;Energy-Sharing&lt;/strong&gt; algorithm allows the particle system to meet its energy demands every ${\cal O}(n)$ asynchronous rounds, where $n$ is the number of particles in the system. A simulation of the &lt;strong&gt;Energy-Sharing&lt;/strong&gt; algorithm can be seen below, corresponding to Figure 2 in the paper. All particles are initially idle, with the exception of the root (with external energy access) shown with a gray/black ring. The setup phase establishes the spanning forest (or tree, in this case) rooted at particle(s) with energy access; a particle&amp;rsquo;s parent direction is shown as an arc. Since all particles start with empty batteries, stress flags (shown as red rings) quickly propagate throughout the system and inhibit flags soon follow. As energy is harvested by the root and shared throughout the system, some particles (shown with yellow rings) receive sufficient energy to meet the demand for their next action but remain inhibited from using it. This inhibition remains until all stressed particles in the system receive sufficient energy to meet their demands, at which point particles (shown with green rings) can reset their inhibit flags and use their energy. After using energy, these particles may again become stressed and trigger another stage of inhibition.&lt;/p&gt;














&lt;figure  &gt;
  &lt;div class=&#34;d-flex justify-content-center&#34;&gt;
    &lt;div class=&#34;w-100&#34; &gt;&lt;img alt=&#34;&#34;
           src=&#34;https://mhmmoshtaghi.github.io/publication/daymude2021-energydistribution/energysim.gif&#34;
           loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;/figure&gt;
&lt;p&gt;When communication of the stress/inhibit flags is disabled, the energy distribution strategy in Energy-Sharing fails (just as the bacterial biofilms fail to feed all bacteria when their signal relays are disabled). A simulation of this setting is shown below, corresponding to Figure 3 in the paper. Without the communication phase to inhibit particles from using energy while those that are stressed recharge, particles continuously share any energy they have with their descendants in the spanning forest. Thus, while the leaves of the spanning forest occasionally meet their energy demands(seen as the flickering darker green particles), even after 1000 rounds most particles have still not met their energy demand even once.&lt;/p&gt;














&lt;figure  &gt;
  &lt;div class=&#34;d-flex justify-content-center&#34;&gt;
    &lt;div class=&#34;w-100&#34; &gt;&lt;img alt=&#34;&#34;
           src=&#34;https://mhmmoshtaghi.github.io/publication/daymude2021-energydistribution/nocommsim.gif&#34;
           loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;/figure&gt;
&lt;p&gt;As an independent but supporting result, we present the &lt;strong&gt;Forest-Prune-Repair&lt;/strong&gt; algorithm that enables a spanning forest of particles to self-repair in the presence of &lt;em&gt;crash failures&lt;/em&gt; so long as the set of non-faulty particles remains connected and there is at least one non-crashed root. We prove that this algorithm stabilizes in a spanning forest rooted at root particles in at most ${\cal O}(m^2)$ asynchronous rounds, where $m$ is the number of particles that are severed from the spanning forest by crash failures.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Energy-Sharing&lt;/strong&gt; algorithm relies on an underlying spanning forest structure to communicate its stress/inhibition signals. However, if particles move as they often do in collective behaviors, this disrupts the communication structure. Thus, the &lt;strong&gt;Forest-Prune-Repair&lt;/strong&gt; algorithm can be used as an underlying primitive in &lt;strong&gt;Energy-Sharing&lt;/strong&gt; so that &lt;strong&gt;Energy-Sharing&lt;/strong&gt; can be composed with existing amoebot model algorithms, extending them to consider energy constraints. Below is an example of &lt;strong&gt;Energy-Sharing&lt;/strong&gt; composed with &lt;a href=&#34;https://sops.engineering.asu.edu/simulations/#hexagonformation&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Basic Shape Formation&lt;/a&gt;, corresponding to Figure 5 in the paper.&lt;/p&gt;














&lt;figure  &gt;
  &lt;div class=&#34;d-flex justify-content-center&#34;&gt;
    &lt;div class=&#34;w-100&#34; &gt;&lt;img alt=&#34;&#34;
           src=&#34;https://mhmmoshtaghi.github.io/publication/daymude2021-energydistribution/compsim.gif&#34;
           loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;/figure&gt;
&lt;p&gt;Since &lt;strong&gt;Energy-Sharing&lt;/strong&gt; meets the system’s energy demands every ${\cal O}(n)$ asynchronous rounds and &lt;strong&gt;Forest-Prune-Repair&lt;/strong&gt; repairs any disruptions to the communication structure as particles move, a composed algorithm will not be impeded by the underlying energy distribution primitive, but may add significant overhead to its runtime. However, we observe reasonable performance in practice: for example, since hexagon formation terminates in ${\cal O}(n)$ rounds, our proven bounds suggest that the composed algorithm could terminate in time ${\cal O}(n^2)$ or worse but the graph below demonstrates an overhead that appears asymptotically sublinear. With the addition of more energy roots, the composed algorithm is dramatically faster, approaching the runtime achieved without energy constraints.&lt;/p&gt;
&lt;img src=&#34;compgraph_time.png&#34; style=&#34;display: inline-block; width: 48%; margin-right: 1%&#34;/&gt;
&lt;img src=&#34;compgraph_root.png&#34; style=&#34;display: inline-block; width: 48%; margin-left: 1%&#34;/&gt;
&lt;p&gt;As a final, informal experiment, we performed a simulation where energy is used for &lt;em&gt;reproduction&lt;/em&gt;, mimicking the bacterial biofilms we were inspired by. In our preliminary experiments, we obtain behavior that is qualitatively similar to the biofilm growth patterns observed by &lt;a href=&#34;https://www.nature.com/articles/nature14660&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Liu&lt;/a&gt; and &lt;a href=&#34;https://www.nature.com/articles/nature15709&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Prindle&lt;/a&gt; et al.; in particular, the use of communication and inhibition leads to an oscillatory growth rate. The simulation below corresponds to Figure 7 in the paper.&lt;/p&gt;














&lt;figure  &gt;
  &lt;div class=&#34;d-flex justify-content-center&#34;&gt;
    &lt;div class=&#34;w-100&#34; &gt;&lt;img alt=&#34;&#34;
           src=&#34;https://mhmmoshtaghi.github.io/publication/daymude2021-energydistribution/growthsim.gif&#34;
           loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;/figure&gt;
</description>
    </item>

    <item>
      <title>Convex Hull Formation for Programmable Matter</title>
      <link>https://mhmmoshtaghi.github.io/publication/daymude2020-convexhull/</link>
      <pubDate>Sat, 04 Jan 2020 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/daymude2020-convexhull/</guid>
      <description></description>
    </item>

    <item>
      <title>A Local Stochastic Algorithm for Separation in Heterogeneous Self-Organizing Particle Systems</title>
      <link>https://mhmmoshtaghi.github.io/event/2019random-separation/</link>
      <pubDate>Sat, 21 Sep 2019 09:00:00 -0400</pubDate>
      <guid>https://mhmmoshtaghi.github.io/event/2019random-separation/</guid>
      <description></description>
    </item>

    <item>
      <title>A Local Stochastic Algorithm for Separation in Heterogeneous Self-Organizing Particle Systems</title>
      <link>https://mhmmoshtaghi.github.io/publication/cannon2019-separation/</link>
      <pubDate>Fri, 20 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/cannon2019-separation/</guid>
      <description></description>
    </item>

    <item>
      <title>Simulation of Programmable Matter Systems Using Active Tile-Based Self-Assembly</title>
      <link>https://mhmmoshtaghi.github.io/publication/alumbaugh2019-tilesimulation/</link>
      <pubDate>Wed, 24 Jul 2019 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/alumbaugh2019-tilesimulation/</guid>
      <description></description>
    </item>

    <item>
      <title>Stochastic Algorithms for Programmable Matter</title>
      <link>https://mhmmoshtaghi.github.io/event/2019discretemath-stochastic/</link>
      <pubDate>Wed, 03 Apr 2019 13:00:00 -0700</pubDate>
      <guid>https://mhmmoshtaghi.github.io/event/2019discretemath-stochastic/</guid>
      <description></description>
    </item>

    <item>
      <title>Computing by Programmable Particles</title>
      <link>https://mhmmoshtaghi.github.io/publication/daymude2019-computingparticles/</link>
      <pubDate>Sun, 13 Jan 2019 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/daymude2019-computingparticles/</guid>
      <description></description>
    </item>

    <item>
      <title>Self-Organizing Particle Systems: an Algorithmic Approach to Programmable Matter</title>
      <link>https://mhmmoshtaghi.github.io/event/2018wssr-sops/</link>
      <pubDate>Sun, 04 Nov 2018 16:00:00 +0900</pubDate>
      <guid>https://mhmmoshtaghi.github.io/event/2018wssr-sops/</guid>
      <description></description>
    </item>

    <item>
      <title>A Stochastic Approach to Shortcut Bridging in Programmable Matter</title>
      <link>https://mhmmoshtaghi.github.io/publication/andresarroyo2018-bridging/</link>
      <pubDate>Fri, 28 Sep 2018 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/andresarroyo2018-bridging/</guid>
      <description></description>
    </item>

    <item>
      <title>Phototactic Supersmarticles</title>
      <link>https://mhmmoshtaghi.github.io/publication/savoie2018-supersmarticles/</link>
      <pubDate>Tue, 25 Sep 2018 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/savoie2018-supersmarticles/</guid>
      <description>&lt;h3 id=&#34;related-press&#34;&gt;Related Press&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.quantamagazine.org/smart-swarms-of-robots-seek-better-algorithms-20180214&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Smart Swarms Seek New Ways to Cooperate.&lt;/a&gt; Kevin Hartnett. &lt;em&gt;Quanta Magazine&lt;/em&gt;, February 2018. (Also featured in &lt;a href=&#34;https://technews.acm.org/archives.cfm?fo=2018-02-feb/feb-16-2018.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;em&gt;ACM TechNews&lt;/em&gt;&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>

    <item>
      <title>Brief Announcement: A Local Stochastic Algorithm for Separation in Heterogeneous Self-Organizing Particle Systems</title>
      <link>https://mhmmoshtaghi.github.io/publication/cannon2018-separationba/</link>
      <pubDate>Mon, 23 Jul 2018 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/cannon2018-separationba/</guid>
      <description></description>
    </item>

    <item>
      <title>Improved Leader Election for Self-Organizing Programmable Matter</title>
      <link>https://mhmmoshtaghi.github.io/publication/daymude2017-improvedleaderelection/</link>
      <pubDate>Sun, 31 Dec 2017 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/daymude2017-improvedleaderelection/</guid>
      <description></description>
    </item>

    <item>
      <title>On Your Marks, Get Set, Coat!</title>
      <link>https://mhmmoshtaghi.github.io/post/on-your-marks-get-set-coat/</link>
      <pubDate>Mon, 11 Dec 2017 09:05:00 -0700</pubDate>
      <guid>https://mhmmoshtaghi.github.io/post/on-your-marks-get-set-coat/</guid>
      <description>&lt;p&gt;My first journal paper was &lt;a href=&#34;http://rdcu.be/zOaK&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;published&lt;/a&gt; early last week, marking a milestone in the winding forest path that is my PhD. The paper has some nice ideas and results I&amp;rsquo;m proud of, but — regrettably — the writing style and level of mathematical rigor needed for publication can make it pretty hard to decipher for anyone not familiar with our niche of computer science. I&amp;rsquo;m of the opinion that ideas are only useful if people can understand them, so to that end I&amp;rsquo;m going to explain this paper in a way that&amp;rsquo;s a bit less formal and academic. With a little effort, I think we&amp;rsquo;ll both learn something new here. (And if it&amp;rsquo;s still all Greek to you, I&amp;rsquo;ll happily answer questions you leave in the comments).&lt;/p&gt;
&lt;h2 id=&#34;the-nickel-version-tldr&#34;&gt;The Nickel Version (TL;DR)&lt;/h2&gt;
&lt;p&gt;The paper (whose title is mathy and unimportant) is all about programming futuristic, sci-fi materials that don&amp;rsquo;t exist yet to coat other objects in even layers as (relatively) fast as possible.&lt;/p&gt;
&lt;h2 id=&#34;the-uh-dollar-version&#34;&gt;The, Uh, Dollar(?) Version&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s take a look at the paper&amp;rsquo;s title (&lt;em&gt;emphasis&lt;/em&gt; added): &amp;ldquo;On the &lt;em&gt;Runtime&lt;/em&gt; of &lt;em&gt;Universal Coating&lt;/em&gt; for &lt;em&gt;Programmable Matter&lt;/em&gt;.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Runtime&lt;/em&gt; is a word we use to talk about how fast an algorithm is. As in many other aspects of life, faster is better and more efficient. So this paper is about how fast &amp;ldquo;Universal Coating for Programmable Matter&amp;rdquo; is.&lt;/p&gt;














&lt;figure  &gt;
  &lt;div class=&#34;d-flex justify-content-center&#34;&gt;
    &lt;div class=&#34;w-100&#34; &gt;&lt;img alt=&#34;&#34; srcset=&#34;
               /post/on-your-marks-get-set-coat/featured_hu6c163cf7af4fbe950083c652bb55d01a_505426_463e832ee3e11f196d1a814633b6e635.png 400w,
               /post/on-your-marks-get-set-coat/featured_hu6c163cf7af4fbe950083c652bb55d01a_505426_43f7aed6ae179137eb8905b6c4b365d3.png 760w,
               /post/on-your-marks-get-set-coat/featured_hu6c163cf7af4fbe950083c652bb55d01a_505426_1200x1200_fit_lanczos_3.png 1200w&#34;
               src=&#34;https://mhmmoshtaghi.github.io/post/on-your-marks-get-set-coat/featured_hu6c163cf7af4fbe950083c652bb55d01a_505426_463e832ee3e11f196d1a814633b6e635.png&#34;
               width=&#34;760&#34;
               height=&#34;317&#34;
               loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;/figure&gt;
&lt;p&gt;&lt;em&gt;Programmable matter&lt;/em&gt; broadly describes any kind of physical material that can change itself as a reaction to what&amp;rsquo;s around it without human interaction. It&amp;rsquo;s a bit sci-fi, but imagine a future in which roads fill their own potholes and cracks after wear and tear, clothes heal themselves from fraying and holes, or artificial cells isolate and neutralize malignant tumors in the human body. It sounds crazy and is definitely out there, but that&amp;rsquo;s what we&amp;rsquo;re talking about here.&lt;/p&gt;














&lt;figure  &gt;
  &lt;div class=&#34;d-flex justify-content-center&#34;&gt;
    &lt;div class=&#34;w-100&#34; &gt;&lt;img alt=&#34;&#34; srcset=&#34;
               /post/on-your-marks-get-set-coat/artificialcells_hu20929dbf7529e69106953818f1a68422_348174_01705d0dc4cb7b8051eef406ca66d3cb.png 400w,
               /post/on-your-marks-get-set-coat/artificialcells_hu20929dbf7529e69106953818f1a68422_348174_ba5b21ab1a072095349a7a938d122ae6.png 760w,
               /post/on-your-marks-get-set-coat/artificialcells_hu20929dbf7529e69106953818f1a68422_348174_1200x1200_fit_lanczos_3.png 1200w&#34;
               src=&#34;https://mhmmoshtaghi.github.io/post/on-your-marks-get-set-coat/artificialcells_hu20929dbf7529e69106953818f1a68422_348174_01705d0dc4cb7b8051eef406ca66d3cb.png&#34;
               width=&#34;760&#34;
               height=&#34;317&#34;
               loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;/figure&gt;
&lt;p&gt;&lt;em&gt;Universal Coating&lt;/em&gt; is the action we&amp;rsquo;re trying to do. In this context, we mean &amp;ldquo;coating&amp;rdquo; like a coat of paint; we want to cover something as evenly as possible. (Nobody likes a lumpy paint job). &amp;ldquo;Universal,&amp;rdquo; as a math word, means that a technique works in many/all cases. Here, we&amp;rsquo;re talking about a single approach to coating that works no matter what the object to be coated looks like. (Which is pretty cool).&lt;/p&gt;














&lt;figure  &gt;
  &lt;div class=&#34;d-flex justify-content-center&#34;&gt;
    &lt;div class=&#34;w-100&#34; &gt;&lt;img alt=&#34;&#34; srcset=&#34;
               /post/on-your-marks-get-set-coat/newpaint_hu9d7b855bc80a92d321e5cedaf16add02_541206_6ec75bda627dc562e11886e0a53097b5.png 400w,
               /post/on-your-marks-get-set-coat/newpaint_hu9d7b855bc80a92d321e5cedaf16add02_541206_9ada2ea019ee7f5cac346ca2d97982e1.png 760w,
               /post/on-your-marks-get-set-coat/newpaint_hu9d7b855bc80a92d321e5cedaf16add02_541206_1200x1200_fit_lanczos_3.png 1200w&#34;
               src=&#34;https://mhmmoshtaghi.github.io/post/on-your-marks-get-set-coat/newpaint_hu9d7b855bc80a92d321e5cedaf16add02_541206_6ec75bda627dc562e11886e0a53097b5.png&#34;
               width=&#34;760&#34;
               height=&#34;317&#34;
               loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;/figure&gt;
&lt;p&gt;So, all together, this paper is about analyzing the speed of a particular approach to using futuristic materials for coating any kind of object in nice, even layers. (Ok, so even the one sentence wrap up is a mouthful). Also, a big thank you to Annie Carson for the great illustrations!&lt;/p&gt;
&lt;h2 id=&#34;so-how-does-it-work&#34;&gt;So How Does It Work?&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m really glad you asked. Actually, I&amp;rsquo;m really glad you&amp;rsquo;re still here after that heavy appetizer of an overview; hopefully it didn&amp;rsquo;t spoil your appetite before our main course, which starts right now! Take a look at a simulation of the Universal Coating algorithm over on our &lt;a href=&#34;https://sops.engineering.asu.edu/simulations/#universalcoating&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;lab site&lt;/a&gt;, and keep it open for the rest of this section so you can refer back to it.&lt;/p&gt;
&lt;p&gt;We need a bit of terminology before I explain what&amp;rsquo;s going on with all those dots and colors. There are two main &amp;ldquo;things&amp;rdquo; in this algorithm. Thing 1 is the &lt;em&gt;object&lt;/em&gt;, which is the cluster of dots with black circles in the middle. We&amp;rsquo;re keeping things nice and simple in this example by making the object a hexagon, but it can be essentially any shape you want (&amp;ldquo;universal&amp;rdquo;, remember?). Thing 2 is the &lt;em&gt;particle system&lt;/em&gt;, which are all the other dots that move around and change color. &amp;ldquo;Particle system&amp;rdquo; is just the term we use for the programmable matter stuff we talked about before: we&amp;rsquo;re trying to coat the object with these particles.&lt;/p&gt;
&lt;p&gt;In really broad strokes, the algorithm can be broken down into four major steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Get all the particles oriented towards the object using something like follow-the-leader. In the simulation video (0:00–0:02), this is when they all turn yellow. If you start at any yellow particle and follow its pointer to the next particle and so on, you&amp;rsquo;ll always end up at the object.&lt;/li&gt;
&lt;li&gt;Coat the object&amp;rsquo;s first layer. This happens insanely fast in the video (0:01–0:02) but there are actually a couple particles that turn red and fill in the few positions on the object&amp;rsquo;s first layer that weren&amp;rsquo;t already filled. You can see them if you pause the video and drag the slider back and forth around 0:01.&lt;/li&gt;
&lt;li&gt;Decide on a position to be the start/end of each layer. Choosing this &lt;em&gt;marker position&lt;/em&gt; plays a big role in helping the particles learn when one layer is finished so they can start forming the next one. In the video (0:02–0:07), this decision process is shown with the line segments around the object changing colors. At 0:07, the particle occupying the marker position turns a light grey color.&lt;/li&gt;
&lt;li&gt;Coat the object in more layers one by one until all particles have been used. The video (0:08–0:20) shows this quite clearly, with finished particles turning green. The grey line of particles growing from the object towards the bottom are the particles from Step 3 which mark the start/end of each layer.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And that&amp;rsquo;s it! Perhaps as a point of pride, I have to mention that — although simple to describe — this algorithm is really involved. One of the main difficulties is that each particle runs this algorithm individually, so instead of Steps 1–4 happening nice and sequentially, they can actually all happen at once. And… yeah, it&amp;rsquo;s as chaotic as it sounds. The good news is that, in a &lt;a href=&#34;https://sops.engineering.asu.edu/sops/universal-coating/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;previous paper&lt;/a&gt;, our group proved this algorithm always works, no matter what. Going forward, we&amp;rsquo;ll just take the fact that it works for granted.&lt;/p&gt;
&lt;h2 id=&#34;quick-get-your-coat&#34;&gt;(Quick) Get Your Coat!&lt;/h2&gt;
&lt;p&gt;I can&amp;rsquo;t remember how many times I got in the car to go somewhere as a kid only to be sent back inside to get a jacket. Mom never said the &amp;ldquo;quick&amp;rdquo; part, but it was definitely implied!&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;re going to shift our discussion to the real work of this new paper: proving that our Universal Coating algorithm runs reasonably fast. Let&amp;rsquo;s start with a motivating example for why you might do this kind of analysis:&lt;/p&gt;
&lt;p&gt;Pretend there&amp;rsquo;s a secret technique for earning $1,000,000. Maybe it even comes with a guarantee that it will always work. We might get excited about something like that, or at least want to know more. But what if we found out that no one knew how long it would take to work? Or even worse, what if the fine print said it would take more days than the number of atoms in the universe? Well. We might still be waiting for our payout long after inflation turns a million dollars into pocket change, the cows come home, and the sun expands to consume the earth.&lt;/p&gt;
&lt;p&gt;The lesson to be learned here: we need to know both that an algorithm works &lt;strong&gt;and&lt;/strong&gt; that it won&amp;rsquo;t take a ridiculously long time. So how do we analyze the algorithm&amp;rsquo;s runtime? There&amp;rsquo;s often more than one way to crack that coconut, but the techniques can get pretty involved. Even getting a mastery over the most fundamental techniques can take the larger part of most undergraduate Computer Science (CS) programs. (Fun fact: this side of CS doesn&amp;rsquo;t even have to involve programming, contrary to the popular belief that CS people are a bunch of tech support code monkeys. Yes, I probably can &lt;a href=&#34;https://www.xkcd.com/627/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;fix your iPhone&lt;/a&gt;. No, I didn&amp;rsquo;t learn that in school.)&lt;/p&gt;
&lt;p&gt;To explain both why analyzing our particular algorithm was nasty and how we ended up doing it, I&amp;rsquo;ll use a quick allegory. Imagine a race between two teams: Team Red and Team Blue. Team Red works like a machine: everyone comes to practice and trains hard, they perform well in events, and — most importantly — they run in perfect lock step, starting together and finishing together. Team Blue, on the other hand, is more about the individual effort. They also perform well in events, but have a mix of sprinters, endurance runners, runners who like to stop and smell the roses, and so on. Some of Team Blue&amp;rsquo;s runners end up finishing really fast, while others take longer.&lt;/p&gt;
&lt;p&gt;Our particle systems are, essentially, Team Blue. We don&amp;rsquo;t make any assumptions about how fast each particle works relative to the others, and it&amp;rsquo;s entirely possible that a particle can suddenly go faster or slower than usual without following a pattern. This makes it hard to figure out when the last Blue runner (or particle) will cross the finish line. So, instead of directly analyzing our system (Team Blue), we proved two things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Team Red — a simpler version of our particle systems where everyone progresses through the algorithm at the same rate — runs &amp;ldquo;fast&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Team Blue (our particle system) always runs faster than Team Red.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Therefore, as a nice logical result, Team Blue also runs &amp;ldquo;fast&amp;rdquo;. In fact, it&amp;rsquo;s entirely possible it even runs &lt;em&gt;really&lt;/em&gt; fast!&lt;/p&gt;
&lt;h2 id=&#34;good-job-out-there-get-some-water&#34;&gt;Good Job Out There, Get Some Water&lt;/h2&gt;
&lt;p&gt;As a recap, we have an algorithm for programmable matter which coats objects of all shapes and sizes. We showed that this algorithm always works in an &lt;a href=&#34;https://sops.engineering.asu.edu/sops/universal-coating/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;older paper&lt;/a&gt;, and that it runs pretty fast in this new &lt;a href=&#34;http://rdcu.be/zOaK&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;journal paper&lt;/a&gt;. This runtime analysis boiled down to showing that a simplified version of our particle system runs the algorithm quickly, and that the real particle system always runs it even faster. (For my CS people out there, we showed that the Universal Coating algorithm runs in $\mathcal{O}(n)$ asynchronous rounds with high probability, where $n$ is the number of particles in the system).&lt;/p&gt;
&lt;p&gt;Thanks for reading, and feel free to comment with your thoughts, ideas, and questions!&lt;/p&gt;
</description>
    </item>

    <item>
      <title>On the Runtime of Universal Coating for Programmable Matter</title>
      <link>https://mhmmoshtaghi.github.io/publication/daymude2018-coatingruntime/</link>
      <pubDate>Tue, 28 Nov 2017 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/daymude2018-coatingruntime/</guid>
      <description>&lt;h3 id=&#34;related-press&#34;&gt;Related Press&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://asunow.asu.edu/20170306-opening-paths-progress-programmable-materials&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Opening Paths to Progress with Programmable Materials.&lt;/a&gt; Joe Kullman. &lt;em&gt;ASU Now&lt;/em&gt;, March 2017. (Also featured in &lt;a href=&#34;http://technews.acm.org/archives.cfm?fo=2017-03-mar/mar-13-2017.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;em&gt;ACM TechNews&lt;/em&gt;&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>

    <item>
      <title>A Stochastic Approach to Shortcut Bridging in Programmable Matter</title>
      <link>https://mhmmoshtaghi.github.io/event/2017acoseminar-bridging/</link>
      <pubDate>Fri, 06 Oct 2017 13:00:00 -0500</pubDate>
      <guid>https://mhmmoshtaghi.github.io/event/2017acoseminar-bridging/</guid>
      <description>&lt;p&gt;Image of &lt;em&gt;Eciton&lt;/em&gt; army ants forming a shortcut bridge is reproduced with permission from &lt;a href=&#34;https://doi.org/10.1073/pnas.1512241112&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Reid et al. (PNAS, 2015)&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>

    <item>
      <title>A Stochastic Approach to Shortcut Bridging in Programmable Matter</title>
      <link>https://mhmmoshtaghi.github.io/publication/andresarroyo2017-bridging/</link>
      <pubDate>Thu, 24 Aug 2017 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/andresarroyo2017-bridging/</guid>
      <description>&lt;p&gt;Image of &lt;em&gt;Eciton&lt;/em&gt; army ants forming a shortcut bridge is reproduced with permission from &lt;a href=&#34;https://doi.org/10.1073/pnas.1512241112&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Reid et al. (PNAS, 2015)&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>

    <item>
      <title>Local Stochastic Algorithms for Compression and Shortcut Bridging in Programmable Matter</title>
      <link>https://mhmmoshtaghi.github.io/event/2017bda-compression/</link>
      <pubDate>Fri, 28 Jul 2017 14:05:00 -0500</pubDate>
      <guid>https://mhmmoshtaghi.github.io/event/2017bda-compression/</guid>
      <description></description>
    </item>

    <item>
      <title>Convex Hull Formation for Programmable Matter</title>
      <link>https://mhmmoshtaghi.github.io/event/2017bda-convexhull/</link>
      <pubDate>Fri, 28 Jul 2017 13:40:00 -0500</pubDate>
      <guid>https://mhmmoshtaghi.github.io/event/2017bda-convexhull/</guid>
      <description></description>
    </item>

    <item>
      <title>A Markov Chain Algorithm for Compression in Self-Organizing Particle Systems</title>
      <link>https://mhmmoshtaghi.github.io/publication/cannon2016-compression/</link>
      <pubDate>Mon, 25 Jul 2016 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/cannon2016-compression/</guid>
      <description>&lt;h3 id=&#34;related-press&#34;&gt;Related Press&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://discrete-notes.github.io/sss-2020-2-compression&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;SSS 2020 Report 2: Compression of programmable matter.&lt;/a&gt; Laurent Feuilloley. &lt;em&gt;Discrete Notes&lt;/em&gt;, November 2020.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://asunow.asu.edu/20170306-opening-paths-progress-programmable-materials&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Opening Paths to Progress with Programmable Materials.&lt;/a&gt; Joe Kullman. &lt;em&gt;ASU Now&lt;/em&gt;, March 2017. (Also featured in &lt;a href=&#34;http://technews.acm.org/archives.cfm?fo=2017-03-mar/mar-13-2017.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;em&gt;ACM TechNews&lt;/em&gt;&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://rjlipton.wordpress.com/2016/09/25/a-creeping-model-of-computation&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;A Creeping Model of Computation.&lt;/a&gt; Dick Lipton and Ken Regan. &lt;em&gt;Gödel’s Lost Letter and P=NP&lt;/em&gt;, September 2016.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>

    <item>
      <title>Compression in Self-Organizing Particle Systems</title>
      <link>https://mhmmoshtaghi.github.io/publication/daymude2016-undergradthesis/</link>
      <pubDate>Tue, 31 May 2016 00:00:00 +0000</pubDate>
      <guid>https://mhmmoshtaghi.github.io/publication/daymude2016-undergradthesis/</guid>
      <description></description>
    </item>

    <item>
      <title>Compression in Self-Organizing Particle Systems</title>
      <link>https://mhmmoshtaghi.github.io/event/2016asu-undergradthesis/</link>
      <pubDate>Wed, 06 Apr 2016 11:00:00 -0700</pubDate>
      <guid>https://mhmmoshtaghi.github.io/event/2016asu-undergradthesis/</guid>
      <description></description>
    </item>

  </channel>
</rss>
