Welcome to Trevor Brown's home page
I am currently an assistant professor in the Computer Science department at the University of Waterloo.
Before that, I was a postdoctoral researcher at the Institute of Science and Technology, Austria.
Before that, I was a postdoctoral researcher at the Technion, Israel Institute of Technology.
Before that, I was a PhD student at the University of Toronto.
Although I was in the theory group at U of T, I would say that my work is closer to systems work than theory.
I care greatly about rigor, whether in theoretical or experimental work.
My research currently revolves around concurrent data structures, especially lock-free ones.
I am also interested in transactional memory, non-volatile memory, and techniques for coping with non-uniform memory architectures.
Supervisor at IST Austria: Dan Alistarh
Supervisor at the Technion: Hagit Attiya
Supervisor at U of T: Faith Ellen
Contact: me [at] tbrown [dot] pro
Curriculum Vitae: [PDF]
- None (will be teaching CS798 multicore programming in F2019, followed by CS341 algorithms in W2020)
Publications and Slides
My CV contains links to all of my publications, sets of slides, and some videos of my talks.
Over the years, I have made quite a bit of code publicly available.
Most of it can be found in my implementations or setbench bitbucket repositories.
Specific implementations are highlighted below.
[C++] Synchronization primitives:
[C++] Memory reclamation
[C++] My trees:
[C++] Modified versions of other trees:
(adding memory reclamation and a uniform interface, and fixing numerous correctness/performance issues - see these slides)
[C++] Modified data structures with atomic range queries:
[C++] Data structures for Intel Hardware Transactional Memory (HTM / TSX-NI):
[Java] My data structures:
Performing data structure experiments
Recently, I've been thinking a lot about the question of how one should perform rigorous data structure experiments.
In October 2017, I gave an invited talk on this subject at the 1st Workshop on the Theory and Practice of Concurrency (colocated with DISC).
If you are interested in this sort of thing, I've uploaded a video on Youtube.
In June 2018, I gave a talk at TU Wien on concurrent binary search trees, and how implementation mistakes and memory layout issues can drastically affect their performance.
Slides can be found here.
I have also started producing video tutorials that distill lessons I've learned while coding up concurrent data structures and experiments.
I'll post them here, as I record them.
- CSC341 W2019: algorithms
- CSC798 F2018: multicore programming
- TA for CSC263 Winter 2014: data structures [under Sam Toueg]
- TA for CSC2221 Fall 2013: introduction to distributed computing [graduate course; under Sam Toueg]
- TA for CSC263 Winter 2013: data structures [under Sam Toueg]
- TA for CSC369 Fall 2012: operating systems [under Angela Demke-Brown]
- TA for CSC263 Winter 2012: data structures [under Sam Toueg]
- TA for CSC263 (and 265) Fall 2011: (enhanced) data structures [under Faith Ellen, Toni Pitassi]
Note: As of September 2017, I've been having problems with my webhost, and my sites are all down. Unfortunately, I have not yet had time to resolve the issue with them.
I've chronicled some of my struggles with repetitive strain injuries in my wrists here.
I also have some stuff (Python code) pertaining to the CSC2501 course at the U of T
After my first time serving as publication chair for a conference (PPoPP'19), I was asked to write about the HotCRP system and my duties. Here is a quick attempt at this.