RV Blog: Thoughts on runtime verification and software quality from leaders in the field.

Runtime Verification seeking a Senior Verification Engineer and a Full Stack Software Engineer

Runtime Verification, Inc is looking for two new software engineers to work on our family of products. We are a start-up based in Urbana, Illinois, less than 15 walk minutes away from the Computer Science Department at the University of Illinois in Urbana-Champaign (UIUC), which is in the top 5 schools in Computer Science in the United States and the top 1-2 schools in the domains of software engineering, formal methods and programming languages. We have been working for the past 5 years to develop innovative dynamic analysis tools based on leading research performed at UIUC and in the runtime verification community with the purpose of improving the reliability of safety-critical and mission-critical code. Our products include:

RV-Match

An ISO-compliant compiler for C and C++ capable of detecting a broad range of undefined and unspecified behavior in applications. Its use has discovered bugs in many software projects. It is based on an underlying technology that has the capability to and is desired to extend into a framework that can do language-independent program analysis and verification, in particular to verify safety-critical and security-critical applications, as well as smart contracts written for the blockchain. It is also in theory capable of bounded model checking, test case generation, and more.

RV-Predict

A code instrumentation engine for C/C++ and Java which can be used to detect and debug race-conditions in a variety of software applications, regardless of whether the race condition actually occurs within the execution being instrumented.

RV-Monitor

A runtime-monitoring library for C/C++ and Java which can not only detect when your software system has entered into an undesirable state with a variety of formalisms for defining properties that must not be violated, but which can also take corrective actions to restore the correct state in a manner which can be found to be provably-correct using software verification systems.

If you are interested in working with us, we are looking for people who can fill the following two roles:

Full Stack Software Engineer

Responsibilities

Work in a flexible environment with a very small team of engineers, in which you may be required from time to time to switch focus between several different projects and go outside your area of expertise to develop functionality as needed for the good of our products.

Develop code in Java, C#, and HTML/CSS/JavaScript to design and create the user interface for our family of client-side software analysis tools.

Write and maintain technical documentation for our family of tools, as well as create the visual design of our user interface.

Work with engineers familiar with formal methods techniques in order to develop academic research into a complete product for our users.

You will report directly to the lead software engineer, but we are seeking a candidate who can work relatively independently and demonstrate initiative and the ability to learn technologies as needed to fill gaps in their experience and complete the necessary tasks. A candidate who does well on the job will have strong potential for advancement within the company.

Required Skills

B.S. in Computer Science or equivalent experience.

2+ years industry or graduate-level experience programming in an object-oriented language like C# or Java, and a willingness to learn Java as well as either C# or Visual Basic .NET.

2+ years industry or graduate-level experience developing client-side or web user interfaces from design to deployment.

2+ years industry or graduate-level experience working on HTML/JS/CSS front-end technologies.

Willingness to develop software for both the Windows and Unix/Linux platforms.

Ability to work well with others and work where necessary and under the agreed-upon constraints.

Bonus Skills

Experience with developing cloud software services would be a plus.

Experience with GitHub API or cloud CI testing APIs would be a plus.

Experience writing IDE Plugins would be considered very valuable.

Significant technical writing abilities are strongly desired.

Experience with internationalization of software would be a plus.

Experience with creating dashboards or graphs in HTML/JS/CSS would be considered very valuable.

Candidates with an M.S. or Ph.D. in formal methods or programming languages who can demonstrate their skill at development would be considered very valuable.

Knowledge of static analysis, dynamic analysis, program verification, or other formal tools for analysis of software reliability would be considered very valuable.

Senior Verification Engineer

Responsibilities

Work in a flexible environment with a very small team of engineers, in which you may be required from time to time to switch focus between several different projects.

Develop code in C, C++, Java, OCAML, and a domain-specific programming language (K) which extends the functionality of code designed to detect software reliability issues.

Develop a language-independent tool for formal verification and symbolic execution of programs based on Z3 and technologies developed at the University of Illinois.

Work with formal methods techniques in order to develop tools which provide complete program certification to the user with an easy-to-use interface for people performing interactive deductive program verification.

You will report directly to the lead software engineer, but we are seeking a candidate who can work completely independently and demonstrate initiative and the ability to be completely in charge of our companies push towards providing complete program verification tools. A candidate who does well on the job will have strong potential for advancement within the company.

Required Skills

Ph.D. in formal methods or programming languages or equivalent experience.

5+ years industry or graduate-level experience proving programs correct with deductive program verifiers.

Familiarity with writing code in a functional language like OCAML, and a willingness to learn OCAML if necessary.

2 thoughts on “Runtime Verification seeking a Senior Verification Engineer and a Full Stack Software Engineer”

I was a full stack developer at Amazon during my internship, and I am very familiar with Java, HTML, CSS, and I also used JS at my project. I am willing to dig into deep and study new things since I am very curious. I am interested in C#.