Research Workflow

Latex Workflow

Here is a list of some useful Latex workflow tips for getting started.

Latex with Word and Vice-Versa

It is sometimes useful to be able to use Latex files in Word, and vice-versa. For example, to utilize a bibtex bibliography within a Word document. There are many tools to facilitate this, but the best ones I've used are:

  • Pandoc: conversion between lots of document formats (including good support for e.g., converting from Latex to Word)
  • Bibtex4Word: allows use of Bibtex bibliographies in Word, have successfully used it with complex bibliographies (hundreds of citations).
  • text2bib: converts from plain text bibliographies (e.g., copied from Word) to Bibtex. Not perfect, but the best service I've found so far. (Note: looks like pandoc may do this too, but I haven't tried it yet.)
  • BibWord: another BibTex-for-Word plugin, have not tried.

Paper / Thesis / Writing / Research Advice and Workflow

General Research Advice in Engineering and CS

At the end of the day, all research work is evaluated by how it is written up. If you write it up poorly, it will be assumed it is poor work. Numerous other authors have created writing and style guides, so below is a list of them. If English is not your first language (or even if it is, as writing can be tough), before giving me a draft, first utilize resources available to you to improve the English. It is incredibly difficult for me to read something that has numerous grammatical mistakes, and I will inevitably either (a) try to fix those mistakes (taking my time away from making technical suggestions), or (b) stop reading in frustration. You should be aware that any reviewer of your papers will do the same. Here are some resources to help, particularly available at Vanderbilt:

How to peer review

Version Control Workflow

Here is a list of some useful version workflow resources and tips. The main tip is: USE VERSION CONTROL (for everything: Latex papers, code, modeling, etc.). It takes a little time to get set up, but saves you countless time in the long run. If you are going to work with our group, you must know how to use version control or learn quickly, otherwise you will not continue working with us, as it's too difficult to collaborate with people who do not know how to use these important tools. Typically, we are using Mercurial on Bitbucket, and for me on Windows, I typically use TortoiseHG. Here are some tutorials:

Embedded Systems Design Tools

Vanderbilt, VUSE, and ISIS Software

Hybrid Systems Verification Tools

There are a large number of verification tools for various classes of hybrid systems. A huge list of verification tools is available at GitHub. The following are recent tools, typically still under active development that we use often:

  • SpaceEx: supports hybrid automata with affine (linear) differential equations, guards, assignments/resets, invariants, etc. and uses primarily a support function encoding. Generally scalable and currently the most stable tool.
  • dReal and dReach: supports nonlinear systems and uses an SMT-encoding
  • Flow*: supports nonlinear systems and uses a Taylor model encoding
  • HyCreate: supports nonlinear systems and uses a hyperbox/hypercube encoding and a technique known as mixed face-lifting
  • C2E2: supports nonlinear systems and uses a simulation-based verification approach by bloating simulation results
  • Passel: supports networks of rectangular hybrid automata and symmetry-reduction methods as well as parameterized verification, using an SMT-encoding
  • HyST: supports translation of hybrid automaton models between tools, as unfortunately almost no current tools (other than SpaceEx) support standardized interchange formats developed for this purpose like HSIF and CIF.

Books and Other Useful References

This is a list of useful resources, particularly for those getting started in hybrid systems and cyber-physical systems.

Virtual Machines and Linux

Typically I use VMWare and Ubuntu 64-bit. It's becoming less common for 32-bit applications to be available for Ubuntu, so 64-bit is generally needed as many applications require it.

Static/Dynamic Analysis Development Workflow

Here is a list of some useful static analysis and dynamic analysis tips and tools, primarily for C development. The main tip is: USE STATIC/DYNAMIC ANALYSIS AND ASSERTIONS.

Hardware Workflow

Here is a list of some useful hardware/software we've been using.

Robots we're using: