PLSE Blog RSS Feed

Flippin' Dots

keywords:

The Starbucks Reserve Roastery near me abruptly closed. This news was a big bummer, but not necessarily because of the coffee quality. They had this huge split flap sign whose pleasant waterfall patter washed over the cafe when its message changed, and served as lovely background noise when you were bringing your tourist family around to shop for souvenirs or nibbling on a croissant sandwich and a reading group paper.

Read More: Flippin' Dots

Recursive Types and Infinite Trees (Part 1 of 2)

keywords:

Types in programming languages correspond to sets of semantic objects. Simple types, like int or string, have a clear meaning. However, recursive types, whose descriptions are self-referential with the \(\mu\) operator, can be challenging to grasp. This PLSE blog post aims to clarify the concept of recursive types by grounding the meaning of the \(\mu\) operator in terms of regular infinite trees.

Read More: Recursive Types and Infinite Trees (Part 1 of 2)

2Sum Algorithms

keywords:

Time for yet another floating-point blog post! Since this is my third blog post of the year, I’d like to keep this one brief. This time, I’ll be discussing “2Sum” algorithms, an obsession of mine for a number of years now, consuming a large part of an internship I did at Intel during the summer of 2023. The classic 2Sum algorithm1, attributed to Knuth and Møller, computes the floating-point addition and error term of two floating-point numbers exactly.

  1. Attribution comes from the “Handbook of Floating-Point Arithmetic” by Jean-Michel Muller et al. 

Read More: 2Sum Algorithms

Parameterized Complexity of Running an E-Graph

keywords:

E-Graphs are a data structures that allow us to represent many equivalent programs at once. This post won’t get into background on e-graphs, so check out previous blog posts or the original egg talk. A variety of research projects at PLSE use e-graphs because they are a powerful and flexible tool for performing program optimization. Unfortunately, e-graphs suffer from a serious problem: their run-time performance is unpredictable.

Read More: Parameterized Complexity of Running an E-Graph

Managing Research Data with Databases and Interactive Visualization

keywords:

Every project needs to store and visualize data. Most of us have generated a static plot with matplotlib from data in a CSV file. However, when the data format becomes slightly more complicated and the data size increases, both correctness and performance issues arise. This blog post will try to convince you that databases and interactive visualization provide a better pipeline. It is less error-prone, easier and faster to process your data, and has a shorter feedback loop, all without necessarily adding to your workload.

Read More: Managing Research Data with Databases and Interactive Visualization