Hello and Welcome! My name is Christian DeLozier (del - oh - zure). I am an eighth year PhD student in the Architecture and Compilers Group at the University of Pennsylvania advised by Joe Devietti. I will be graduating in the summer of 2018 and starting as an Assistant Professor at the United States Naval Academy.
Research
My research interests span multiple areas of computer science, including computer architecture, compilers, programming languages, and security. Many of my research projects have combined these areas in both concept and implementation.
My first project at the University of Pennsylvania focused on defining and implementing a safe subset of C++ (Ironclad C++). This project combined programming languages with security and required a small dive into garbage collection. I also spent some time working on providing memory safety for GPU applications as part of a joint project with NVIDIA, but this work was never published.
My thesis work proposes a new strong consistency model for parallel programming called an "ordering-free region." This work leverages computer architecture (hardware design and parallelism), compilers (instrumentation and optimizations), and programming languages (models and proofs) to prevent security vulnerabilities (data-races and atomicity violations). We are currently in the process of trying to publish multiple papers on this work.
I have also delved into a few additional projects. I worked on automatic repair for false sharing on multicore architectures. This project uses operating system tricks to transition from a threaded execution to a multiple process execution when false sharing is detected (using hardware performance counters). Recently, I have been working on a new project on preventing code-reuse attacks through a new form of context-sensitive control-flow integrity.
During the summer of 2013, I interned at Qualcomm Research Silicon Valley under the direction of Pablo Montesinos Ortego and Calin Cascaval. I worked on the MARE project, which was a task-based parallel programming framework. I designed and implemented synchronization primitives for the parallel programming library. I also found and fixed both architecture-specific and application-specific performance bugs within the task-parallel runtime system.
Publications
SOFRITAS: Serializable Ordering-Free Regions for Increasing Thread Atomicity Scalably
Christian DeLozier, Ariel Eizenberg, Brandon Lucia, Joseph Devietti
ASPLOS, March 2018. (pdf)
SlimFast: Reducing Metadata Redundancy in Sound and Complete Dynamic Data Race Detection
Yuanfeng Peng, Christian DeLozier, Ariel Eizenberg, William Mansky and Joseph Devietti.
To appear in IPDPS, 2018.
TMI: Thread Memory Isolation for False Sharing Repair
Christian DeLozier, Ariel Eizenberg, Shiling Hu, Gilles Pokam, Joseph Devietti.
MICRO, October 2017. (pdf)
MAMA: Mostly Automatic Management of Atomicity.
Christian DeLozier, Joseph Devietti, and Milo Martin.
WoDet, March 2014. (pdf)
Ironclad C++: A Library-Augmented Type-Safe Subset of C++.
Christian DeLozier, Richard Eisenberg, Santosh Nagarakatte, Peter-Michael Osera,
Milo M. K. Martin, and Steve Zdancewic.
OOPSLA, October 2013. (pdf) (github)
Ironclad C++: A Library-Augmented Type-Safe Subset of C++.
Christian DeLozier, Richard Eisenberg, Santosh Nagarakatte, Peter-Michael Osera,
Milo M. K. Martin, and Steve Zdancewic.
CIS Technical Report #MS-CIS-13-05. 28 Mar 2013. (pdf)
Talks
F2P: Free to Program Christian DeLozier. (This is a silly talk I gave at WACI 2018.) WACI, March 2018. (pdf)
Teaching
I was lucky enough to get to work with approximately 200 amazing students from 5th to 8th grade at St. Francis de Sales. These students learned the basics of programming via Scratch, Processing, HTML, CSS, Javascript, and SQL.
I taught CIS 190: C++ Programming during the Fall 2015 and Spring 2015 semesters. The code and lecture notes for the course can be found here.
In Fall 2014, I taught a 2 day C bootcamp for the embedded systems program. The notes for the bootcamp can be found here. I taught a similar bootcamp for the Penn Institute for Computational Science (PICS) on C++ in the Summer of 2015. The notes for the PICS tutorial can be found here.
I was a Teaching Assistant for CIS 501 (Computer Architecture) in the Fall of 2011 and for CIS 371 (Computer Organization and Design) in the Spring of 2012.
Course Work
- CIS 500, Software Foundations (Spring 2011)
- CIS 501, Computer Architecture (Fall 2010)
- CIS 505, Theory of Computation (Spring 2011)
- CIS 520, Machine Learning (Fall 2010)
- CIS 541, Embedded Software (Fall 2010)
- CIS 552, Advanced Programming (Fall 2011)
- CIS 555, Internet and Web Systems (Spring 2011)
- CIS 565, GPU Programming and Architecture (Spring 2012) (libcxxgpu)
- CIS 800, Topics in Parallel Programming (Spring 2013)
- CIS 601, Security in Multicore Architectures (Spring 2014)
- CIS 800, Special Topic: Software-Defined Data Centers (Fall 2015)
I completed my Written Preliminary Exam II in the spring of 2013 on the topic of Low Pause-Time Garbage Collection.