<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Projects | FOCS Lab @ NUS</title><link>https://focs-lab.comp.nus.edu.sg/projects/</link><atom:link href="https://focs-lab.comp.nus.edu.sg/projects/index.xml" rel="self" type="application/rss+xml"/><description>Projects</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><image><url>https://focs-lab.comp.nus.edu.sg/media/icon_hu5d7d4d7c5767fff68bb2045c417d28ca_165_512x512_fill_lanczos_center_3.png</url><title>Projects</title><link>https://focs-lab.comp.nus.edu.sg/projects/</link></image><item><title>Concurrency</title><link>https://focs-lab.comp.nus.edu.sg/projects/concurrency/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://focs-lab.comp.nus.edu.sg/projects/concurrency/</guid><description>&lt;p>Concurrent programs must behave correctly across many possible interactions between threads and processes. Bugs can depend on rare schedules, subtle synchronization patterns, or the memory model of the underlying language and hardware. We develop algorithms and tools that make these behaviors easier to explore, understand, and verify.&lt;/p>
&lt;p>Our work connects the mathematical foundations of concurrency with practical program analysis. We study both the complexity of verification problems and techniques that scale to real executions.&lt;/p>
&lt;h2 id="research-directions">Research directions&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Memory models and language semantics.&lt;/strong> Understanding weak memory and message-passing concurrency, and developing rigorous semantics for concurrent programming languages such as Go.&lt;/li>
&lt;li>&lt;strong>Testing, runtime verification, and predictive analysis.&lt;/strong> Finding concurrency bugs through fuzzing and schedule exploration, monitoring correctness conditions such as linearizability, and predicting errors from observed executions.&lt;/li>
&lt;li>&lt;strong>Formal verification.&lt;/strong> Developing proof techniques and automated methods for establishing the correctness of concurrent programs and distributed protocols.&lt;/li>
&lt;/ul>
&lt;h2 id="selected-publications">Selected publications&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://focs-lab.comp.nus.edu.sg/publication/2026/2026-cacm-zhang-dynamic-race-detection/">Dynamic Race Detection with O(1) Samples&lt;/a>. CACM 2026.&lt;/li>
&lt;li>&lt;a href="https://focs-lab.comp.nus.edu.sg/publication/2024/greybox-fuzzing-for-concurrency-testing/">Greybox Fuzzing for Concurrency Testing&lt;/a>. ASPLOS 2024.&lt;/li>
&lt;li>&lt;a href="https://focs-lab.comp.nus.edu.sg/publication/2024/how-hard-is-weak-memory-testing/">How Hard Is Weak-Memory Testing?&lt;/a>. POPL 2024.&lt;/li>
&lt;/ul>
&lt;p>&lt;a href="https://focs-lab.comp.nus.edu.sg/projects/">All projects&lt;/a>&lt;/p></description></item><item><title>Formal Methods for Secure Hardware Design</title><link>https://focs-lab.comp.nus.edu.sg/projects/secure-hardware-design/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://focs-lab.comp.nus.edu.sg/projects/secure-hardware-design/</guid><description>&lt;p>Hardware designs combine concurrent components whose correctness depends on precise timing and communication. Subtle mistakes in these interactions can undermine both functional correctness and security. We investigate how programming languages and formal methods can make hardware easier to design, compose, and verify.&lt;/p>
&lt;p>A central part of this work is &lt;strong>Anvil&lt;/strong>, a hardware description language that uses a type system to prevent timing hazards. Anvil makes timing relationships explicit and checks contracts between communicating modules, while retaining control over cycle-level timing and supporting dynamic timing behavior.&lt;/p>
&lt;h2 id="research-directions">Research directions&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Safe hardware languages.&lt;/strong> Designing abstractions and type systems that make timing and communication requirements explicit and checkable.&lt;/li>
&lt;li>&lt;strong>Compositional verification.&lt;/strong> Reasoning about individual modules and the contracts needed for their safe composition into larger designs.&lt;/li>
&lt;li>&lt;strong>Secure hardware design.&lt;/strong> Developing foundations and tools for expressing and checking security requirements alongside functional correctness.&lt;/li>
&lt;li>&lt;strong>Translation and tool support.&lt;/strong> Exploring how existing hardware designs can be translated into safer languages, with type checking, testing, simulation, and formal verification helping to validate the result.&lt;/li>
&lt;/ul>
&lt;h2 id="selected-publication">Selected publication&lt;/h2>
&lt;p>&lt;a href="https://focs-lab.comp.nus.edu.sg/publication/2026/2026-asplos-yu-anvil-hdl/">Anvil: A General-Purpose Timing-Safe Hardware Description Language&lt;/a>. ASPLOS 2026.&lt;/p>
&lt;p>&lt;a href="https://focs-lab.comp.nus.edu.sg/projects/">All projects&lt;/a>&lt;/p></description></item></channel></rss>