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


  • Modeling and checking of micro-services
  • Debugging/visualizing concurrent systems
  • Using SMT-solvers for resources allocation in distributed systems
  • NFV management in data centers
  • Distributed/private multi-party machine learning
  • Specification mining
  • Physical insider attacks and defenses
  • Managing assertions in large systems code
  • Secure and flexible data management using ARM TrustZone
  • Building formally verified distributed systems
  • Abstractions for disaggregated data centers
  • ... and some others

Ongoing, but further along:

TimeSquared: multi-threaded callstack analysis. (Try it)

Helping developers understand complex multi-threaded systems by capturing callstack/event information (with DINAMITE) and supporting exploration of the captured data through visualization.

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 and TSViz: Visualizing distributed/multi-threaded system logs. (Try ShiViz, Try TSViz)

Concurrent systems generate logs that are complex and unwieldy. ShiViz helps developers understand distributed system logs through visualization. ShiViz visualizes a distributed execution that has been instrumented to record vector clock timestamps (e.g., with distributed clock instrumentation library). 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. TSViz, builds on ShiViz and visualizes multi-threaded logs with vector clocks and physical timestamps.

Repograms: exploring and juxtaposing software repositories.

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. (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

Inferring and Asserting Distributed System Invariants
Stewart Grant, Hendrik Cech, Ivan Beschastnikh.
To appear at ICSE 2018
Tolerating Faults in Disaggregated Datacenters
Amanda Carbonari, Ivan Beschastnikh.
HotNets 2017
Scalable and Fault Tolerant Platform for Distributed Learning on Private Medical Data
Alborz Amir-Khalili, Soheil Kianzad, Rafeef Abugharbieh, Ivan Beschastnikh.
Supporting Microservice Evolution
Adalberto R. Sampaio Junior, Harshavardhan Kadiyala, Bo Hu, John Steinbacher, Antony W. Erwin, Nelson Rosa, Ivan Beschastnikh, Julia Rubin.
ICSME 2017, NIER track.
Refactoring Asynchrony in JavaScript
Keheliya Gallaba, Quinn Hanam, Ali Mesbah, Ivan Beschastnikh.
ICSME 2017
Scalable Constraint-based Virtual Data Center Allocation
Samuel Bayless, Nodir Kodirov, Ivan Beschastnikh, Holger Hoos, Alan Hu.
IJCAI 2017
Accelerating software engineering research adoption with Analysis Bots
Ivan Beschastnikh, Mircea F. Lungu, Yanyan Zhuang.
ICSE 2017, NIER track.
Studying multi-threaded behavior with TSViz
Matheus Nunes, Harjeet Lalh, Ashaya Sharma, Augustine Wong, Svetozar Miucin, Alexandra Fedorova, Ivan Beschastnikh.
ICSE 2017, Tool demonstration.
Characterizing Social Insider Attacks on Facebook
Wali Usmani, Diogo Marques, Ivan Beschastnikh, Konstantin Beznosov, Tiago Guerreiro, Luis Carriço.
CHI 2017
Visually Reasoning about System and Resource Behavior
Tony Ohmann, Ryan Stanley, Ivan Beschastnikh, Yuriy Brun.
ICSE 2016, Tool demonstration.
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.
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.
ASE 2015
Synergizing Specification Miners through Model Fissions and Fusions
Tien-Duy B. Le, Xuan-Bach D. Le, David Lo, Ivan Beschastnikh.
ASE 2015
Investigating Program Behavior Using the Texada LTL Specifications Miner
Caroline Lemieux, Ivan Beschastnikh.
ASE 2015, Tool demonstration.
Don't Call Us, We'll Call You: Characterizing Callbacks in JavaScript
Keheliya Gallaba, Ali Mesbah, Ivan Beschastnikh.
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.
VISSOFT'14, NIER track.
Behavioral Resource-Aware Model Inference
Tony Ohmann, Michael Herzberg, Sebastian Fiss, Armand Halbert, Marc Palyart, Ivan Beschastnikh, Yuriy Brun.
ASE 2014
Inferring Models of Concurrent Systems from Logs of their Behavior with CSight
Ivan Beschastnikh, Yuriy Brun, Michael D. Ernst, Arvind Krishnamurthy.
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.
NSDI 2014
Mining Precise Performance-Aware Behavioral Models from Existing Instrumentation
Tony Ohmann, Kevin Thai, Ivan Beschastnikh Yuriy Brun.
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.
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.
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
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.
SOSP 2011
Leveraging Existing Instrumentation to Automatically Infer Invariant-Constrained Models
Ivan Beschastnikh, Yuriy Brun, Sigurd Schneider, Michael Sloan, Michael D. Ernst.
Synoptic: Studying Logged Behavior with Inferred Models
Ivan Beschastnikh, Jenny Abrahamson, Yuriy Brun, Michael D. Ernst.
ESEC/FSE 2011, Tool demonstration.
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.
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.
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.
Articulations of WikiWork: Uncovering Valued Work in Wikipedia through Barnstars
Travis Kriplean, Ivan Beschastnikh, David W. McDonald.
CSCW 2008
Best Paper Honorable Mention
Wikipedian Self-Governance in Action: Motivating the Policy Lens
Ivan Beschastnikh, Travis Kriplean, David W. McDonald.
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.
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
IFIP WoCo9, 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 2018:
Distributed Systems 416. An undergraduate course covering core concepts in distributed systems.

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

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.



One of my passions is mentoring and working with students on challenging research questions.

Prospective students: please see this page.

Graduate students:

Undergraduate students:

  • Finn Hackett (Directed Studies'18, CPSC 490)
  • Michael Hou (Directed Studies'18)
  • Lise Savard (Directed Studies'18)
  • Syed Umair (Directed Studies'18)
  • Brandon Zhang (SURE'17)


  • Stephen Ye (Visiting PhD student from Beihang University)

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)
  • Steering committee member:
    • VISSOFT : 2017 - present
  • 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:
    • 2018: TSE
    • 2017: CHI, EuroSys, TOSEM
    • 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, Shopify, Huawei, IBM CAS, Mitacs, Tasktop, NSF, UBC, Office of the Privacy Commissioner of Canada, Amazon, Peter Wall Institute.