Ivan Beschastnikh

Assistant Professor
NSS lab, SPL lab
Department of Computer Science
University of British Columbia, ICICS 327
My calendar


About me

I have broad research interests that usually touch on systems and software engineering. My current projects span distributed systems, formal methods, modeling, tracing and analysis of program behavior. I enjoy building and studying real software systems and tend to be empirical in my research.

I started at UBC in the Summer of 2013. Before this I was working on my PhD at the University of Washington in Seattle. At UW I worked with Tom Anderson, Michael Ernst, and Arvind Krishnamurthy on tools to infer models of complex systems from logs of their behavior, networked testbeds, DHTs, and other fun topics.

Here are some recent(ish) recorded talks:

If you intend to apply for academic jobs in CS, you may want to see my research and teaching statements.

This website overviews my academic self. You can also find my profiles on Google Scholar and DBLP.


Research projects


  • Program analysis as a GitHub service
  • Extensible network testbeds
  • Runtime verification and adaptation of micro-services
  • Performance debugging of multi-threaded systems
  • Natural language querying for software engineering traceability
  • Using SMT-solvers to allocate resources in the data center
  • Using SMT-solvers for specification mining
  • Crowd-sourcing specification mining
  • Data-temporal specification mining
  • Test-case generation using specification miners
  • Refactoring asynchronous JavaScript callbacks
  • Characterizing physical insider attacks on Facebook
  • Managing assertions in large systems code
  • Secure and flexible data management using ARM TrustZone
  • ... and some others

Ongoing, but further along:

Dinv: distributed system state invariant detector. (Video!)

Distributed systems are difficult to debug and understand. One reasons for this is distributed state, which is not easily accessible and must be pieced together from the states of the individual nodes. Dinv statically analyzes the node source code to identify distributed state variables and then instruments the system to record these variables at runtime. After system execution Dinv uses dynamic analysis to determine consistent distributed state snapshots and infers likely distributed state invariants.

Callback hell in JavaScript.

Callbacks are a popular language features in JavaScript. However, they are also a source of comprehension and maintainability issues. The example on the left illustrates nested, anonymous callbacks, as well as asynchronous callback scheduling. Not much code, but so much complexity! We carried out a study of callbacks across 138 applications, and are developing tools to help developers manage callback hell in their applications. Our analysis code from the study is online.

ShiViz: Visualizing distributed system logs. (Try it, video)

Distributed systems generated logs that are complex and unwieldy. ShiViz helps developers understand such logs through visualization. ShiViz visualizes a distributed execution that has been instrumented to record vector clock timestamps (e.g., with GoVector or ShiVector). The visualizations are simple-to-understand and interactive. The user can understand complex system behavior by exploring the log through the visualization, comparing executions side-by-side, searching for specific behavior (by keyword and topology), and much more.

Repograms: exploring and juxtaposing software repositories. (Try it!)

Repograms is a tool for visualizing the activity in a software repositories (e.g., git). It uses a simple metaphor of multi-colored blocks of varying sizes to encode different kinds of information about the repository. For example, each unique committer could be assigned to a color and the sequence of blocks can reveal who works when, and how many commits each person makes.

Texada: general LTL specification mining. (Try it, video)

Texada is a temporal specification mining tool for extracting linear temporal logic (LTL) specifications of arbitrary length and complexity. Texada takes a user-defined LTL property type template and a log of program traces as input and outputs a set of instantiations of the property type (i.e., LTL formulas) that are true on the traces in the log. Texada is envisioned as a specification mining engine on top of which new software analyses can be developed.

Perfume: Inferring performance models. (Try it, video)

Perfume summarizes a system's logged executions in a performance-aware, behavioral model. Performance metrics present in logs convey vital information about most systems, yet previous model inference work ignores performance data. By leveraging this information, Perfume generates more precise models, which can help developers understand system behavior that depends on metrics like execution time, network traffic, or energy consumption.

NetCheck: Diagnosing networked applications from blackbox traces.

Networked applications can fail for many complex reasons having to do with the network or misbehavior of a remote end-host. NetCheck uses traces of syscalls calls made by the application and any end-hosts that are pertinent to the application logic (e.g., the user's desktop, an SMTP server, and a DHCP server). Using these traces NetCheck reconstructs a plausible partial order of network communication without any clock synchronization. It then uses a set of rules to diagnose network issues that are apparent in the reconstructed network behavior.

ShiVector: Augmenting logs of distributed systems with partial ordering.

A major challenge in debugging distributed systems is analyzing execution logs generated at multiple hosts. ShiVector transparently adds vector timestamps to logs generated by a distributed system. These vector-timestamped logs capture partial ordering information, which can be used for further analysis and log comprehension. ShiVector-augmented logs can be visualized with ShiViz.

Synoptic: Inferring FSM models from logs of sequential executions.

Systems are often difficult to debug and to understand. A typical way of gaining insight into system behavior is by inspecting execution logs. Manual inspection of logs, however, is an arduous process. This project helps this problem by designing Synoptic, a tool to produce summary model of a system log. Two features distinguish Synoptic from other tools. First, Synoptic's models preserve key invariants mined from the log, making them more accurate. Second, Synoptic uses refinement to derive the model, which is more efficient than traditional coarsening algorithms.

CSight: Inferring communicating FSM models of distributed systems.

CSight mines a communicating FSM model to represent the distributed system that generated a set of logs. Like Synoptic, CSight mines models that preserve temporal properties of the system. Engineers can use the inferred models to understand complex behavior, detect anomalies, debug, and increase confidence in the correctness of their implementations.

InvariMint: Declaratively specifying model inference algorithms.

InvariMint is an approach to express FSM model inference algorithms in a common framework. The key idea is to encode properties of an algorithms as finite state machines. These properties can then be instantiated for a specific input log of observations and combined to generate/infer a model that describes the observations. InvariMint (1) leads to new fundamental insights and better understanding of existing algorithms, (2) simplifies creation of new algorithms, including hybrids that extend existing algorithms, and (3) makes it easy to compare and contrast previously published algorithms.

(Show) Older projects

(Show) Even older projects


Research publications

Accelerating software engineering research adoption with Analysis Bots
Ivan Beschastnikh, Mircea F. Lungu, Yanyan Zhuang.
To appear at ICSE 2017, NIER track.
Studying multi-threaded behavior with TSViz
Matheus Nunes, Harjeet Lalh, Ashaya Sharma, Augustine Wong, Svetozar Miucin, Alexandra Fedorova, Ivan Beschastnikh.
To appear as tool demonstration at ICSE 2017.
Characterizing Social Insider Attacks on Facebook
Wali Usmani, Diogo Marques, Ivan Beschastnikh, Konstantin Beznosov, Tiago Guerreiro, Luis Carriço.
To appear in CHI 2017.
Visually Reasoning about System and Resource Behavior
Tony Ohmann, Ryan Stanley, Ivan Beschastnikh, Yuriy Brun.
Appeared as tool demonstration at ICSE 2016.
Debugging Distributed Systems: Challenges and options for validation and debugging
Ivan Beschastnikh, Patty Wang, Yuriy Brun, Michael D. Ernst.
Communications of the ACM, vol. 59, no. 8, Aug. 2016, pp. 32-37.
ACM Queue, vol. 14, no. 2, March/April 2016, pp. 91-110.
Comparing Repositories Visually with RepoGrams
Daniel Rozenberg, Ivan Beschastnikh, Fabian Kosmale, Valerie Poser, Heiko Becker, Marc Palyart, Gail Murphy.
Appeared at MSR 2016.
Inferring likely data invariants of distributed systems
Stewart Grant, Sam Creed, Ivan Beschastnikh.
Poster at SOSP 2015.
General LTL Specification Mining
Caroline Lemieux, Dennis Park, Ivan Beschastnikh.
Appeared at ASE 2015.
Synergizing Specification Miners through Model Fissions and Fusions
Tien-Duy B. Le, Xuan-Bach D. Le, David Lo, Ivan Beschastnikh.
Appeared at ASE 2015.
Investigating Program Behavior Using the Texada LTL Specifications Miner
Caroline Lemieux, Ivan Beschastnikh.
Tool demonstration at ASE 2015.
Don't Call Us, We'll Call You: Characterizing Callbacks in JavaScript
Keheliya Gallaba, Ali Mesbah, Ivan Beschastnikh.
Appeared at ESEM 2015.
Best Full Paper Award
Using declarative specification to improve the understanding, extensibility, and comparison of model-inference algorithms
Ivan Beschastnikh, Yuriy Brun, Jenny Abrahamson, Michael D. Ernst, Arvind Krishnamurthy.
IEEE Transactions on Software Engineering (TSE), in press, 21 pages, April 2015.
(Extended version of the ICSE 2013 paper).
Templated Visualization of Object State with Vebugger
Daniel Rozenberg, Ivan Beschastnikh.
Appeared at VISSOFT'14, NIER track.
Behavioral Resource-Aware Model Inference
Tony Ohmann, Michael Herzberg, Sebastian Fiss, Armand Halbert, Marc Palyart, Ivan Beschastnikh, Yuriy Brun.
Appeared at ASE 2014.
Inferring Models of Concurrent Systems from Logs of their Behavior with CSight
Ivan Beschastnikh, Yuriy Brun, Michael D. Ernst, Arvind Krishnamurthy.
Appeared at ICSE 2014.
Shedding Light on Distributed System Executions
Jenny Abrahamson, Ivan Beschastnikh, Yuriy Brun, Michael D. Ernst.
Poster at ICSE 2014.
NetCheck: Network Diagnoses from Blackbox Traces
Yanyan Zhuang, Eleni Gessiou, Steven Portzer, Fraida Fund, Monzur Muhammad, Ivan Beschastnikh, Justin Cappos.
Appeared at NSDI 2014.
Mining Precise Performance-Aware Behavioral Models from Existing Instrumentation
Tony Ohmann, Kevin Thai, Ivan Beschastnikh Yuriy Brun.
Appeared at ICSE 2014, NIER track.
Inferring Models of Concurrent Systems from Logs of their Behavior with CSight
Ivan Beschastnikh, Yuriy Brun, Michael D. Ernst, Arvind Krishnamurthy.
UBC, Department of Computer Science, Technical Report, 2014-02-28.
Unifying FSM-inference Algorithms through Declarative Specification
Ivan Beschastnikh, Yuriy Brun, Jenny Abrahamson, Michael D. Ernst, Arvind Krishnamurthy.
Appeared at ICSE 2013.
(Extended version published as a TSE 2015 journal paper).
Understanding Regression Failures through Test-Passing and Test-Failing Code Changes
Roykrong Sukkerd, Ivan Beschastnikh, Jochen Wuttke, Sai Zhang, Yuriy Brun.
Appeared at ICSE 2013, NIER track.
NetCheck Test Cases: Input Traces and NetCheck Output
Yanyan Zhuang, Ivan Beschastnikh Justin Cappos.
NYU Poly, Department of Computer Science and Engineering, Report TR-CSE-2013-03, 10/29/2013.
Unifying FSM-inference Algorithms through Declarative Specification
Ivan Beschastnikh, Yuriy Brun, Jenny Abrahamson, Michael D. Ernst, Arvind Krishnamurthy.
University of Washington CSE technical report UW-CSE-13-03-01, March 2013.
Effects of Centralized and Distributed Version Control on Commit Granularity
Jochen Wuttke, Ivan Beschastnikh, Yuriy Brun
Published in TinyToCS vol. 1, 2012.
Inferring Networked System Models from Behavior Traces
Ivan Beschastnikh
Appeared at the Student Workshop at CoNEXT 2012.
Sonora: A Platform for Continuous Mobile-Cloud Computing
Fan Yang, Zhengping Qian, Xiuwei Chen, Ivan Beschastnikh, Li Zhuang, Lidong Zhou, Guobin Shen.
Microsoft Research technical report MSR-TR-2012-34, March 2012.
Scalable Consistency in Scatter
Lisa Glendenning, Ivan Beschastnikh, Arvind Krishnamurthy, Tom Anderson.
In proceedings of SOSP 2011.
Leveraging Existing Instrumentation to Automatically Infer Invariant-Constrained Models
Ivan Beschastnikh, Yuriy Brun, Sigurd Schneider, Michael Sloan, Michael D. Ernst.
In proceedings of ESEC/FSE 2011.
Synoptic: Studying Logged Behavior with Inferred Models
Ivan Beschastnikh, Jenny Abrahamson, Yuriy Brun, Michael D. Ernst.
Tool demonstration at ESEC/FSE 2011.
Mining Temporal Invariants from Partially Ordered Logs
Ivan Beschastnikh, Yuriy Brun, Michael D. Ernst, Arvind Krishnamurthy, Tom Anderson.
ACM SIGOPS Operating Systems Review, vol. 45, no. 3, December 2011, pp. 39–46.
Initially appeared at SLAML 2011.
Bandsaw: Log-powered test scenario generation for distributed systems
Ivan Beschastnikh, Yuriy Brun, Michael D. Ernst, Arvind Krishnamurthy, Tom Anderson.
Work in Progress at SOSP 2011.
Retaining Sandbox Containment Despite Bugs in Privileged Memory-Safe Code
Justin Cappos, Armon Dadgar, Jeffrey Rasley, Justin Samuel,
Ivan Beschastnikh, Cosmin Barsan, Arvind Krishnamurthy, Tom Anderson.
In proceedings of the ACM Conference on Computer and Communications Security, CCS 2010.
Synoptic: Summarizing system logs with refinement
Sigurd Schneider, Ivan Beschastnikh, Slava Chernyak, Michael D. Ernst, Yuriy Brun.
Workshop on Managing Systems via Log Analysis and Machine Learning Techniques, SLAML 2010.
Self-Presentation: Structured and semi-structured user profiles
Linda Le, Ivan Beschastnikh, David W. McDonald.
Studying Online Behaviour Workshop at CHI 2010.
MiST: A Platform for Mobile-Cloud Computing in Streams
Fan Yang, Zhengping Qian, Ivan Beschastnikh, Li Zhuang, Mao Yang, Amre Shakimov, Guobin Shen, Lidong Zhou.
Poster at Microsoft Research Mobile + Cloud Summit, Redmond, 2010.
Teaching networking and distributed systems with Seattle: tutorial presentation
Justin Cappos, Ivan Beschastnikh.
Journal of Computing Sciences in Colleges. Volume 25 Issue 5, May 2010.
Teaching networking and distributed systems with Seattle
Justin Cappos, Ivan Beschastnikh.
Journal of Computing Sciences in Colleges. Volume 25 Issue 1, October 2009.
Seattle: The Internet as an Educational Testbed
Justin Cappos, Ivan Beschastnikh, Arvind Krishnamurthy, Tom Anderson.
In proceedings of the ACM Technical Symposium on Computer Science Education, SIGCSE 2009.
Promoting Quality in Wikipedia through Enculturation
Ivan Beschastnikh, David W. McDonald, Mark Zachry, Travis Kriplean, Alan Borning.
Approaching 'Amateur' Workshop at GROUP 2009.
System Design for Social Translucence in Socially Mediating Technologies
David W. McDonald, Ivan Beschastnikh, Travis Kriplean, Alan Borning, Mark Zachry.
Socially Mediating Technologies Workshop at CHI 2009.
Designing Mediating Spaces Between Citizens and Government
Travis Kriplean, Ivan Beschastnikh, Alan Borning, David W. McDonald, Mark Zachry.
Socially Mediating Technologies Workshop at CHI 2009.
SatelliteLab: Adding Heterogeneity to Planetary-Scale Testbeds
Marcel Dischinger, Andreas Haeberlen, Ivan Beschastnikh, Krishna P. Gummadi, Stefan Saroiu.
In proceedings of the 2008 ACM SIGCOMM Conference, SIGCOMM 2008.
Articulations of WikiWork: Uncovering Valued Work in Wikipedia through Barnstars
Travis Kriplean, Ivan Beschastnikh, David W. McDonald.
In proceedings of the 2008 ACM conference on Computer Supported Cooperative Work, CSCW 2008.
Best Paper Honorable Mention
Wikipedian Self-Governance in Action: Motivating the Policy Lens
Ivan Beschastnikh, Travis Kriplean, David W. McDonald.
In proceedings of the 2008 AAAI International Conference on Weblogs and Social Media, ICWSM 2008.
Best Paper Award
Community, Consensus, Coercion, Control: CS*W or How Policy Mediates Mass Participation
Travis Kriplean, Ivan Beschastnikh, David W. McDonald, Scott Golder.
In proceedings of the ACM 2007 International Conference on Supporting Group Work, GROUP 2007.
SatelliteLab: Adding Heterogeneity to Planetary-Scale Testbeds
Andreas Haeberlen, Marcel Dischinger, Ivan Beschastnikh, Krishna Gummadi
Poster at SOSP 2007, Stevenson, WA, USA, October 2007
Building an Infrastructure for Urgent Computing
Pete Beckman, Ivan Beschastnikh, Suman Nadella, Nick Trebon.
Chapter in 'High Performance Computing and Grids in Action' by IOS Press, Amsterdam, 2007
SPRUCE: A System for Supporting Urgent High-Performance Computing
Pete Beckman, Suman Nadella, Nick Trebon, Ivan Beschastnikh
In proceedings of IFIP WoCo9 Conference, 2006.
VFER: High-performance Transport in User Space
Stanislav Shalunov, Ivan Beschastnikh
SuperComputing 2006 Bandwidth Challenge Finalist, November 2006.
SPRUCE: Special Priority and Urgent Computing Environment
Ivan Beschastnikh
Grand Prize winning student research competition poster at TeraGrid 2006.
The Earth Vision Time Machine: A Design for the Collaborative Sharing of Wireless Sensor Data
Pete Beckman, Ivan Beschastnikh, Cameron Cooper, Isaac Wasileski
Workshop on Advanced Collaborative Environments, WACE 2005


Seattle: A Python-based Platform for Easy Development and Deployment of Networked Systems and Applications
Ivan Beschastnikh, Justin Samuel, Justin Cappos,
Presentation at PyCon 2010, Atlanta, GA, February 2010
Teaching networking and distributed systems with Seattle
Ivan Beschastnikh, Justin Cappos,
Tutorial at CCSC Central Plains 2010
Teaching networking and distributed systems with Seattle
Justin Cappos, Ivan Beschastnikh,
Tutorial at CCSC Northwest 2009

Unpublished Material

Liberating Mobile Phones from their Primary Use Case.
Ivan Beschastnikh, Yuan Zhang, Zhengping Qian, Lidong Zhou.
Integration of Static Instruction Analysis with Dynamic Information Flow Tracking.
Ivan Beschastnikh, Ian Post, Joshua Schwartz, Benedict Singer.
Machine Learning for Automatic Physical DBMS Tuning.
Ivan Beschastnikh and Andrew Guillory.


Winter 2017:
Distributed Systems 416. An undergraduate course covering core concepts in distributed systems.

Fall 2016:
Distributed Systems 538B. A graduate course on distributed systems.

Winter 2016:
Distributed Systems 416. An undergraduate course covering core concepts in distributed systems.

Fall 2015:
Computer Networks 527. A graduate course focusing on classic and contemporary networks topics.

Winter 2015:
Distributed Systems 538B. A graduate topics course covering classic papers in distributed systems.

Winter 2014:
Comprehension and Analysis of Large System 538B. A graduate, project-based, topics course covering a broad range of material, from software engineering to distributed systems.

Fall 2013:
Software Construction 210. An undergraduate second-year course.


Students and PostDocs

One of my passions is mentoring and working with students. I find it extremely rewarding to introduce students to research, and to work alongside students on challenging research questions.

Current graduate students:

Current undergraduate students:

Graduate and Postdoc alumni:

  • Peter Chen (MSc 2017)
    • Cross-platform Data Integrity and Confidentiality with Graduated Access Control [pdf]
    • → Arista Networks
  • Keheliya Gallaba (MASc 2015 from ECE, co-supervised with Ali Mesbah)
    • Characterizing and refactoring asynchronous JavaScript callbacks [pdf]
    • → PhD program at McGill U.
  • Michael Phan-Ba (MSc 2015)
    • A literature review of failure detection within the context of solving the problem of distributed consensus [pdf]
  • Daniel Rozenberg (MSc 2015)
    • Qualitative Repository Analysis with RepoGrams [pdf]
    • → Google
  • Wali Usmani (MSc 2017, co-supervised with Konstantin Beznosov)
    • "Not able to resist the urge" : Social Insider Attacks on Facebook [pdf]
    • → TwoTallTotems
  • Yanyan Zhuang (Postdoctoral Fellow, 2016)

Undergraduate UBC alumni:

Undergraduate U. Washington alumni:


Service to my communities

I consider the peer review process a critical component of academic research and help out with reviewing and organizing duties as time allows.

  • General chair:
    • 2017: HotOS (co-chair with Rachit Agarwal)
  • Program chair:
    • 2017: VISSOFT (co-chair with Andrea Mocci)
  • Program committee member:
    • 2016: ICSE, ESEM, ICSE Posters, VISSOFT NIER and Demos
    • 2015: SRDS, ICSE Demos, VISSOFT NIER and Demos
    • 2014: ICSE Posters
    • 2013: SOSP Posters
    • 2012: WikiSym
    • 2011: WikiSym
  • Reviewer:
    • 2017: CHI, EuroSys
    • 2016: TSE, JSEP, JSPE
    • 2015: TSE, Elsevier ASE, ASE
    • 2014: TSE, VLDB, Elsevier IST
    • 2013: TSE, OSR, ASE
    • 2012: TSE, TOOLS
    • 2011: OOPSLA, NCA
    • 2010: SigMetrics
    • 2009: NSDI, WikiSym
  • Doctoral symposium chair: Middleware 2015


I am fortunate to have my research and education efforts supported by the following generous organizations: NSERC, Mitacs, Tasktop, NSF, UBC, Office of the Privacy Commissioner of Canada, Amazon, Peter Wall Institute.